Erstellen Sie mit venv unter Ubuntu 14.04 LTS schnell eine Ausführungsumgebung für Python3.4 + Nginx + uWSGI + Flask-Webanwendungen

Erstellen Sie mit pyenv unter Ubuntu 12.04 schnell eine Ausführungsumgebung für Python3.4 + Nginx + uWSGI + Flask-Webanwendungen http://qiita.com/5t111111/items/e170fead91261621b054

In dieser Version 14.04 wird die pyenv-Abhängigkeit gestoppt und nur venv verwendet.

Charakter

--ICH Ein gewöhnlicher Gymnasiast, der eine private Highschool besucht, die bis letztes Jahr eine Mädchenschule war. Ich hasse Menschen. Danach wird es nicht mehr angezeigt.

Nginx-Installation

Stabiles Nginx-Repository hinzugefügt

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

Übliches Update / Upgrade

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

Installieren und starten Sie Nginx

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

Stellen Sie eine Verbindung mit Ihrem Browser her und stellen Sie sicher, dass die Nginx-Begrüßungsseite angezeigt wird.

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

Anwendung von Gebäudekolbenproben

Anwendungsverzeichnis erstellen

Erstellen Sie ein Anwendungsverzeichnis. Alle anwendungsbezogenen Dateien, einschließlich der virtuellen Umgebung von venv, werden in dieser Datei gespeichert.

$ sudo mkdir -p /var/www/demoapp

Wenn die Benutzerberechtigung root bleibt, ändern Sie sie in den Benutzer, den Sie verwenden

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

Venv für die Beispielanwendung erstellen

Leider scheint das Erstellen von venv mit Python 3.4 derzeit nicht zu funktionieren. http://qiita.com/5t111111/items/1643ba04104e75589ad4

Sie müssen also ein venv mit der Option "--without-pip" erstellen und dann pip manuell installieren.

$ 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

Kolbeninstallation

Venv aktivieren

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

Kolbeninstallation

$ pip install flask

Erstellen einer Flask-Anwendung

Erstellen Sie / 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)

Starttest der Kolbenanwendung

Mit aktiviertem venv.

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

Überprüfen Sie dies, indem Sie mit einem Webbrowser eine Verbindung zum Server-Port 8080 herstellen. スクリーンショット 2014-04-19 23.55.19.png

Nginx-Einstellungen

Standard-Site-Einstellungen (von symbolischen Links) entfernt

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

Erstellen Sie eine Konfigurationsdatei für die Beispielanwendung

Erstellen Sie / 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;
    }
}

Der uWSGI-Server kommuniziert mit dem Webserver Nginx über einen UNIX-Socket oder TCP. Die obigen Einstellungen geben die Kommunikation mit einem UNIX-Socket an. uwsgi_pass unix:/var/www/demoapp/demoapp_uwsgi.sock;

Fügen Sie einen symbolischen Link in das Verzeichnis der Nginx-Konfigurationsdatei ein

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

Starten Sie Nginx neu

$ sudo /etc/init.d/nginx restart

Stellen Sie mit einem Webbrowser eine Verbindung zum Server her und überprüfen Sie. ** Zu diesem Zeitpunkt ist der uWSGI-Server noch nicht gestartet, daher sollte der Fehler "502 Bad Gateway" wie folgt angezeigt werden. ** ** ** スクリーンショット 2014-04-20 0.26.56.png

uWSGI-Installation

Aufbau einer venv-Umgebung für uWSGI

uWSGI kann auch über apt installiert werden. Da die Version jedoch etwas alt ist, installieren Sie die neueste Version mit pip.

Ich denke, dass uWSGI in Zukunft von mehreren Anwendungen gemeinsam genutzt wird, daher werde ich es separat vorbereiten, anstatt es in venv für die Anwendung zu installieren. Da ich jedoch nicht mit der Python-Umgebung des Systems spielen möchte, verwende ich hier auch venv unter / opt und uWSGI Erstellen Sie eine Umgebung für.

Wenn Sie demoapp venv für Ihre Anwendung aktiviert haben, deaktivieren Sie es.

