[PYTHON] Stellen Sie die Kolben-App mit mod_wsgi bereit (mithilfe von pipenv).

Einführung

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.

Umweltzusammensetzung

Der Weg zum Einsatz

1. Installieren Sie Apache, mod_wsgi

$ 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.

2. Fügen Sie die Flask-App zum öffentlichen Apache-Ordner hinzu

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.

3. Fügen Sie eine wsgi-Datei hinzu

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.

4. Fügen Sie die conf-Datei hinzu

Von hier aus ist es die Einstellung von Apache. Fügen wir wsgi.conf zu / etc / apache2 / conf-available / hinzu.

`/etc/apache2/conf-available/wsgi.conf``

```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

Stellen Sie die Kolben-App mit mod_wsgi bereit (mithilfe von pipenv).
Stellen Sie Flask jetzt mit ZEIT bereit
So stellen Sie eine mit Flask erstellte Web-App für Heroku bereit
(Fehler) Stellen Sie eine mit Flask mit Heroku erstellte Web-App bereit
Führen Sie die App mit Flask + Heroku aus
Stellen Sie die Flask-App für Heroku bereit (bitter)
Führen Sie python3 Django1.9 mit mod_wsgi aus (deploy)
Stellen Sie die Flask-App auf Heroku bereit
Erstellen Sie eine API mit hug mit mod_wsgi
Stellen Sie die Flask-App auf Heroku bereit
Azure-Tabellenspeicher mit PTVS Flask-App
Verwenden von Poesie mit Fischen (Migration von Pipenv)
Erstellen Sie eine einfache Web-App mit Flasche
Einfache Web-App mit Python + Flask + Heroku
Ich kann nicht mehr mit der Google App Engine bereitstellen
Erste Schritte mit Heroku, Bereitstellen der Flaschen-App
Erstellen Sie eine Bildkompositions-App mit Flask + Pillow
Gewinnen Sie die Python + Flask-Web-App mit Jenkins
Verwenden der Flasche mit Nginx + Gunicorn-Konfiguration [Lokale Umgebung]
Einfaches maschinelles Lernen mit Scikit-Learn und Flask ✕ Web App
Versuchen Sie, mit MVC eine RESTful-API mit Flask 1.0.2 zu erstellen
Stellen Sie eine vorhandene App mit Docker + Pyenv-Virtualenv + Uwsgi + Django bereit
Stellen Sie die mit PTVS erstellte Django-App in Azure bereit
[GitHub] Bis Sie mit ssh mithilfe von Deploy-Schlüsseln ziehen
Erstellen Sie schnell Apache + Pipenv + Flask + SQLAlchemy mit Sakura VPS
Arbeitsnotiz, die ich i18n mit Flask App ausprobiert habe
Stellen Sie Echtzeit-Webanwendungen mit swampdragon x apache bereit
Stellen Sie eine mit Streamlit erstellte Web-App für Heroku bereit
Ich habe versucht, Pipenv zu verwenden
IP-Einschränkung mit Flask
Schritte zum Einrichten von Pipenv, Erstellen einer CRUD-App mit Flask und Containerisieren mit Docker
Hallo Welt auf Flasche
Programmieren mit Python Flask
Stellen Sie Go-Apps mit GitHub-Aktionen für Google App Engine bereit