Applications Flask Python sur Plesk
Bien que ce ne soit pas officiellement documenté, il est possible d'héberger des applications Flask Python facilement avec Plesk. L'approche et les technologies sont les mêmes que celles qui sont utilisées pour le support officiel de Node.js.
1. Dépendances
Extensions de Plesk
Dans l'installateur de Plesk, assurez-vous que Phusion Passenger server
et Nginx web server
sont installés :
Accès au serveur
Un accès en SSH au serveur est aussi requis pour faire l'installation initiale des packages Python.
Python PIP
Le package manager de Python (PIP) doit être installé sur le serveur. Pour s'assurer que c'est le cas, exécutez la commande suivante :
python3 -m pip
Si le message /usr/bin/python3: No module named pip
s'affiche, alors pip
doit être installé. Après vous être connecté sur le serveur avec un utilisateur root, exécutez la commande suivante pour l'installer :
sudo apt-get install python3-pip
2. Adaptez votre code Python
Lorsqu'il est utilisé pour du Python, Phusion Passenger s'attend à recevoir une Whisky App.
La plupart du temps, lorsqu'il s'agit d'une application Flask, l'ajout de ces lignes permettra à l'application d'être exposée en tant que Whisky app :
application = app
Pour une application Dash, utilisez plutôt la commande suivante :
application = app.server
3. Déployez votre code Python
Déployez votre code Python sur le serveur Plesk avec la méthode de votre choix (git, GitHub, SFTP, etc.)
Pour cet exemple, nous allons simplement créer un fichier app.py
avec l'éditeur de fichier intégré à Plesk. Le contenu de ce fichier sera le suivant :
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
# The following line is required by Phusion Passenger. It exposes the WSGI App using the application variable.
# Reference : https://community.plotly.com/t/deploying-dash-app-on-a-wsgi-service/57867
application = app.server
Nous allons aussi créer le fichier requirements.txt
pour indiquer quels package Python sont nécessaires au projet. Le contenu de ce fichier sera le suivant :
Flask==2.2.2
Werkzeug==2.2.2
4. Installer les dépendances Python
Connectez-vous en SSH au serveur pour télécharger et installer les dépendances du projet. Une fois connecté, exécutez les commandes suivantes :
cd /var/www/vhosts/flaskdemo.jmcouillard.com/httpdocs
python3.8 -m pip install -r requirements.txt
5. Testez l'application
À ce stade-ci, votre application devrait être disponible dans le terminal. Il est normal qu'elle ne soit pas encore disponible dans un navigateur Web.
Pour tester l'application dans le terminal, exécutez cette commande :
python3.8 app.py
Si une erreur s'affiche, alors il faut la régler avant d'aller plus loin.
6. Configurer nginx
Activer le serveur nginx sans Apache
Il est nécessaire d'indiquer à Plesk de faire passer les requêtes directement dans nginx, sans les relayer à Apache. Pour y arriver, décochez l'option Proxy mode dans les paramètres Apache & nginx Settings de votre domaine Plesk.
Paramétrer nginx pour utiliser Phusion Passenger avec votre application Python
Dans la section Additional nginx directives, ajoutez les commandes suivantes en prenant soin de remplacer les valeurs par celles qui s'appliquent dans votre projet :
passenger_enabled on;
passenger_app_type wsgi;
passenger_python /usr/bin/python3.8;
passenger_startup_file app.py;
passenger_app_root /var/www/vhosts/flaskdemo.jmcouillard.com/httpdocs;
7. Tâches de déploiement automatique (facultatif)
Si vous avez choisi à l'étape 2 de déployer votre code à l'aide de git et d'un repository local de Plesk, vous pouvez améliorer votre flux de travail avec ces optimisations CI/CD.
Dans les paramètres du repository, activez l'option Enable additional deployment actions et ajoutez les commandes suivantes :
python3.8 -m pip install -r requirements.txt > pip-install.log 2>&1
passenger-config restart-app /var/www/vhosts/flaskdemo.jmcouillard.com/httpdocs > restart-passenger.log 2>&1
Cela va permettre aux dépendances qui auraient été ajoutées d'être installés automatiquement. De plus, l'application sera redémarrée à chaque déploiement, vous assurant que la version la plus récente du code est actuellement exécutée.
Autres astuces
Redémarrer une application
Pour redémarrer votre application Flask, exécutez la commande suivante :
passenger-config restart-app /var/www/vhosts/flaskdemo.jmcouillard.com/httpdocs
Accédez aux logs
Phusion Passenger affichera le message suivant en cas de problème :
Pour accéder aux logs mentionnés, suivez les indications de cet article et exécutez une requête à l'application via le navigateur web.