Das Bereitstellen von Flask-Apps mit mod_wsgi (+ Apache) ist ebenfalls eine beliebte Methode, die in der offiziellen Dokumentation (https://flask.palletsprojects.com/de/0.12.x/deploying/mod_wsgi/) beschrieben ist. Soweit ich jedoch lese, ist die Erklärung für Anfänger unfreundlich. Ich wusste nicht, was ich tun sollte, da das Skript an wichtigen Stellen defekt war.
Außerdem habe ich versucht, Pipenv für die Paketverwaltung von Flask-Apps zu verwenden, aber als es darum ging, Pipenv mit mod_wsgi und flask zu kombinieren, konnte ich keinen Treffer auf Englisch finden.
Wenn ich mich tatsächlich einen ganzen Tag lang anstrengte, erforderte die Bereitstellung der App mit der oben genannten Kombination ein etwas kompliziertes Verfahren, daher möchte ich sie hier als Memorandum für mich selbst schreiben.
$ sudo apt install apache2
$ sudo apt install libapache2-mod-wsgi-py3
Es scheint, dass Sie bei Verwendung von Python 3 "libapache2-mod-wsgi-py3" anstelle von "libapache2-mod-wsgi" angeben müssen. Ich denke, das macht ziemlich süchtig.
Fügen Sie die Flask-App unter / var / www / html
hinzu. Lassen Sie dieses Mal das Programm der Einfachheit halber nur Hello, World anzeigen.
Erstellen Sie einen Ordner "wsgi-scripts" unter HTML und speichern Sie die folgenden Dateien unter dem Namen "hello.py".
/var/www/html/wsgi-scripts/hello.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello from flask!'
if __name__ == '__main__':
app.run()
Wenn du schreiben kannst
$ pipenv install
$ pipenv install flask
Erstellen wir eine virtuelle Umgebung mit.
Fügen Sie die wsgi-Datei demselben Ordner wie die Kolben-App hinzu. Dies ist die Datei, die Sie auf Ihrem Produktionsserver ausführen müssen. Es sieht ein wenig seltsam aus, aber es scheint, dass dies ein wsgi-Skript ist. Es klingt kompliziert, aber bis auf die letzte Zeile ist es eine Vorbereitung für die Verwendung von mod-wsgi und pipenv.
/var/www/html/wsgi-scripts/myapp.wsgi
activate_this = '/home/hoge/.local/share/virtualenvs/wsgi-scripts-XXXXXX/bin/activate_this.py'
with open(activate_this) as file_:
exec(file_.read(), dict(__file__=activate_this))
import sys
sys.path.insert(0, 'var/www/html/wsgi-scripts')
from hello import app as application
Hier muss der Pfad, der "enable_this" entspricht, entsprechend der individuellen Umgebung geändert werden. Der Punkt ist der Pfad von virtualenv, aber als Bestätigungsmethode können Sie den Pfad kopieren, der beim Starten von "pipenv shell" angezeigt wird.
Von hier aus ist es die Einstellung von Apache. Fügen wir wsgi.conf
zu / etc / apache2 / conf-available /
hinzu.
```conf`
WSGIDaemonProcess myapp
WSGIProcessGroup myapp WSGIApplicationGroup %{GLOBAL}
WSGIScriptAlias /myapp /var/www/html/wsgi-scripts/myapp.wsgi
<Directory /var/www/html/wsgi-scripts> Require all granted
Wenn Sie nur wsgi ausführen möchten, müssen Sie nur WSGIScriptAlias schreiben. Wenn Sie jedoch die Flask-App verschieben möchten, müssen Sie auch andere Einstellungen schreiben.
Aktivieren Sie die Site nach dem Schreiben mit dem folgenden Befehl.
$ sudo a2enconf wsgi $ sudo sytemctl reload apache2
Gehen Sie jetzt zu http: // localhost / myapp und Sie sollten "Hallo von der Flasche" sehen.
Das? Als ich es schrieb, war der Arbeitsaufwand unerwartet gering ...
Recommended Posts