Fortsetzung von Installation
Eine grobe Beschreibung und Installation jeder Anwendung Siehe Vorheriger Artikel
flask_web_application/
├── application/
│ ├── __init__.py
│ └── views.py
└── server.py
Erstellen Sie zunächst den Hauptteil von Flask mit dem Namen app
__init__.py
from flask import Flask
app = Flask(__name__)
import application.views
Nach dem Zugriff auf das Stammverzeichnis Gib einfach "Hallo Welt" zurück.
views.py
from application import app
@app.route('/')
def show_entries():
return "Hello World"
Von uWSGI ausgeführte Dateien Der Prozess beginnt hier
server.py
from application import app
if __name__ == "__main__":
app.run(host='0.0.0.0')
Dieses Mal habe ich es übrigens in / home / ubuntu / application / </ code> geschafft
Für andere Verzeichnisse
Übergeben Sie die Berechtigung mit chown an den Benutzer, der uWSGI ausführt
Stellen Sie die Berechtigung mit chmod auf ungefähr "775" ein
Ich werde später erklären, aber diesmal uWSGI
Gruppenname: www-data Benutzername: www-Daten
Laufen weiter
Es wird nur beim Start gelesen, damit Sie es überall platzieren können Diesmal leicht verständliche Kolbenanwendung gemacht Legen Sie es direkt unter
uwsgi.ini
[uwsgi]
base = /home/ubuntu/application/flask_web_application
module = server:app
virtualenv = /home/ubuntu/py36_flask_server
pythonpath = %(base)
callable = app
uid = www-data
gid = www-data
master = true
processes = 1
threads = 1
socket = /tmp/uwsgi.sock
chmod-socket = 666
vacuum = true
die-on-term = true
thunder-lock = true
Nur der Hauptteil
Variable | Erläuterung |
---|---|
base | Anwendungsverzeichnis |
module | app = Flask(__name__)Die App gemacht in |
virtualenv | Python-Verzeichnis für virtuelle Umgebungen |
pythonpath | Gleich wie Basis |
callable | Modul zum Aufrufen(app) |
uid | Wird mit dem Benutzernamen ausgeführt |
gid | Wird nach Gruppennamen ausgeführt |
processes | Die Anzahl der Kerne wird je nach Umgebung und Anwendung empfohlen |
threads | FlaskDie Anzahl der von Flask verwendeten Threads und das Ausführen von Flask in mehreren Threads wird nicht empfohlen.(GIL-Problem) |
socket | UNIX-Domain-Socket |
Erstellen Sie im Voraus den von uid und gid angegebenen Benutzernamen und Gruppennamen. www-Daten sollten bereits vorhanden sein Wenn Sie es nicht angeben, wird es als root ausgeführt, sodass es für die Sicherheit nicht sehr gut ist
Verschiedene Artikel, die hilfreich sein werden https://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html https://qiita.com/yasunori/items/64606e63b36b396cf695 https://qiita.com/wapa5pow/items/f4326aed6c0b63617ebd https://qiita.com/11ohina017/items/da2ae5b039257752e558
$ sudo vi /etc/systemd/system/uwsgi.service
#Fügen Sie Folgendes hinzu
[Unit]
Description=uWSGI
After=syslog.target
[Service]
ExecStart=/home/ubuntu/py36_flask_server/bin/uwsgi --ini /home/ubuntu/application/flask_web_application/uwsgi.ini
# Requires systemd version 211 or newer
RuntimeDirectory=uwsgi
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all
[Install]
WantedBy=multi-user.target
Führen Sie uWSGI aus, das in der virtuellen Umgebung in ExecStart installiert ist Geben Sie die zuvor in --ini erstellte Einstellungsdatei an
Fügen Sie uWSGI zum Service hinzu
$ sudo systemctl enable uwsgi
Löschen Sie conf.d / default.conf, falls vorhanden
$ sudo rm /etc/nginx/conf.d/default.conf
Entfernen Sie / nginx / sites-enabled / default, falls vorhanden
$ sudo rm /etc/nginx/sites-enabled/default
Dadurch wird die Standardwebsite ausgeblendet
Erstellen Sie verfügbare und aktivierte Sites, wenn diese nicht vorhanden sind
$ sudo mkdir /etc/nginx/sites-available
$ sudo mkdir /etc/nginx/sites-enabled
Diesmal verwende ich jedoch nicht mehrere Domains separat Aufgrund der Struktur von Ubuntu + Nginx + uWSGI Stabiler als mit conf.d.
Wie benutzt man
Sehr einfache Sache Symbolische Links sind sogenannte Verknüpfungen
Im http-Blockteil von /etc/nginx/nginx.conf Schreiben Sie /etc/nginx/conf.d/*.conf neu
$ sudo vi /etc/nginx/nginx.conf
http{
…
include /etc/nginx/conf.d/*.conf;
}
↓
http{
…
include /etc/nginx/sites-enabled/*;
}
Hinzugefügt /etc/nginx/sites-available/myapplication.conf
$ sudo vi /etc/nginx/sites-available/myapplication.conf
#Fügen Sie Folgendes hinzu
server {
listen 80;
root /var/www/html;
location / { try_files $uri @yourapplication; }
location @yourapplication {
include uwsgi_params;
uwsgi_pass unix:///tmp/uwsgi.sock;
}
}
Grob gesagt, try_files mit der URL wie sie ist Eine Struktur, die von root sucht und intern zu uWSGI umleitet (mit der URL wie sie ist), wenn sie nicht vorhanden ist root hat nichts besonderes Sie können alles an uWSGI senden, aber die Formel lautet wie oben
uwsgi_params ist eine uWSGI-Konfigurationsdatei unix: ///tmp/uwsgi.sock ist ein UNIX-Domain-Socket Dies wird als Kommunikation mit uWSGI bezeichnet.
Sie können auch eine Verbindung mit TCP herstellen, der jedoch den Port belegt. Besser Domain Socket verwenden
Wenn Sie eine Verknüpfung erstellen, sind die Nginx-Einstellungen abgeschlossen
$ sudo ln -s /etc/nginx/sites-available/myapplication.conf /etc/nginx/sites-enabled/myapplication
$ sudo systemctl restart nginx
Wenn uwsgi nicht ausgeführt wird, starten Sie es
& sudo systemctl start uwsgi
uwsgi Fehlerprüfung
$ sudo systemctl status uwsgi
Nginx-Fehlerprüfung
$ sudo systemctl status nginx
Lesen Sie durch und versuchen Sie den Zugriff, wenn kein Fehler vorliegt
$ curl http://127.0.0.1
Hello, World
Bitte lassen Sie mich wissen, wenn etwas nicht stimmt
Recommended Posts