Créez rapidement un environnement d'exécution d'application Web Python3.4 + Nginx + uWSGI + Flask en utilisant venv sur Ubuntu 14.04 LTS

Créez rapidement un environnement d'exécution d'application Web Python3.4 + Nginx + uWSGI + Flask en utilisant pyenv sur Ubuntu 12.04 http://qiita.com/5t111111/items/e170fead91261621b054

Dans cette version 14.04, la dépendance pyenv est arrêtée et seul venv est utilisé.

Personnage

--JE Un lycéen ordinaire qui fréquente un lycée privé qui était une école de filles jusqu'à l'année dernière. Je déteste les humains. Il n'apparaîtra plus après cela.

Installation de Nginx

Ajout du référentiel stable Nginx

$ sudo add-apt-repository ppa:nginx/stable

Mise à jour / mise à niveau habituelle

$ sudo apt-get update
$ sudo apt-get upgrade

Installez et lancez Nginx

$ sudo apt-get install nginx
$ sudo /etc/init.d/nginx start

Connectez-vous à votre navigateur et vérifiez que la page d'accueil Nginx est affichée.

スクリーンショット 2014-04-19 23.55.07.png

application d'échantillon de flacon de construction

Créer un répertoire d'applications

Créez un répertoire d'applications. Tous les fichiers liés à l'application, y compris l'environnement virtuel venv, y sont stockés.

$ sudo mkdir -p /var/www/demoapp

Si l'autorité utilisateur reste root, remplacez-la par l'utilisateur que vous utilisez

$ sudo chown -R username:username /var/www/demoapp/

Création de venv pour un exemple d'application

Malheureusement, il semble que la création de venv avec Python 3.4 ne fonctionne pas pour le moment. http://qiita.com/5t111111/items/1643ba04104e75589ad4

Vous devez donc créer un venv avec l'option --without-pip, puis installer pip manuellement.

$ pyvenv-3.4 --without-pip /var/www/demoapp/venv
$ source /var/www/demoapp/venv/bin/activate
$ mkdir ~/src
$ cd ~/src
$ curl -O https://pypi.python.org/packages/source/s/setuptools/setuptools-3.4.4.tar.gz
$ tar xvfz setuptools-3.4.4.tar.gz
$ cd setuptools-3.4.4/
$ python setup.py install
$ cd ..
$ curl -O https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz
$ tar xvfz pip-1.5.4.tar.gz
$ cd pip-1.5.4/
$ python setup.py install

Installation du flacon

Activer venv

$ source /var/www/demoapp/venv/bin/activate

Installation du flacon

$ pip install flask

Créer une application Flask

Créez / var / www / demoapp / hello.py.

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=8080)

test de démarrage de l'application flask

Avec venv activé.

$ python /var/www/demoapp/hello.py

Vérifiez en vous connectant au port du serveur: 8080 avec un navigateur Web. スクリーンショット 2014-04-19 23.55.19.png

Paramètres Nginx

Suppression des paramètres de site par défaut (de, liens symboliques)

$ sudo rm /etc/nginx/sites-enabled/default

Créer un fichier de configuration pour l'exemple d'application

Créez / var / www / demoapp / demoapp_nginx.conf

server {
    listen      80;
    server_name localhost;
    charset     utf-8;
    client_max_body_size 75M;

    location / { try_files $uri @yourapplication; }
    location @yourapplication {
        include uwsgi_params;
        uwsgi_pass unix:/var/www/demoapp/demoapp_uwsgi.sock;
    }
}

Le serveur uWSGI communique avec le serveur Web Nginx via un socket UNIX ou TCP. Les paramètres ci-dessus spécifient la communication avec un socket UNIX. uwsgi_pass unix:/var/www/demoapp/demoapp_uwsgi.sock;

Mettre un lien symbolique dans le répertoire du fichier de configuration Nginx

$ sudo ln -s /var/www/demoapp/demoapp_nginx.conf /etc/nginx/sites-enabled/

Redémarrez Nginx

$ sudo /etc/init.d/nginx restart

Connectez-vous au serveur avec un navigateur Web et vérifiez. ** À ce stade, le serveur uWSGI n'est pas démarré, vous devriez donc obtenir une erreur "502 Bad Gateway" comme celle-ci. ** ** スクリーンショット 2014-04-20 0.26.56.png

Installation de uWSGI

Créer un environnement venv pour uWSGI

uWSGI peut également être installé à partir d'apt, mais comme la version est un peu ancienne, installez la dernière avec pip.

