Logo de kxs.frFiches pour l'informatique

Configurer le serveur : Flask

Introduction

Après l'installation d'Apache nous pouvons installer le framework Flask pour pouvoir faire des pages dynamiques avec Python. Apache permet une grande souplesse de configuration et Flask va nous permettre de créer notre site en codant en Python.

Installer Flask

Il faut d'abord installer différents paquets :

apt install libapache2-mod-wsgi-py3 python-dev python3-pip

Ensuite, on installe Flask :

pip install flask

Créer une application Flask

La page par défaut d'Apache est située dans le dossier /var/www/html. Nous allons créer notre site web avec flask dans un autre dossier. Il est pratique de créer un dossier avec le nom du domaine (sans point car cela semble poser problème à Python). Il sera alors plus facile de s'y retrouver si on crée d'autres sites sur le même serveur par la suite.

mkdir /var/www/domaine

Déplacons-nous dans ce dossier :

cd /var/www/domaine/

Créons alors deux fichiers.

D'abord un fichier __init__.py contenant :

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

puis un fichier domaine.wsgi contenant le code suivant :

#!/usr/bin/python3
import sys
sys.path.insert(0,"/var/www/")
from domaine import app as application

Ici on doit pouvoir tester si notre application fonctionne avec la commande :

python3 __init__.py

Vous devriez alors voir quelque-chose comme ça :

* Serving Flask app '__init__'
 * Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on http://127.0.0.1:5000
Press CTRL+C to quit

Nous pourrions aller voir la page avec un navigateur en ligne de commande mais ce la fait des complications. Arrêtons le serveur en tapant Ctrl+C.

Il nous reste maintenant à configurer Apache pour rendre accessible notre page web au reste du monde.

Configurer Apache

Lier Apache à l'application Python

Il nous reste maintenant à dire à Apache de lancer notre application lorsque quelqu'un fait une requête sur notre serveur. Pour cela nous devons créer un virtualhost.

Créez un ficher /etc/apache2/sites-available/domaine.conf et mettre dedans :

<VirtualHost *:80>
    ServerName ip_du_serveur
    ErrorLog /var/www/domaine/logs/error.log
    CustomLog /var/www/domaine/logs/access.log combined

    WSGIDaemonProcess domaine user=www-data group=www-data threads=5
    WSGIProcessGroup domaine
    WSGIScriptAlias / /var/www/domaine/domaine.wsgi
    <Directory /var/www/domaine>
        Require all granted
    </Directory>

</VirtualHost>

Noubliez pas de remplacer ip_du_serveur par l'adresse ip du serveur.

On crée le répertoire pour les logs :

mkdir /var/www/domaine/logs

On rend Apache propriétaire de tout le dossier pour éviter les problèmes d'accès :

chown -R www-data:www-data /var/www/domaine

On désactive la page par défaut d'Apache :

a2dissite 000-default.conf

On active notre virtualhost :

a2ensite domaine.conf

On valide tout ça en redémarrant apache :

systemctl reload apache2

Ensuite, il suffit de saisir l'adresse IP de votre serveur dans un navigateur pour voir si tout fonctionne.

http://ip_du_serveur