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

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.

Pyenv-Einstellungen und Python-Installation

Ich berühre Python auf dem System nicht mit einem Finger. Außerdem werde ich Python, das mit pyenv installiert ist, nicht direkt manipulieren. Verwenden Sie virtualenv für alle Paketinstallationen. Ich denke auch, dass das pyenv-Verzeichnis normalerweise unter "$ HOME" erstellt wird. Es ist nicht einfach, das System unter "$ HOME" zu verwenden, daher wird es hier unter "/ opt" vorbereitet. Daher wird die Arbeit im Zusammenhang mit Pyenv häufig als Wurzel ausgeführt.

Ich brauche vorerst Schwachkopf.

$ sudo apt-get install git

Paketinstallation zum Erstellen von Python

Die folgenden Pakete sind erforderlich, um Python zu erstellen. Installieren Sie sie daher.

C-Compiler usw.

$ sudo apt-get install build-essential

SQLite-Bibliothek für SQLite-Unterstützung usw.

$ sudo apt-get install libsqlite3-dev
$ sudo apt-get install sqlite3
$ sudo apt-get install bzip2 libbz2-dev

Von pip benötigte SSL-Bibliothek

$ sudo apt-get install libssl-dev openssl

Readline-Bibliothek für Readline-Erweiterung erforderlich

$ sudo apt-get install libreadline6 libreadline6-dev

Installation von pyenv selbst und pyenv-virtualenv Plug-In

Ich werde es als root tun.

sudo su
cd /opt
git clone git://github.com/yyuu/pyenv.git pyenv

echo 'export PYENV_ROOT="/opt/pyenv"' >> ~/.bashrc
echo 'if [ -d "${PYENV_ROOT}" ]; then' >> ~/.bashrc
echo '    export PATH=${PYENV_ROOT}/bin:$PATH' >> ~/.bashrc
echo '    eval "$(pyenv init -)"' >> ~/.bashrc
echo 'fi' >> ~/.bashrc

exec $SHELL -l

cd $PYENV_ROOT/plugins
git clone git://github.com/yyuu/pyenv-virtualenv.git

Python 3.4.0 installieren

sudo su
pyenv install 3.4.0

Einfach zu bedienen pyenv

Als Memo.

  pyenv install --list

--Installieren Sie 3.4.0

  pyenv install 3.4.0
  pyenv versions

--Erstellen einer virtuellen Umgebung

  pyenv virtualenv 3.4.0 my-virtual-env-3.4.0
  pyenv virtualenvs
  pyenv activate my-virtual-env-3.4.0
  pyenv uninstall my-virtual-env-3.4.0

Nginx-Installation

Installieren Sie das Paket "python-software-properties", um den Befehl "add-apt-repository" zu verwenden

sudo apt-get install python-software-properties

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.

Anwendung von Gebäudekolbenproben

Anwendungsverzeichnis erstellen

Erstellen Sie ein Anwendungsverzeichnis. Alle anwendungsbezogenen Dateien werden hier gespeichert. _ * Die virtualenv-Umgebung wird jedoch gemeinsam von pyenv unter / opt verwaltet. _

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/

Erstellen einer virtuellen Umgebung für die Beispielanwendung

sudo -s
pyenv virtualenv 3.4.0 demoapp

Kolbeninstallation

Installieren Sie Flask in virtualenv

sudo -s
pyenv activate demoapp
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

pyenv activate demoapp
python /var/www/demoapp/hello.py

Überprüfen Sie dies, indem Sie mit einem Webbrowser eine Verbindung zum Server-Port 8080 herstellen.

uWSGI-Installation

Erstellen einer virtuellen Umgebung für uWSGI

Ich denke, dass uWSGI von mehreren Anwendungen gemeinsam genutzt wird Bereiten Sie es getrennt von der virtuellen Umgebung für die Anwendung vor.

Wenn Sie die virtuelle Demo-Anwendung für Ihre Anwendung aktiviert haben, deaktivieren Sie sie.

deactivate

virtualenv für uWSGI

sudo -s
pyenv virtualenv 3.4.0 uwsgi-3.4.0

uWSGI-Installation

sudo -s
pyenv activate uwsgi-3.4.0
pip install uwsgi

Nginx-Einstellungen

Entfernen Sie die Standardeinstellungen für die Site

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;
    }
}

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

sudo ln -s /var/www/demoapp/demoapp_nginx.conf /etc/nginx/conf.d/

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 sollte der Fehler "502 Bad Gateway" angezeigt werden. ** **.

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
home = /opt/pyenv/versions/demoapp

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

pyenv activate uwsgi-3.4.0
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.

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/pyenv/versions/uwsgi-3.4.0/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 pyenv unter Ubuntu 12.04 schnell eine Ausführungsumgebung für Python3.4 + Nginx + uWSGI + Flask-Webanwendungen
Erstellen Sie mit venv unter Ubuntu 14.04 LTS schnell eine Ausführungsumgebung für Python3.4 + Nginx + uWSGI + Flask-Webanwendungen
[Pyenv] Erstellen einer Python-Umgebung mit Ubuntu 16.04
Erstellen Sie mit Docker eine Python + uWSGI + Nginx-Umgebung
Webanwendung mit Python + Flask (unter Verwendung von VScode) # 1 - Aufbau einer virtuellen Umgebung-
Erstellen Sie eine Python-Umgebung mit pyenv auf EC2 (Ubuntu)
Erstellen Sie mit Docker eine Umgebung aus Nginx + uWSGI + Python (Django)
[Venv] Erstellen Sie eine virtuelle Python-Umgebung unter Ubuntu
Erstellen Sie eine Python3-Umgebung mit pyenv auf einem Mac und zeigen Sie NetworkX-Diagramme an
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 Python-Entwicklungsumgebung mit pyenv unter MacOS
Erstellen Sie eine Django-Umgebung mit Docker-Compose (MariaDB + Nginx + uWSGI).
Webanwendung mit Python + Flask ② ③
Webanwendung mit Python + Flask ④
So stellen Sie pyenv unter Amazon Linux und Ubuntu ein, um eine Python 3.6.0-Umgebung zu erstellen
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
So erstellen Sie eine Python-Umgebung mit Virtualenv unter Ubuntu 18.04 LTS
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
[Ubuntu 18.04] Erstellen Sie eine Python-Umgebung mit pyenv + pipenv
Erstellen Sie eine Python-Umgebung auf Ihrem Mac
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
[Python] Erstellen Sie eine Stapelumgebung mit AWS-CDK
[Python] Eine schnelle Webanwendung mit Bottle!
Erstellen Sie eine einfache Web-App mit Flasche
Führen Sie eine Python-Webanwendung mit Docker aus
Erstellen Sie mit pyenv eine virtuelle Umgebung für Python
Erstellen Sie einen Webdienst mit Docker + Flask
Vorgehensweise zum Erstellen einer virtuellen Python-Umgebung mit VS-Code unter Windows
[GCP] Verfahren zum Erstellen einer Webanwendung mit Cloud-Funktionen (Python + Flask)
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 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
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.
Erstellen Sie einfach eine Python-Konsolenanwendung mit Click
Verwenden der Flasche mit Nginx + Gunicorn-Konfiguration [Lokale Umgebung]
Erstellen Sie eine Python-Ausführungsumgebung mit VS-Code