$ deactivate

Installation von Paketen, die zum Erstellen von uWSGI erforderlich sind

Sie benötigen Folgendes, installieren Sie es also.

--C Compiler

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

Erstellen Sie venv für uWSGI

Da es unter / opt erstellt wurde, arbeiten Sie als root. Wenn Sie jedoch betroffen sind, können Sie einen anderen Speicherort oder eine andere Berechtigung ändern. In diesem Fall muss der Pfad der uWSGI-Binärdatei mit den folgenden Einstellungen geändert werden.

Wie beim venv für die Anwendung funktioniert die übliche Methode nicht. Installieren Sie pip daher manuell. (Problematisch ...) Im Folgenden wird die Vorgehensweise unter der Annahme beschrieben, dass die Quelle beim Erstellen von venv für die Anwendung erhalten bleibt.

$ 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

uWSGI-Installation

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

uWSGI-Einstellungen

Erstellen Sie eine uWSGI-Konfigurationsdatei für Ihre Anwendung

Erstellen Sie / 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

Erstellen eines Protokollausgabe-Zielverzeichnisses

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

Starten Sie uWSGI

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

Stellen Sie mit einem Webbrowser eine Verbindung zum Server her und überprüfen Sie. Wenn Nginx und uWSGI problemlos mit dem Socket kommunizieren können, wird "Hallo Welt!" Angezeigt. スクリーンショット 2014-04-20 11.05.01.png

uWSGI Emperor

uWSGI Emperor ist eine Funktion, die die uWSGI-Konfigurationsdatei liest und den uWSGI-Prozess startet. Es können mehrere Einstellungen gelesen und der Prozessstart gemeinsam verwaltet werden.

Erstellen einer Upstart-Datei

Erstellen Sie / 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

Die letzte Zeile oben bedeutet, nach der Konfigurationsdatei zu suchen, die in / etc / uwsgi / vassals vorhanden ist, und den uWSGI-Daemon zu starten Erstellen Sie einen symbolischen Link zur uWSGI-Installationsdatei der Beispielanwendung in "/ etc / uwsgi / vassals".

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

Berechtigungseinstellungen

Der uWSGI-Dämon wird so eingestellt, dass er als Benutzer "www-data" startet. Behalten Sie daher den Eigentümer der Anwendungs- und Protokollverzeichnisse als "www-data".

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

Da Nginx und uWSGI mit demselben Benutzer "www-data" arbeiten, ändern Sie die Socket-Berechtigung in 644.

Bearbeiten Sie / var / www / demoapp / demoapp_uwsgi.ini

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

Starten Sie uWSGI

$ sudo start uwsgi

Stellen Sie mit einem Webbrowser eine Verbindung zum Server her und überprüfen Sie. Wenn bis jetzt alles in Ordnung ist, wird "Hallo Welt!" Angezeigt.

Am Ende

Jetzt können Sie die Flask-Anwendung ausführen. Ich denke, es gibt verschiedene Punkte, die beachtet werden müssen. Insbesondere in der Umgebung von Nginx und uWSGI drücken Sie bitte die Einstellungen in den jeweiligen Dokumenten und Google-Dateien aus.

Referenz

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

Recommended Posts

