Mise en production

Cette partie du tutoriel suppose que vous avez un serveur sur lequel vous souhaitez déployer votre application. Elle présente comment créer un package distribuable mais ne rentre pas dans les détails des particularités du serveur ou du logiciel à utiliser. Vous pouvez créer un environnement sur votre ordinateur de développement pour essayer les instructions ci-dessous, mais probablement pas pour installer une application publique réelle. Voyez le document Deployment Options pour une liste des nombreuses façons de faire tourner votre application.

Installation

Pour mettre en production votre application ailleurs, vous devez créer un fichier distribuable. Le standard actuel pour ces fichiers distribuables en Python est le format wheel (extension .whl). Assurez-vos d’abord d’avoir installé la librairie wheel:

$ pip install wheel

En exécutant setup.py avec Python, vous avez un outil en ligne de commande qui vous permet de lancer certains commandes liées à la préparation de ces fichiers distribuables. La commande bdist_wheel va construire un fichier distribuable de type wheel.

$ python setup.py bdist_wheel

Vous pouvez trouver ce fichier dans dist/flaskr-1.0.0-py3-none-any.whl. Le nom du fichier est composé du nom du projet, de sa version et de certaines étiquettes relatives au programme à installer.

Copiez ce fichier sur un autre ordinateur, créez-y un nouvel environnement virtuel (voir set up a new virtualenv) et puis installez le fichier en utilisant pip.

$ pip install flaskr-1.0.0-py3-none-any.whl

Pip va installer votre projet avec ses dépendances.

Comme vous êtes sur un autre ordinateur, vous devez relancer init-db pour créer la base de données dans le répertoire instance folder.

$ export FLASK_APP=flaskr
$ flask init-db

Lorsque Flask détecte qu’il est installé dans un autre mode que le mode éditable, il utilise un autre répertoire pour l”instance folder. Vous pouvez le trouver dans venv/var/flaskr-instance.

Configurez la clé secrète

Au début de ce tutoriel, vous avez choisi une valeur par défaut pour SECRET_KEY. Cette valeur doit être changée pour contenir une séquence aléatoire de bytes lors d’une mise en production. Sinon, des pirates pourraient utiliser la clé publique dev pour modifier le cookie de session ou n’importe quelle autre donnée qui utilise la clé secrète.

Vous pouvez utiliser les commandes ci-dessous pour créer une clé secrète:

$ python -c 'import os; print(os.urandom(16))'

b'_5#y2L"F4Q8z\n\xec]/'

Créez le fichier config.py dans l”instance folder. C’est là que l’usine à applications ira le lire si il existe. Copiez la valeur aléatoire générée dans ce fichier.

venv/var/flaskr-instance
SECRET_KEY = b'_5#y2L"F4Q8z\n\xec]/'

Vous pouvez aussi fixer d’autres paramètres de configuration ici, bien que SECRET_KEY soit le seul qui est vraiment nécessaire au fonctionnement de Flaskr.

Exécution sur un serveur en production

Lorsque votre application tourne sur un serveur de production et non un serveur de développement, n’utilisez pas flask run. Le serveur de développement est fourni par Werkzeug pour votre facilité, mais il n’est ni particulièrement stable, ni efficace si sûr.

Utilisez plutôt un serveur WSGI de production. Par exemple, pour utiliser Waitress, installez-le d’abord dans un environnement virtuel:

$ pip install waitress

You devez indiquer à Waitress la présence de votre application, mais celui-ci n’utilise pas la variable d’environnement contrairement à flask run. Vous devez lui dire de l’importer et d’appeler l’usine à applications pour obtenir un objet application.

$ waitress-serve --call 'flaskr:create_app'

Serving on http://0.0.0.0:8080

Lisez le document Deployment Options pour voir les nombreuses façons de déployer votre application. Waitress est juste un exemple choisi pour ce tutoriel car il fonctionne sur Windows et Linux. Il y a de nombreux autres serveurs et d’autres options de déploiement que vous pouvez choisir pour votre projet.

Poursuivez en lisant le document Continuez à développer!.