Chez TIKDEM, nous portons un grand intérêt au micro-framework Flask.
La courbe d’apprentissage pour un développeur qui maîtrise déjà le langage Python est bien plus courte que pour des frameworks plus riches en fonctionnalités natives tels que Django, Symfony ou Yii.
Un autre intérêt de cet outil est qu’il consomme moins de ressources et impose moins de contraintes de déploiement.
Il s’agit là de points idéaux lorsqu’on réalise, par exemple, une application web spécialisée ou encore embarquée sur un Raspberry.
Dans ce tutoriel nous partons du principe que vous connaissez déjà les bases de Flask et que vous savez exécuter une application. Vous savez donc déjà, qu’une fois exécutée, l’application est accessible en local depuis l’adresse
http://localhost:5000
Considérons que Python, PIP, Flask et Virtualenv soient déjà installés sur le serveur de déploiement et partons du principe que votre application se trouve dans un fichier /chemin/FlaskBot/mybot.py et aie été testée.
Supposons que vous souhaitiez déployer cette application et y accéder depuis une adresse de type http://flask.monnomdedomaine.com .
Nous allons pour cela accéder à cette application à partir d’Apache en mettant en œuvre Web Server Gateway Interface.
Créons un répertoire approprié et copions-y notre code
mkdir /var/www/FlaskBot/
cp /chemin/FlaskBot/mybot.py /var/www/FlaskBot/
il faut ensuite renommer notre fichier Python en __init__.py
cd /var/www/FlaskBot/FlaskBot
mv mybot.py __init__.py
Nous allons définir les configurations Python nécessaires
sudo virtualenv Virtenv
source Virtenv/bin/activate
Pour vérifier que l’application est bien fonctionnelle, lançons le serveur Flask
sudo python /var/www/FlaskBot/FlaskBot/__init__.py
Le message » * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) » apparaît. Cela permet de vérifier que le serveur se lance en ligne de commande; Inutile de chercher à y accéder à partir du navigateur parce que la configuration n’est pas encore achevée.
Créons et éditons à présent un Virtual Host Apache pour notre application.
sudo vi /etc/apache2/sites-available/flask.monnomdedomaine.com.conf
<VirtualHost *:80>
ServerName flask.monnomdedomaine.com
ServerAdmin admin@monnomdedomaine.com
WSGIScriptAlias / /var/www/FlaskBot/flaskapp.wsgi
<Directory /var/www/FlaskBot/FlaskBot/>
Order allow,deny
Allow from all
</Directory>
Alias /static /var/www/FlaskBot/FlaskBot/static
<Directory /var/www/FlaskBot/FlaskBot/static/>
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/flask.monnomdedomaine.com.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Activons ce Virtual Host
cd /etc/apache2/sites-available/
sudo a2ensite flask.monnomdedomaine.com.conf
et finalisons la configuration du fichier WSGI qui va indiquer au serveur d’applications quelle application exécuter.
sudo vi /var/www/FlaskBot/flaskapp.wsgi
#!/usr/bin/python
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/FlaskBot/")
from FlaskBot import app as application
application.secret_key = ‘VOTRE CLE’
Il ne reste plus qu’à redémarrer Apache
sudo service apache2 restart
et votre application est accessible à l’adresse http://flask.monnomdedomaine.com