Erstellen Sie mit venv unter Ubuntu 14.04 LTS schnell eine Ausführungsumgebung für Python3.4 + Nginx + uWSGI + Flask-Webanwendungen
Erstellen Sie mit pyenv unter Ubuntu 12.04 schnell eine Ausführungsumgebung für Python3.4 + Nginx + uWSGI + Flask-Webanwendungen
[Venv] Erstellen Sie eine virtuelle Python-Umgebung unter Ubuntu
Webanwendung mit Python + Flask (unter Verwendung von VScode) # 1 - Aufbau einer virtuellen Umgebung-
So erstellen Sie eine Python-Umgebung mit Virtualenv unter Ubuntu 18.04 LTS
Erstellen Sie mit Docker eine Python + uWSGI + Nginx-Umgebung
Erstellen Sie mit Docker eine Umgebung aus Nginx + uWSGI + Python (Django)
Erstellen Sie eine Python-Ausführungsumgebung unter IBM i
Ich habe eine Python3-Umgebung unter Ubuntu mit direnv erstellt.
Starten Sie mit Docker eine Python-Webanwendung auf Nginx + Gunicorn
Erstellen Sie eine Django-Umgebung mit Docker-Compose (MariaDB + Nginx + uWSGI).
Webanwendung mit Python + Flask ② ③
Webanwendung mit Python + Flask ④
Erstellen einer Webanwendung mit Flask ②
Erstellen einer Python-Umgebung unter Ubuntu
Erstellen Sie eine Python-Umgebung auf dem Mac (2017/4)
Erstellen Sie eine virtuelle Umgebung mit Python!
Erstellen Sie eine Python-Umgebung in Centos
Erstellen einer Webanwendung mit Flask ①
Erstellen einer Webanwendung mit Flask ③
Erstellen einer Webanwendung mit Flask ④
Erstellen Sie eine Windows Python-Ausführungsumgebung mit VScode + Remote WSL
Erstellen Sie mit Chalice eine flaschen- / flaschenähnliche Webanwendung auf AWS Lambda
Erstellen Sie eine Python-Ausführungsumgebung mithilfe der GPU mit der GCP Compute Engine
Erstellen Sie ein USB-Boot-Ubuntu mit einer Python-Umgebung für die Datenanalyse
[Pyenv] Erstellen einer Python-Umgebung mit Ubuntu 16.04
Erstellen Sie eine Python-Umgebung auf Ihrem Mac
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
[Python] Erstellen Sie eine Stapelumgebung mit AWS-CDK
Vorgehensweise zum Erstellen einer virtuellen Python-Umgebung mit VS-Code unter Windows
Wenn Pyplot mit Macosx-Backends in einer mit virtualenv erstellten virtuellen Umgebung verwendet wird, ist es besser, eine Umgebung mit Laufzeitfehler => venv zu erstellen.
[Python] Eine schnelle Webanwendung mit Bottle!
Erstellen Sie eine einfache Web-App mit Flasche
[GCP] Verfahren zum Erstellen einer Webanwendung mit Cloud-Funktionen (Python + Flask)
Führen Sie eine Python-Webanwendung mit Docker aus
Erstellen Sie einen Webdienst mit Docker + Flask
Erstellen Sie eine Python3-Umgebung mit pyenv auf einem Mac und zeigen Sie NetworkX-Diagramme an
Ich möchte eine Webanwendung mit React und Python Flask erstellen
Implementieren Sie eine einfache Anwendung mit Python Full Scratch ohne Verwendung eines Webframeworks.
Erstellen Sie eine Anwendung, die Formulare mithilfe von Python / Flask anstelle von DB eingibt, anzeigt und löscht.
Kurs zur Erstellung von Webanwendungen, der mit Flask of Python Teil 2 Kapitel 1 ~ JSON-Austausch ~ gelernt wurde
[Python] So erstellen Sie eine lokale Webserverumgebung mit SimpleHTTPServer und CGIHTTPServer
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
Erstellen Sie eine Python-Umgebung mit pyenv auf EC2 (Ubuntu)
Erstellen Sie die Python3.5 + matplotlib-Umgebung unter Ubuntu 12 mit Anaconda
Erstellen Sie einfach eine Python 3-Ausführungsumgebung unter Windows
Erstellen Sie eine Python-Umgebung mit ansible auf centos6
Gewinnen Sie die Python + Flask-Web-App mit Jenkins
Erstellen Sie eine virtuelle Umgebung mit conda in Python
Erstellen Sie mit Sublime Text3 eine Python3-Build-Umgebung
Hallo Welt mit Nginx + Uwsgi + Python auf EC2
Führen Sie Python-Webanwendungen mit NGINX + NGINX Unit + Flask aus
Erstellen Sie eine Webmap mit Python und GDAL
Starten Sie einen Webserver mit Python und Flask
Führen Sie Flask unter CentOS mit Python3.4, Gunicorn + Nginx aus.