Déployer une application Python avec l'outil Setup Python App
L'outil Setup Python App permet de créer un environnement Python sur votre hébergement afin de déployer et installer une application web conçu en Python. L'outil vous permet de :
- Choisir la version de Python qui sera utilisée dans le projet. A cet instant, les versions 2.7, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11 de Python sont proposées.
- Cela va également faire le lien entre votre nom de domaine et votre application Python. En arrière plan, cela utilise Phusion Passenger et la wsgi
- Vous pouvez également installer les dépendances avec pip
- Un environnement virtuel Python est créé, avec la version de votre choix et une commande spéciale sera fournie pour entrer dans cet environnement virtuel lorsque vous travaillez en SSH
En résumé, c'est l'outil à utiliser si vous souhaitez installer une application web conçu avec Python sur un hébergement web o2switch. Il s'agit d'une offre d'hébergement Python, compatible avec plusieurs versions de Python différentes. L'offre o2switch supporte également d'autres langages comme PHP, NodeJS et Ruby.
Icône | Nom | Catégorie | Description |
---|---|---|---|
Setup Python App | Logiciel | Permet de créer un environnement python pour installer une application web conçu avec Python |
Présentation de l'outil
L'outil Setup Python App contient trois grandes parties/pages :
- La page d’accueil qui liste les applications Python déployées
- La page de création d'une nouvelle application, qui permet de créer un environnement virtuel Python
- La page d'édition et de gestion d'une application qui est déjà déployée
Liste des applications Python déployées
Sur la page d’accueil de l'outil, vous retrouverez l'ensemble des applications Python déployées sur votre hébergement, ainsi que différents bouton permettant d'éditer/démarrer/stopper/relancer l'application. Il y a également le bouton permettant de créer un nouveau projet Python.
Page d'accueil de l'outil Setup Python app qui liste les projets web Python déployés
Voici le détail de chaque partie intéressante de cette page d’accueil :
Create Application
vous permet d'accéder au formulaire de création d'un nouveau projet web Python. Ce formulaire sera détaillé un peu plus tard.App URI
vous indique sur quelle domaine et URL est installé l'application PythonApp Root Directory
vous indique dans quel dossier de votre hébergement se trouve les fichiers sources de votre projet webStatus
indique si l'application est lancée ou stoppée. Contrairement à une application PHP par exemple, une application Python peut être lancée, stoppée, relancée.permet de stopper l'application
permet de relancer l'application
permet d'ouvrir la page de gestion de l'application
permet de supprimer l'application
Création d'une application Python
La page suivante est la page de création d'une application web Python qui est accessible après avoir cliqué sur le bouton Create Application
.
Formulaire permettant de déployer une application Python sur un hébergement o2switch
Voici le détails de ce formulaire de création d'un environnement virtuel Python :
Create
permet de valider le formulaire et créer l'applicationPython Version
permet de choisir la version de Python qui sera utilisée dans le projet. A la date de la création de cette page, vous avez le choix entre les versions suivantes de Python : 2.7, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11Application Root
correspond au dossier dans lequel seront stockés les fichiers sources de votre application Python. Généralement il s'agit d'un dossier qui se trouve à la racine de votre hébergement : c'est la configuration recommandée. A ne pas confondre avec la racine du document qui est liée au nom de domaine, qui est généralement différente. Voir la note ci-dessous pour plus d'informations à ce sujet.Application URL
permet de définir sur quel domaine/URL sera déployé l'applicationApplication Startup File
est le fichier, se trouvant à l'intérieur duApplication Root
, qui sert à lancer l'application. Cela fichier doit suivre la spécification WSGI. En résumé, le WSGI est ce qui permet de faire le lien entre l'application Python et le serveur web.Application Entry Point
est le nom de la fonction, contenue dans le fichier WSGI duAplication startup file
, qui doit être appelée pour exécuter l'application. Généralement, c'est souventapplication
.Passenger log file
correspond au chemin du fichier de log qui va être créé par Phusion Passenger qui est la technologie utilisée, côté serveur, pour faire fonctionner une application Python. Utile pour faire du débug ou lorsqu'une application ne se lance pas correctement.Add Variable
permet de créer des variables d'environnement qui seront passées à l'application. C'est généralement utiliser pour passer la configuration à l'application, afin d'éviter d'avoir cela dans un fichier de configuration.
Application root et racine du document de domaine
Le dossierApplication root
est le dossier qui contient les fichiers de l'application Python. La plupart du temps, c'est un dossier à la racine de l'hébergement et nous recommandons à ce que cela reste ainsi.
Ce dossier là ne doit pas être confondu avec la racine du document du nom de domaine, qui correspond au dossier dans lequel pointe le nom de domaine. Généralement le nom de domaine est associé avec un dossier nom-de-domaine.tld
à la racine de l'hébergement ou dans le dossier public_html
de l'hébergement.
Cela signifie que l'application Python se trouve dans un dossier différents du dossier associé au domaine. C'est normal.
Un exemple concret : les fichiers sources de l'application Python vont se trouver dans le dossier monApplicationPython
à la racine de l'hébergement. Le nom de domaine pointe dans le dossier mon-domaine.tld
à la racine de l'hébergement. Dans le dossier du nom de domaine, l'outil Setup Python App
va créer un fichier .htaccess
permettant de faire le lien avec l'application Python.
Gestion d'une application Python
La page suivante est la page d'édition et de gestion d'une application existante, accessible en cliquant sur l'icône de crayon sur la page d’accueil de l'outil.
Page de gestion et d'édition d'un application Python déjà déployée
La page de gestion d'une application python contient de nombreuses fonctionnalités :
Destroy
permet de supprimer une application qui est déjà déployée. Supprime simplement l'environnement Python créé par l'outil mais pas vos fichiers sources.Save
permet d'enregistrer les changements que vous avez pu faire sur le formulaire d'éditionSource
la commande source est très importante. C'est la commande à lancer pour entrer dans votre environnement Python lorsque vous travaillez en SSH ou avec l'outil Terminal.Stop App
permet de stopper l'application Python. En stoppant l'application, cette dernière ne répond plus et le contenu liée au nom de domaine sera directement accessible, donc prenez garde à ne rien mettre de confidentiel dans le dossier lié au domaine !Restart
permet de relancer l'application, à utiliser lorsque les fichiers sources de votre application changentPython Version
permet de changer la version de Python qui est actuellement en place sur votre projet. Les versions actuellement proposées sont : 2.7, 3.3, 3.4, 3.5, 3.6, 3.7Application Root
permet de changer le dossier dans lequel se trouve les sources de votre application. Ne déplace rien, change juste la configuration du projet. Il est recommandé de ne pas modifier leapplication root
d'une application déployée, cela cause des problèmes. Dans le pire des cas, c'est mieux de supprimer/recréer l'application.Application URL
indique sur quel nom de domaine/URL est installée l'applicationApplication startup file
est le chemin vers le fichier wsgi de l'application qui doit se trouver dans le dossierapplication root
Application entry point
est le nom de la fonction (oucallable
), contenu dans le wsgi, qui doit être appelée pour exécuter l'application. Dans 90% des cas, c'estapplication
.Passenger log file
est le chemin vers le fichier de log créé par Phusion Passenger qui est la technologie utilisée pour faire fonctionner Python dans un contexte web sur l'hébergement. A utiliser si vous avez des erreurs avec l'application.Run pip install
permet d'installer les dépendances avec pip. Ce bouton là devient activable après avoir fourni au moins un fichier de dépendances (généralementrequirements.txt
) dans le champs qui se trouve juste en dessous et en validant avecAdd
.Execute Python script
permet de lancer un script Python, comme lemanage.py
dans le cas de Django par exemple. Peut vous permettre d'éviter de devoir utiliser SSH ou l'outil Terminal. Cependant, nous recommandons quand même de lancer vos commandes en SSH ou avec le terminal, l'affichage/gestion sera meilleurs que celui fourni par leExecute Python script
Add Variable
permet de créer/modifier les variables d'environnements qui sont passées à votre application
Déploiement d'une application : Wagtail
Pour prendre un exemple concret, nous allons déployer l'application Wagtail qui est un CMS conçu en Python et qui se base Django. Il s'agit donc d'une application complète et un bon cas d'étude.
Pour lancer cette installation, nous allons suivre la procédure d'installation qui est indiquée sur le site de Wagtail. L'application s'installe avec un utilitaire proposé par Wagtail.
- Créer un projet Python vide afin de créer un environnement Python
- Installer l'utilitaire Wagtail
- Avec l'utilitaire Wagtail, on va créer un nouveau projet de site Wagtail
- On va configurer Wagtail et notamment sa base de données mysql et lancer l'assistant de création/remplissage de la base de données avec les données nécessaires au fonctionnement de wagtail
- Enfin, il ne restera plus qu'à ajuster le projet, jusqu'à maintenant vide, pour le faire pointer vers le bon
wsgi
et plus le “Hello World” par défaut
# La procédure d'installation de Wagtail en 7 lignes pip install wagtail wagtail start mysite cd mysite pip install -r requirements.txt python manage.py migrate python manage.py createsuperuser # Cette ligne ne sera pas nécessaire, l'application sera lancé par Phusion Passenger python manage.py runserver
Création d'un projet Python vide
La première étape consiste à créer un projet Python vide. L'outil va ainsi créer un environnement Python que l'on pourra utiliser pour installer l'utilitaire d'installation de Wagtail.
On se rend donc sur l'outil Setup python app puis on clique sur le bouton Create Application
. Sur l'écran suivant, on créé un projet vide, comme ci-dessous.
Création d'une application vide pour générerl'environnement virtuel Python
Pour détailler chaque étape :
Python Version
: on choisie version 3.7 de Python, wagtail aura besoin de cela.Application Root
: on respecte les bonnes pratiques donc on choisi un dossier à la racine de l'hébergement dans lequel iront les fichiers sources de l'application wagtailApplication URL
: on sélectionne sur quel domaine va être installer l'applicationApplication startup file
: on laisse vide pour créer un projet vide. L'outil va automatiquement créé une application “Hello World” d'exempleApplication entry point
: on laisse vide également, l'outil va pré-remplir cela avec le “Hello World” d'exemple- Enfin on valide en cliquant sur
create
Installation de l'utilitaire wagtail
Une fois le projet créé, on arrive sur la page de gestion du projet. La prochaine étape est d'installer l'utilitaire wagtail
qui permettra d'installer en quelques clics le CMS wagtail
.
On va faire cela avec l'outil Terminal dans cPanel (ou en SSH si vous préférez, ça revient au même).
Première étape, il faut copier la commande source
qui est donné dans la page de gestion du projet. C'est la commande qui permet d'entrer dans l'environnement Python.
La commande source permet d'entrer dans l'environnement Python créé par l'outil
Dans la capture d'écran, on remarque également que Application startup file
et Application entry point
ont été remplis avec les valeurs par défaut du “Hello World”.
Ensuite, on se rend dans l'outil terminal, on lance la commande source, puis la première commande donné par le guide d'installation de wagtail, permettant d'installer l'utilitaire d'installation.
# On entre dans l'environnement Python source /home/o2dev/virtualenv/monProjetWagtail/3.7/bin/activate && cd /home/o2dev/monProjetWagtail # On installe l'utilitaire wagtail avec pip pip install wagtail
Installation de wagtail avec pip sur un hébergement o2switch
Dans la capture d'écran de l'outil Terminal de cPanel, on constate que suite à l'activation de la commande source, le prompt
du shell change (cf. en bleu) et c'est à cela que l'on reconnait que l'on travaille dans l'environnement Python.
Création du projet de site wagtail
Maintenant que nous avons accès à l'utilitaire wagtail
, nous pouvons créer un projet de site.
# On va installer le projet wagtail dans un dossier temporaire pour commencer donc on s'enlève du répertoire courant cd .. # On démarre un nouveau projet wagtail dans 'monsite' wagtail start monsite # On se place dans le dossier du projet de site wagtail cd monsite # On installe les dépendances pip install -r requirements.txt
Création d'un nouveau site Wagtail et installation des dépendances
Configuration et ajustements
A présent, il faut faire quelques ajustements et configurations
- le site est dans le dossier
monsite
, il faut déplacer le contenu de ce dossier dans le dossier définie dansapplication root
. Ce dossier temporairemonsite
a été créé car ce n'est pas possible de créer un projet de site wagtail dans un dossier non vide (ce qui est le cas du dossier définie dans leapplication root
) - ensuite il faut configurer wagtail pour lui dire d'utiliser une base de données mysql. Sinon il utilise
sqlite
et la version proposée sur l'hébergement ne conviendra pas. Evidemment, il faudra créer la base de données/utilisateur/mot de passe depuis l'outil bases de données mysql de cPanel. - comme on utilise mysql, il faudra également installer la dépendance
mysqlclient
- ensuite, il faudra lancer les commandes wagtail permettant de remplir la base de données (autrement dit, faire la
migration
) - enfin, il faudra créer un compte administrateur
# On copie les données du répertoire monsite directement dans le répertoire du projet python cp -vaR monsite/* monProjetWagtail # On se replace dans le bon dossier cd monProjetWagtail # On édite le fichier de configuration. Note : dans le dossier 'monsite' original, il y avait également un sous dossier 'monsite'. C'est ainsi que Wagtail est structuré ... # Voir ci-dessous la portion de code à ajouter pour configurer la base de données mysql vi monsite/settings/base.py # On a besoin d'installer une dépendance supplémentaire : mysqlclient pip install mysqlclient # On créé le schema/table de la base de données python manage.py migrate # On créé un administrateur python manage.py createsuperuser
# Portion de code à ajouter dans le settings/base.py du projet. Remplace la portion de code existante configurant une base sqlite. DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'o2dev_bdd', 'USER': 'o2dev_bdd', 'PASSWORD': 'mot de passe mysql', 'HOST': '127.0.0.1', 'PORT': '3306', } }
Configuration de wagtail
Configuration dans Setup Python App
Enfin, la dernière étape consiste à configurer correctement l'outil Setup Python App
, il faudra mettre à jour le chemin vers le fichier wsgi
.
Mise à jour de la configuration dans l'outil Setup Python App
Wagtail est fonctionnel
Déploiement générique
Le déploiement de Wagtail est un exemple concret complet, cependant dans la réalité, le déploiement est généralement différents car il n'y a pas d'outil, comme l'utilitaire de Wagtail, pour créer le projet.
Voici la procédure pour un déploiement plus générique, d'une application que vous avez pu concevoir vous même :
- En premier, il faut récupérer les sources de l'application et les placer dans un dossier à la racine de l'hébergement. Les sources peuvent être récupérés en FTP ou avec GIT.
- Ensuite, via l'outil Setup Python App il faut créer un environnement virtuel python :
- On choisie la version de Python à utiliser. Dépend de votre projet.
- Dans
application root
, on indique le chemin dans lequel se trouve les sources de l'application donc le même dossier que celui créé à l'étape 1 - Dans
application URL
, il faut choisir sur quel domaine/url va répondre l'application - Dans
application startup file
il faut mettre le chemin vers le fichierwsgi.py
de l'application, qui doit être contenu dans le dossier (ou dans un sous dossier de)application root
application entry point
est généralement défini surapplication
- Dés que l'environnement est créé, il faut installer les dépendances de l'application
- On peut faire cela en renseignant le fichier de dépendances
requirements.txt
dans la partieconfigurations files
puis faire unRun pip install
- Ou bien (et c'est recommandé), faire cela depuis en SSH ou avec l'outil Terminal. Il faudra bien lancer la commande donné par l'outil, celle qui commence par
source
pour entrer dans l'environnement python puis lancerpip install
- Si vous avez des configurations à faire dans l'application, il faudra modifier les fichiers adéquats. Même chose s'il faut lancer des commandes pour initier correctement l'application (comme la création des tables d'une base de données avec une
migration
) - Enfin, il suffit de relancer l'application depuis l'outil Setup Python App
Usages avancés
Mode de debug
En cas d'erreurs, la page d'erreur qui s'affiche (dans le navigateur web) ne contient pas beaucoup d'information par défaut. Il est possible d'activer le mode de debug avancé de Phusion Passenger, la page d'erreur générée sera beaucoup plus complète.
Pour cela, il suffit d'ajouter les lignes suivantes dans le fichier .htaccess à la racine du site internet :
PassengerAppEnv development
PassengerFriendlyErrorPages on
Les erreurs sont également loguées dans l'outil erreurs de cPanel.
CLI
Il est possible de déployer intégralement une application Python en ligne de commande. Cela dépasse le cadre de cette documentation, mais vous pouvez utiliser la commande cloudlinux-selector
qui est documenté ici.
Cela peut être utilisé lors d'un déploiement automatique, via GIT par exemple.
Chemins vers les différentes versions des exécutables
Plusieurs versions de Python sont installées, il est parfois nécessaire de connaitre le chemin complet vers les différentes versions des fichiers exécutables, notamment lorsque Python est utilisée comme une commande CLI, indépendante d'un projet web complet Python.
Pour un exemple d'utilisation, voir le tutoriel sur la modification du $PATH.
- Chemin vers les exécutables Python
# A noter que dans le dossier dans lequel se trouve python, vous retrouverez également d'autres exécutables comme # pip, pydoc, pyjwt /opt/alt/python27/bin/python2 /opt/alt/python33/bin/python3 /opt/alt/python34/bin/python3 /opt/alt/python35/bin/python3 /opt/alt/python36/bin/python3 /opt/alt/python37/bin/python3 /opt/alt/python38/bin/python3 /opt/alt/python39/bin/python3 /opt/alt/python310/bin/python3 /opt/alt/python311/bin/python3