Je pense que uWSGI sera partagé par plusieurs applications à l'avenir, donc je vais le préparer séparément au lieu de l'installer dans venv pour l'application, mais comme je ne veux pas jouer avec l'environnement Python du système, ici j'utilise aussi venv sous / opt et uWSGI Créez un environnement pour.

Si vous avez activé demoapp venv pour votre application, désactivez-le.

$ deactivate

Installation des packages requis pour construire uWSGI

Vous aurez besoin de ce qui suit, alors installez-le.

--C compilateur

$ sudo apt-get install build-essential python3-dev

Créer un venv pour uWSGI

Comme il est créé sous / opt, le travail est effectué en tant que root, mais si vous êtes concerné, vous pouvez changer un autre emplacement ou une autre autorité. Dans ce cas, il est nécessaire de modifier le chemin du binaire uWSGI avec les paramètres suivants.

Comme avec le venv pour l'application, la méthode habituelle ne fonctionne pas, alors installez pip manuellement. (Gênant ...) Ce qui suit décrit la procédure en supposant que la source lors de la création de venv pour l'application reste.

$ sudo -s
# pyvenv-3.4 --without-pip /opt/venv/uwsgi
# source /opt/venv/uwsgi/bin/activate
# cd ~/src
# cd setuptools-3.4.4/
# python setup.py install
# cd ..
# cd pip-1.5.4/
# python setup.py install

Installation de uWSGI

$ source /opt/venv/uwsgi/bin/activate
$ pip install uwsgi

Paramètres uWSGI

Créez un fichier de configuration uWSGI pour votre application

Créez / var / www / demoapp / demoapp_uwsgi.ini

[uwsgi]
#application's base folder
base = /var/www/demoapp

#python module to import
app = hello
module = %(app)

#virtualenv folder
virtualenv = /var/www/demoapp/venv

pythonpath = %(base)

#socket file's location
socket = /var/www/demoapp/%n.sock

#permissions for the socket file
chmod-socket    = 666

#the variable that holds a flask application inside the module imported at line #6
callable = app

#location of log files
logto = /var/log/uwsgi/%n.log

Création d'un répertoire de destination de sortie de journal

$ sudo mkdir -p /var/log/uwsgi
$ sudo chown -R username:username /var/log/uwsgi

Démarrez uWSGI

$ uwsgi --ini /var/www/demoapp/demoapp_uwsgi.ini

Connectez-vous au serveur avec un navigateur Web et vérifiez. Si Nginx et uWSGI sont capables de communiquer avec le socket sans aucun problème, «Hello World!» S'affiche. スクリーンショット 2014-04-20 11.05.01.png

uWSGI Emperor

uWSGI Emperor est une fonction qui lit le fichier de configuration uWSGI et démarre le processus uWSGI. Plusieurs paramètres peuvent être lus et le démarrage du processus peut être géré collectivement.

Créer un fichier Upstart

Créez / etc / init / uwsgi.conf

description "uWSGI"
start on runlevel [2345]
stop on runlevel [06]
respawn

env UWSGI=/opt/venv/uwsgi/bin/uwsgi
env LOGTO=/var/log/uwsgi/emperor.log

exec $UWSGI --master --emperor /etc/uwsgi/vassals --die-on-term --uid www-data --gid www-data --logto $LOGTO

La dernière ligne ci-dessus signifie rechercher le fichier de configuration qui existe dans / etc / uwsgi / vassals et démarrer le démon uWSGI, donc Créez un lien symbolique vers le fichier d'installation uWSGI de l'exemple d'application dans / etc / uwsgi / vassals.

$ sudo mkdir -p /etc/uwsgi/vassals
$ sudo ln -s /var/www/demoapp/demoapp_uwsgi.ini /etc/uwsgi/vassals

Paramètres d'autorisation

Le démon uWSGI est configuré pour démarrer en tant qu'utilisateur www-data. Par conséquent, gardez le propriétaire de l'application et enregistrez les répertoires en tant que «www-data».

$ sudo chown -R www-data:www-data /var/www/demoapp/
$ sudo chown -R www-data:www-data /var/log/uwsgi/

Puisque Nginx et uWSGI fonctionnent avec le même utilisateur www-data, modifiez l'autorisation de socket sur 644.

Modifier / var / www / demoapp / demoapp_uwsgi.ini

...
#permissions for the socket file
chmod-socket = 644

Démarrez uWSGI

