Configurar mod_wsgi per a la teva aplicació Python

Aquí et mostro com configurar Apache per servir una aplicació Flask. La configuració per a Django seria similar, però amb alguns canvis.

1 Crea run fitxer de configuració per al teu projecte Flask. Crea un fitxer, per exemple, /etc/apache2/sites-available/myflaskapp.conf (Ubuntu/Debian) o /etc/httpd/conf.d/myflaskapp.conf (Red Hat/CentOS), amb el següent contingut:

<VirtualHost *:80>
    ServerAdmin webmaster@yourdomain.com
    ServerName yourdomain.com
    DocumentRoot /var/www/myflaskapp

    WSGIDaemonProcess myflaskapp python-path=/var/www/myflaskapp:/path/to/your/venv/lib/python3.x/site-packages
    WSGIProcessGroup myflaskapp
    WSGIScriptAlias / /var/www/myflaskapp/myflaskapp.wsgi

    <Directory /var/www/myflaskapp>
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>


Explicació:

  • ServerName: El nom de domini per accedir a l’aplicació.
  • DocumentRoot: La ubicació del teu projecte.
  • WSGIDaemonProcess: Configura l’entorn del procés WSGI, especificant el camí al directori del projecte i la ubicació del teu entorn virtual.
  • WSGIScriptAlias: El fitxer .wsgi que Apache utilitzarà per comunicar-se amb la teva aplicació Python.
  • Copilot proposa: sudo a2ensite myflaskapp.conf i sudo systemctl restart apache2

2 Crea el fitxer .wsgi per a la teva aplicació Flask a /var/www/myflaskapp/myflaskapp.wsgi amb el següent contingut:

import sys
import logging
from pathlib import Path

# Configura el directori del projecte
project_home = Path('/var/www/myflaskapp')
if project_home not in sys.path:
    sys.path.insert(0, str(project_home))

from app import app as application  # Assegura't que aquest camí apunti a l'aplicació Flask

logging.basicConfig(stream=sys.stderr)

3 Habilita la nova configuració (Ubuntu/Debian):

Nota: Canvia app a la importació correcta si el teu fitxer principal de l’aplicació té un nom diferent o si utilitzes un mòdul diferent.

sudo a2ensite myflaskapp

4 Reinicia Apache per aplicar els canvis:

sudo systemctl restart httpd


3. Prova l’Aplicació

Si tens problemes, revisa els fitxers de registre d’Apache (/var/log/apache2/error.log o /var/log/httpd/error_log) per obtenir més informació sobre els errors que puguis estar trobant.

Després de reiniciar Apache, intenta accedir a la teva aplicació a través del navegador. Si has configurat tot correctament, hauries de veure la teva aplicació Python servida per Apache.