--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.
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
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
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
sudo su
pyenv install 3.4.0
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
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.
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/
sudo -s
pyenv virtualenv 3.4.0 demoapp
Installieren Sie Flask in virtualenv
sudo -s
pyenv activate demoapp
pip install flask
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)
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.
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
sudo -s
pyenv activate uwsgi-3.4.0
pip install uwsgi
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. ** **.
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
sudo mkdir -p /var/log/uwsgi
sudo chown -R username:username /var/log/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 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
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
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.
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.
http://vladikk.com/2013/09/12/serving-flask-with-nginx-on-ubuntu/
Recommended Posts