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