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>


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow