Buscar..


Contenedor de aplicación WSGI

Muchas aplicaciones de Flask se desarrollan en un virtualenv para mantener las dependencias de cada aplicación por separado de la instalación de Python en todo el sistema. Asegúrese de que mod-wsgi esté instalado en su virtualenv :

pip install mod-wsgi

Luego crea un contenedor wsgi para tu aplicación Flask. Por lo general, se mantiene en el directorio raíz de su aplicación.

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

Este contenedor activa el entorno virtual y todos sus módulos y dependencias instalados cuando se ejecuta desde Apache, y se asegura de que la ruta de la aplicación sea la primera en las rutas de búsqueda. Por convención, los objetos de aplicación WSGI se denominan application .

Configuración de sitios apache habilitados para WSGI

La ventaja de usar Apache sobre el servidor werkzeug integrado es que Apache es multiproceso, lo que significa que se pueden hacer múltiples conexiones a la aplicación simultáneamente. Esto es especialmente útil en aplicaciones que utilizan XmlHttpRequest (AJAX) en el front-end.

/etc/apache2/sites-available/050-my-application.conf (o configuración de apache predeterminada si no está alojado en un servidor web compartido)

<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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow