Aller au contenu
Cheat Sheet
Linux

Publier un site Flask sur Apache

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

Pylance / Pyright fait ramer…
ModuleNotFoundError: No module named ‘apt_pkg’
Créer une application Android avec…
Accéder à un serveur qui…
Héberger plusieurs sites dans des…
Héberger un site dans un…
[Linux] Réparer une installation en…
[Python] Comment bien démarrer un…
[Python] Extraire une page PDF…
[Python] Protocol

Catégories

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

Étiquettes

adb android apache audio calibre convertion css debian docker drivers excel fichiers firefox flask google grep html kobo linux manette markdown mp3 notepad++ office php pip portable privoxy python qlik qliksense qlikview realtek selenium synology tor venv vim virtualenv vscode web windows wordpress xargs youtube

Tags

adb android apache audio calibre convertion css debian docker drivers excel fichiers firefox flask google grep html kobo linux manette markdown mp3 notepad++ office php pip portable privoxy python qlik qliksense qlikview realtek selenium synology tor venv vim virtualenv vscode web windows wordpress xargs youtube
Thème par Colorlib Propulsé par WordPress