Aller au contenu
Cheat Sheet
Linux

Publier un site Flask sur Apache

  • 19 mai 202123 mai 2021

Comment faire un site web en Python et le déployer sur son serveur Apache.

Prérequis

  • Apache2
  • mod_wsgi
  • flask

Installation

Installation d’Apache :

sudo apt update
sudo apt install apache2

Installation des modules :

sudo apt-get install libapache2-mod-wsgi-py3 python-dev

Installation de Flask :

pip install flask

Créer une application Flask

mkdir /home/user/www/flask

On ajoute 3 fichiers :

__init__.py : un fichier vide.

my_flask_app.py :

from flask import Flask
app = Flask(__name__)
@app.route("/")
def test():
    return "Coucou !"
if __name__ == "__main__":
    app.run()

my_flask_app.wsgi : ce fichier nécessite d’avoir le même nom que l’application.

#! /usr/bin/python3

import logging
import sys
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0, '/home/user/www/flask/')
from my_flask_app import app as application
application.secret_key = 'change moi'

Configurer le serveur web

vim /etc/apache2/sites-available/ExampleFlask.conf

<VirtualHost *:80>
     # Add machine's IP address (use ifconfig command)
     ServerName mondomaine.com
     # Give an alias to to start your website url with
     WSGIScriptAlias /flask /home/user/www/flask/my_flask_app.wsgi
     <Directory /home/user/www/flask/>
            Options FollowSymLinks
            AllowOverride None
            Require all granted
     </Directory>
     ErrorLog ${APACHE_LOG_DIR}/error.log
     LogLevel warn
     CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

On active le site :

sudo a2ensite /etc/apache2/sites-available/ExampleFlask.conf

On redémarre le serveur :

sudo service apache2 restart

On peu désormais se connecter au site www.mondomaine.com/flask/ !

Problèmes potentiels

Il se peut que certains modules aient besoin d’accéder aux fichiers (par exemple OpenCV). Par défaut, cela ne fonctionnera pas.
Pour résoudre ce problème, il faut rajouter cette ligne dans le VirtualHost :

WSGIScriptAlias /flask /home/user/www/flask/my_flask_app.wsgi application-group=%{GLOBAL}

Pour éviter d’autres problèmes de droits, on peut ajouter :

WSGIDaemonProcess app user=www-data group=www-data threads=2 python-home=/home/user/www/flask/venv python-path=/home/user/www/flask
[Python] Combien de temps met un bloc de code
Afficher la limitation de vitesse dans Waze
apache flask linux mod_wsgi python

Articles similaires

[Python] Protocol
[Python] Liste de choix en…
[Python] Benedict : une autre…
[Python] Exécuter un programme externe…
Un package Python nécessite Visual…
[Python] Combien de temps met…
[Python / Selenium] Regarder les…
[Python] Petites fonctions qui vont…
[Debian] Mettre à jour vers…
[Synology] Installer IPKG sur DS214

Catégories

  • Android
  • Calibre
  • Docker
  • Excel
  • Git
  • Google Sheet
  • Knime
  • Linux
  • Logiciels
  • Matériel
  • Non classé
  • Notepad++
  • Power BI
  • Programmation
  • Python
  • Qlik
  • Service
  • Synology
  • Visual Studio Code
  • Windows
  • Word
  • WordPress

Étiquettes

android apache bootloader convert drivers encode excel fastboot ffmpeg filter firefox generators gps kobo lambda linux manette markdown min mod_wsgi moto g LTE motorola mp3 notepad++ peregrine php pip python qlik qliksense qlikview reduce selenium sum synology twrp venv virtualenv visual basic vitesse wav waze windows wordpress youtube

Tags

android apache bootloader convert drivers encode excel fastboot ffmpeg filter firefox generators gps kobo lambda linux manette markdown min mod_wsgi moto g LTE motorola mp3 notepad++ peregrine php pip python qlik qliksense qlikview reduce selenium sum synology twrp venv virtualenv visual basic vitesse wav waze windows wordpress youtube
Thème par Colorlib Propulsé par WordPress