Header Ads

Python + Flask + PythonAnywhere : Partie 5 - Présentation de PythonAnywhere

Cet article fait suite au précédent article "Python + Flask + PythonAnywhere : Partie 4 - FlaskR démo"

Cette série d'articles se penche sur:
  • L'évaluation d'un projet web basé sur le Micro FrameWork Flask écrit en Python.
  • Préparation d'un environnement sous Windows (Python et Flask)
  • Mise-en-ligne et configuration du projet chez l'hébergeur PythonAnywhere.com (qui fait de l'hébergement autour de Python).
Pourquoi PythonAnywhere?
Durant nos recherches d'hébergeur de solution Python, nous avons rencontrés PythonAnywhere.
PythonAnywhere - hosting Python
Ce dernier à retenu notre attention pour plusieurs raisons évoquées ci-dessous mais surtout parce qu'il était possible de le tester l'hébergement sans engager de frais.
Compte débutant Gratuit - idéal pour découvrir l'hébergeur PythonAnywhere.

C'est "sans frais", donc nous ne disposons pas d'un environnement puissant aux ressources illimitées mais nous avons eu assez de ressources pour faire joujou avec FlaskR (voyez les précédent articles) et constater que nous pouvions disposer de DB MySql

Depuis, je suis fan... tout autant que Python et Flask. Pouvoir faire de l'hébergement Python sans devoir devenir SysAdmin c'est franchement Sympa.

Le points forts de PythonAnywhere
Avant de vous offrir une visite de l'arrière boutique (les outils à dispositions) je vais revenir sur les points forts de PythonAnywhere.
  • Hé bien, PythonAnywhere s'est volontairement spécialisé dans l'hébergement Python.
    Pourquoi feraient-ils un tel choix idéologique sans nous offrir un hébergement à la hauteur de leur ambition?
  • La liste des modules Python supportés chez PythonAnywhere est bien fournie.
  • Sur PythonAnywhere, l'on dispose des environnement Pythons suivants:
  • Il est possible de créer un site pré-configuré pour Flask, DJango (et quelques autres) en quelques secondes.
  • PythonAnywhere est situé en Grande Bretagne (pas si loin de nous en fin de compte)
  • PythonAnywhere utilise les infrastructures d'Amazon EC2 (bref, il y a du répondant côté infrastructure)
  • PythonAnywhere propose un compte "Beginner" pour découvrir gratuitement le hosting Python.
  • Les prix sont franchement abordables (le compte Hackeur à 5$/mois et compte WebDev à 12$/mois) pour le packaging. Les offrent payantes offre un accès SSH (et également FTP over SSH avec, par exemple, FileZilla).
  • PythonAnywhere propose des DB MySql (inclus dans toutes les offres, même gratuite), PostgreSql (sur demande) et supporte sqlite3 sans aucune modification!
