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>


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow