Flask
Apache-Flasche mit mod_wsgi
Suche…
WSGI-Anwendungswrapper
Viele Flask-Anwendungen werden in einer virtuellen Umgebung entwickelt , um die Abhängigkeiten für jede Anwendung von der systemweiten Python-Installation zu trennen. Stellen Sie sicher, dass mod-wsgi in Ihrer virtualenv installiert ist:
pip install mod-wsgi
Dann erstellen Sie einen Wsgi-Wrapper für Ihre Flask-Anwendung. Normalerweise wird es im Stammverzeichnis Ihrer Anwendung gespeichert.
mein-application.wsgi
activate_this = '/path/to/my-application/venv/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
import sys
sys.path.insert(0, '/path/to/my-application')
from app import app as application
Dieser Wrapper aktiviert die virtuelle Umgebung und alle installierten Module und Abhängigkeiten, wenn sie von Apache ausgeführt werden, und stellt sicher, dass der Anwendungspfad in den Suchpfaden an erster Stelle steht. WSGI-Anwendungsobjekte werden normalerweise als application
.
Apache-Sites-fähige Konfiguration für WSGI
Der Vorteil der Verwendung von Apache gegenüber dem eingebauten werkzeug-Server besteht darin, dass Apache Multithreading ist. Dies bedeutet, dass mehrere Verbindungen zur Anwendung gleichzeitig hergestellt werden können. Dies ist besonders nützlich in Anwendungen, die XmlHttpRequest (AJAX) im Frontend verwenden.
/etc/apache2/sites-available/050-my-application.conf (oder Standard-Apache-Konfiguration, wenn nicht auf einem gemeinsam genutzten Webserver gehostet)
<VirtualHost *:80>
ServerName my-application.org
ServerAdmin [email protected]
# Must be set, but can be anything unless you want to serve static files
DocumentRoot /var/www/html
# Logs for your application will go to the directory as specified:
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# WSGI applications run as a daemon process, and need a specified user, group
# and an allocated number of thread workers. This will determine the number
# of simultaneous connections available.
WSGIDaemonProcess my-application user=username group=username threads=12
# The WSGIScriptAlias should redirect / to your application wrapper:
WSGIScriptAlias / /path/to/my-application/my-application.wsgi
# and set up Directory access permissions for the application:
<Directory /path/to/my-application>
WSGIProcessGroup my-application
WSGIApplicationGroup %{GLOBAL}
AllowOverride none
Require all granted
</Directory>
</VirtualHost>