Interface PythonAnywhere
L'interface d'administration est épurée et fonctionnelle, outres des outils de gestion de site Web et de transfert de fichier, PythonAnywhere offre des consoles de commande et éditeur de code intégrée à même l'interface Web. C'est à la fois un outils simple et extrêmement puissant.
Ecran d'accueil de votre compte (le Dashboard)
A partir de cet écran, il est possible de naviguer vers les volets suivants:
  • Consoles - les différentes consoles supportées par votre compte. Voyez sous le libellé "Start a new console" (démarrer une nouvelle console) les différentes options déjà à votre disposition.
  • Files - permet de gérer/téléverser/effacer les différents fichiers et répertoires attachés à votre compte... y compris pour vos sites WEB.
  • WEB - C'est là que s'administre très aisément les différents sites WEB. Vous pourrez facilement créer un site Flask, DJango depuis ce volet. Il reprend également toutes les informations nécessaire pour allez fureter dans les fichiers de votre(vos) projet(s) WEB.
  • Schedule - Est un outil vraiment pratique permettant d'exécuter régulièrement des script (aussi en Python) afin de réaliser des tâches répétitives (eg: backup DB, nettoyage de tables, etc).
  • Databases - volet dans lesquel vous pourrez administrer vos différentes base de données MySql (disponible avec n'importe quel compte) et/ou PostgreSql (sur demande).
PythonAnywhere - Console
Comme déjà indiqué dans le point précédent, le volet console permet de démarrer facilement et rapidement une ligne de commande sur votre compte.
Les consoles accessibles sur PythonAnywhere

Il y a de nombreuses consoles disponibles (Python, Bash, iPython, PyPy).
Si vous vous initiez à Python, vous vous rendrez vite compte que la console est votre meilleur ami (et de loin) et qu'il n'y a absolument aucune raison de se laisser intimider.
Un console Python 2.7 sous PythonAnywhere
Ce qu'il y a d'absolument formidable avec ces consoles, c'est qu'elles fonctionnent à même l'interface de votre navigateur.
Pas besoin de logiciel spécifique, tout se passe entre votre navigateur Internet et les serveurs de PythonAnywhere.

Vous disposez également de iPython, une version améliorée de Python en mode interactif.
Vous disposerez également d'une console MySql pour interagir directement avec vos DB MySql.

Rien de tel pour effectuer les différentes tâches nécessaires. C'est vraiment génial! J'ai eu l'occasion d'utiliser l'utilitaire nano dans une console bash (comme sur mon Raspberry-Pi) pour modifier l'un de mes fichiers... en toute transparence.

Pour les compte payant, vous disposerez également d'une connexion ssh (shell sécurisé), ce qui peut se montrer réellement pratique.

PythonAnywhere - Gestion des fichiers
Le volet "files" permet de gérer facilement l'arborescence des répertoires et les différents fichiers stockés sur votre serveur PythonAnywhere.
Arborescence des fichiers sur le serveur PythonAnywhere
Nous retrouvons ici une interface permettant de naviguer dans les fichiers sur serveur avec la possibilité de naviguer/créer/effacer/modifier/téléverser.

Nous sommes bien sur un système Unix, la racine est notre "home" directory.
Si vous faites attention à la liste supérieure (les répertoires), vous pourrez alors y voir le répertoire mysite correspondant au site Web (celui du volet "Web").

En cliquant sur le lien "mysite", nous naviguons dans l'arborescence de fichier de ce répertoire.

Si vous avez suivit les précédentes parties de cette série de tutoriel, vous remarquerez le fichier flaskr.py ainsi que les sous répertoires db, static et templates de notre projet écrit avec le microFramework Flask (mais nous y reviendrons dans la partie suivante).

J'attire votre attention sur l’icône suivante associée au fichier flask_app.py (flask_app.py est un fichier automatiquement crée par PythonAnywhere... nous reviendrons sur ce point dans un prochain article):



En cliquant dessus, nous allons lancer l'éditeur de code intégré à PythonAnywhere....

Editeur de texte "online" associé à la navigation de fichier.
Utiliser "FTP over SSH"
L'utilisation d'une interface WEB est pratique pour débuter... si vous avez des besoins plus important vous pourrez alors passer à un transfert de fichier via ssh.
Pour les compte payant, il est possible d'utiliser "ftp over ssh" (aussi appeler sftp) pour transférer des fichiers entre votre ordinateur et votre serveur PythonAnywhere.
Voyez cet article où nous avons décrit comment utiliser cette fonctionnalité avec des Raspberry-Pi.

PythonAnywhere - Les sites WEB
Le volet "WEB" permet de gérer plus facilement vos sites internets.
Ce volet vous permet de créer facilement un nouveau site en cliquant sur le lien "add new web app" (ajouter une nouvelle application Web).

L'ajout d'une nouvelle application propose également d'initialiser celle-ci avec un site Django, Falsk, Web2Py, CherryPy... mais vous pouvez fort bien réaliser la configuration vous-même.

Volet Site - détail d'un site
Note:  les comptes débutant ''Beginner Account'' n'ont droit qu'a une application (un seul Web App)

Cet écran vous permet:
  1. De savoir où se trouve votre site dans l'arborescence des fichier (point "Source code")
  2. Le fichier de configuration WSGY (un fichier Python permettant de modifier la configuration de l'application appelée)
  3. Le bouton [RELOAD xxx] qui permet de redémarrer le site (nécessaire après une modification de code.
  4. Les Logs serveurs, log d'accès et log d'erreur
  5. L'accès à des ressources statiques (ex: associer /static/ à un répertoire physique sur le serveur).
Protection du site
Outre ces éléments de configuration, ce volet permet de protéger très facilement l'accès au site (WebApp) à l'aide d'un mot de passe.


Très pratique pour protéger une application en cours de développement/maintenance, un service ou simplement une application sensible.

PythonAnywhere - Tâches planifiées
Le volet "Schedule" permet d'exécuter des scripts (certainement Bash et Python) à intervalle régulier.

Gestion des tâches planifiées sur PythonAnywhere
Cela permet de réaliser des tâches de copies, de gestion de site, vérification, collecte de données, etc.
Ces tâches sont exécutées chaque jours à une heure donnée. Comme précisé sur le site de PythonAnywhere, les utilisateurs payant disposent visible de plus de souplesse.

PythonAnywhere - Base de données
PythonAnywhere propose des bases de données MySql inclus dans toutes les offres et sans surcoût !!!.
Pour environ 14$/mois, il est également possible de disposer d'une DB PostgreSql (voir pour les plans tarifaires à la carte/custom).

Ce dernier volet "Databases" permet donc de gérer vos bases de données (Création de DB, changement de mot MySQL, démarrage de console SQL).
Gestion des bases de données sur PythonAnywhere

Sur cette page, vous obtiendrez également les informations nécessaire pour permettre à vos applications python de se connecter sur leur base de donnée.

Conclusion
Nous avons testé les services de PythonAnywhere dans le cadre des la démo FlaskR (voyez la partie 6 pour l'installation de flaskR chez PythonAnywhere).

Nous avons été conquis par l'offre et le service disponible... la limpidité de l'interface et la doc en ligne nous ont permis de mettre FlaskR en ligne dans difficulté et sans recours au support.
Une telle offre de service aurait du mérité d'être plus largement connue.

Si vous avez besoin d'héberger une solution Python, PythonAnywhere sera certainement une solution de choix d'autant que les prix restent très abordables.

Offres tarifaires de PythonAnywhere


Il est d'ailleurs facile de se faire une idée en ouvrant un compte débutant (gratuit) comme indiqué ci-dessous.

Comment ouvrir un compte d’essai
Le compte d'essai s'appelle "beginner account" (textuellement: Compte débutant)

Vous pouvez le créer en passant par cette page d’accueil de PythonAnywhere
Page d'accueil de PythonAnywhere

demander la création d'un compte débutant
Cliquer sur Bouton [Create Beginner Account]
Remplissez les informations nécessaire à la création de votre compte.
Attendez l'envoi de l'email pour confirmer votre compte.


Ressources
Tous les articles de ce tutoriel
Ce tutoriel est divisé en plusieurs parties... vous pouvez y accéder facilement grâce au liens suivants: