Flask
Kolv på Apache med mod_wsgi
Sök…
WSGI-applikationsomslag
Många Flask-applikationer utvecklas i en virtualenv för att hålla beroenden för varje applikation separat från den systemomfattande Python-installationen. Se till att mod-wsgi är installerat i din virtualenv :
pip install mod-wsgi
Skapa sedan ett wsgi-omslag för din Flask-applikation. Vanligtvis finns det i rotkatalogen för din applikation.
my-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
Denna omslag aktiverar den virtuella miljön och alla dess installerade moduler och beroenden när de körs från Apache och ser till att applikationsvägen är först i sökvägarna. Enligt konvention kallas WSGI-applikationsobjekt application
.
Apache-sidor aktiverad konfiguration för WSGI
Fördelen med att använda Apache jämfört med den inbyggda werkzeug-servern är att Apache är flertrådad, vilket innebär att flera anslutningar till applikationen kan göras samtidigt. Detta är särskilt användbart i applikationer som använder XmlHttpRequest (AJAX) i front-enden.
/etc/apache2/sites-available/050-my-application.conf (eller standard apache-konfiguration om den inte är värd på en delad webbserver)
<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>