$ sudo start uwsgi

Connectez-vous au serveur avec un navigateur Web et vérifiez. Si tout va bien jusqu'à présent, "Hello World!" Sera affiché.

À la fin

Vous pouvez maintenant exécuter l'application Flask. Je pense qu'il y a plusieurs points à prendre en compte. Surtout autour de Nginx et uWSGI, veuillez presser les paramètres dans leurs documents et googles respectifs.

référence

http://vladikk.com/2013/09/12/serving-flask-with-nginx-on-ubuntu/

Recommended Posts

Créez rapidement un environnement d'exécution d'application Web Python3.4 + Nginx + uWSGI + Flask en utilisant venv sur Ubuntu 14.04 LTS
Créez rapidement un environnement d'exécution d'application Web Python3.4 + Nginx + uWSGI + Flask en utilisant pyenv sur Ubuntu 12.04
[Venv] Créer un environnement virtuel python sur Ubuntu
Application Web réalisée avec Python + Flask (en utilisant VScode) # 1-Construction d'environnement virtuel-
Comment créer un environnement Python à l'aide de Virtualenv sur Ubuntu 18.04 LTS
Créer un environnement Python + uWSGI + Nginx avec Docker
Créer un environnement de Nginx + uWSGI + Python (Django) avec docker
Créer un environnement d'exécution Python sur IBM i
J'ai créé un environnement Python3 sur Ubuntu avec direnv.
Lancer une application Web Python sur Nginx + Gunicorn avec Docker
Créer un environnement django avec docker-compose (MariaDB + Nginx + uWSGI)
Application Web avec Python + Flask ② ③
Application Web avec Python + Flask ④
Créer une application Web avec Flask ②
Construire un environnement Python sur Ubuntu
Créer un environnement Python sur Mac (2017/4)
Créez un environnement virtuel avec Python!
Créer un environnement python dans centos
Créer une application Web avec Flask ①
Créer une application Web avec Flask ③
Créer une application Web avec Flask ④
Créer un environnement d'exécution Windows Python avec VScode + Remote WSL
Créer une application Web de type Flask / Bottle sur AWS Lambda avec Chalice
Créez un environnement d'exécution Python à l'aide de GPU avec GCP Compute Engine
Créer un Ubuntu de démarrage USB avec un environnement Python pour l'analyse des données
[Pyenv] Construire un environnement python avec ubuntu 16.04
Créez un environnement python sur votre Mac
[Python] Créez un environnement virtuel avec Anaconda
[Python] Créer un environnement Batch à l'aide d'AWS-CDK
Procédure de création d'un environnement virtuel Python avec VS Code sous Windows
Lorsque pyplot est utilisé avec des backends macosx sur un environnement virtuel créé avec virtualenv, il est préférable de créer un environnement avec une erreur d'exécution => venv.
[Python] Une application web rapide avec Bottle!
Créez une application Web simple avec Flask
[GCP] Procédure de création d'une application Web avec Cloud Functions (Python + Flask)
Exécutez une application Web Python avec Docker
Créer un service Web avec Docker + Flask
Créez un environnement Python 3 avec pyenv sur Mac et affichez des graphiques Network X
Je souhaite créer une application Web en utilisant React et Python flask
Implémentez une application simple avec Python full scratch sans utiliser de framework web.
Créez une application qui saisit, affiche et supprime des formulaires à l'aide de Python / Flask au lieu de DB.
Cours de production d'applications Web appris avec Flask of Python Partie 2 Chapitre 1 ~ Échange JSON ~
[Python] Comment créer un environnement de serveur Web local avec SimpleHTTPServer et CGIHTTPServer
Préparer l'environnement d'exécution de Python3 avec Docker
Créer un environnement python avec pyenv sur EC2 (ubuntu)
Construire l'environnement Python3.5 + matplotlib sur Ubuntu 12 en utilisant Anaconda
Créez simplement un environnement d'exécution Python 3 sous Windows
Créez un environnement python avec ansible sur centos6
Gagnez l'application Web Python + Flask avec Jenkins
Créer un environnement virtuel avec conda avec Python
Créer un environnement de construction python3 avec Sublime Text3
Hello World avec nginx + uwsgi + python sur EC2
Exécutez des applications Web Python avec NGINX + NGINX Unit + Flask
Créer une carte Web en utilisant Python et GDAL
Lancer un serveur Web avec Python et Flask
Exécutez Flask sur CentOS avec python3.4, Gunicorn + Nginx.