Zoeken…


WSGI Application wrapper

Veel Flask-applicaties zijn ontwikkeld in een virtualenv om afhankelijkheden voor elke applicatie gescheiden te houden van de systeembrede Python-installatie. Zorg ervoor dat mod-wsgi is geïnstalleerd in uw virtualenv :

pip install mod-wsgi

Maak vervolgens een wsgi-wrapper voor uw Flask-toepassing. Gewoonlijk wordt het bewaard in de hoofdmap van uw toepassing.

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

Deze wrapper activeert de virtuele omgeving en alle geïnstalleerde modules en afhankelijkheden wanneer deze wordt uitgevoerd vanuit Apache, en zorgt ervoor dat het toepassingspad eerst in de zoekpaden staat. Volgens afspraak worden WSGI toepassingsobjecten genoemd application .

Met Apache-sites ingeschakelde configuratie voor WSGI

Het voordeel van het gebruik van Apache ten opzichte van de ingebouwde werkzeug-server is dat Apache multi-threaded is, wat betekent dat meerdere verbindingen met de applicatie tegelijkertijd kunnen worden gemaakt. Dit is met name handig in toepassingen die gebruikmaken van XmlHttpRequest (AJAX) aan de voorkant.

/etc/apache2/sites-available/050-my-application.conf (of standaard apache-configuratie indien niet gehost op een gedeelde webserver)

<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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow