Comment créer votre propre serveur de développement Python avec Raspberry Pi

En termes simples, Raspberry Pi est un ordinateur basé sur Linux très bon marché (40 $). C'est ça. Sérieusement.

Il peut faire tout ce que vous pouvez imaginer qu'un ordinateur Linux normal peut faire, comme naviguer sur le Web, écrire du code, modifier des documents et se connecter à des périphériques d'E / S tels qu'une clé USB, une souris, un clavier, etc. Ce didacticiel se concentrera sur apprendre à créer votre propre serveur de développement Python avec Raspberry Pi.

Étape 0. Définissez l'objectif

Avant de commencer, il est important de comprendre ce que nous essayons de construire. À la fin du didacticiel, vous serez en mesure d'exécuter un site Web de base (en utilisant Flask) à partir d'un Raspberry Pi sur votre réseau domestique local.

Le but de ce tutoriel est de démontrer comment un Pi peut être utilisé comme serveur de développement, plus précisément, l'exemple sera d'héberger un site Web simple (en utilisant Flask).

Étape 1. Énoncez les hypothèses

Voici quelques hypothèses que ce tutoriel fera:

  1. Vous avez déjà un Raspberry Pi configuré avec le système d'exploitation Raspbian. Voici un guide de configuration utile si vous en avez besoin.
  2. Le Pi est connecté à votre WiFi domestique (et que vous connaissez l'adresse IP du Pi).
  3. Vous n'aurez pas besoin d'un écran à l'avenir. en supposant que les points 1 et 2 sont complets.

Nous utiliserons VS Code avec l'extension Remote VSCode pour créer et modifier à distance des fichiers sur le Pi. Je vous recommande vivement d'utiliser ces deux pour suivre. En outre, cela facilitera beaucoup le travail avec des fichiers distants, c'est donc un plus.

Étape 2. Trouvez l'adresse IP du Pi

Tout d'abord, connectez le Pi à une alimentation et assurez-vous qu'il est correctement démarré et connecté au WiFi / Ethernet (en gros, il doit avoir une connexion Internet).

Nous utiliserons ssh pour nous connecter et communiquer avec le Pi. Pour ce faire à distance à l'aide d'un ordinateur portable, vous devez connaître son adresse IP. Cela peut être facilement obtenu en utilisant le portail d'administration de votre FAI (généralement disponible à l'adresse //192.168.0.1. Veuillez noter que cela peut être différent pour différents FAI.)

Habituellement, vous devriez avoir votre Pi connecté à une adresse qui peut ressembler à «192.168.0.12». Encore une fois, ce sera différent pour différentes personnes. Veuillez donc utiliser l'adresse IP que vous avez trouvée pour votre Pi dans le portail d'administration. À l'avenir, ce tutoriel utilisera 192.168.0.12 comme adresse IP du Pi.

Étape 3. Connectez-vous au Pi en utilisant ssh

Ouvrez VS Code et sa fenêtre de terminal intégrée sur votre ordinateur portable. Connectez-vous au Pi avec une adresse IP de 192.188.0.12 à l'aide de la commande ssh suivante:

ssh -R 52698: hôte local: 52698 [email protected]

La commande ci-dessus configurera un canal de communication bidirectionnel entre votre ordinateur portable et le Pi. Si c'est la première fois que vous vous connectez au Pi, utilisez raspberry comme mot de passe. Vous pouvez être invité à modifier votre mot de passe par défaut. Il est fortement recommandé de le faire.

Étape 4. Créez un répertoire de projet

Vous devriez maintenant être dans le répertoire personnel du Pi. Créons un répertoire pour le site Web que nous souhaitons créer. Utilisez la commande suivante pour créer le répertoire:

mkdir MyFlaskWebsite

Utilisez la commande 'ls' pour vérifier que vous pouvez bien voir un nouveau dossier nommé MyFlaskWebsite.

Étape 5. Installez Flask

Nous utiliserons Flask pour créer un site Web simple. Flask est un micro-framework Web basé sur Python. Il utilise Jinja (moteur de modèle basé sur Python) comme moteur de modèle, ce qui le rend très utilisable et puissant. Utilisez la commande suivante pour installer flask sur le Pi:

sudo apt-get installer python3-flask

Étape 6. Écrivez un code de base

Maintenant que Flask est installé, nous pouvons commencer à créer des fichiers et à écrire du code. Tout d'abord, accédez au répertoire de votre projet nouvellement créé (à partir de l'étape 4) à l'aide de la commande suivante:

cd MyFlaskWebsite

Tous les fichiers et dossiers du projet résideront dans ce répertoire «MyFlaskWebsite». Maintenant, créez votre premier fichier de code (app.py) à l'aide de la commande suivante:

touchez app.py

En vérifiant le répertoire à l'aide de la commande 'ls', vous devriez pouvoir voir ce fichier nouvellement créé.

Maintenant, appuyez sur F1 et choisissez «Serveur de démarrage à distance». Cela devrait vous permettre de modifier à distance des fichiers sur le Pi à l'aide de votre ordinateur portable.

Ensuite, utilisez la commande suivante pour commencer à modifier le fichier app.py nouvellement créé. Cela peut prendre quelques secondes mais le fichier vide devrait alors être visible dans la fenêtre juste au-dessus.

rmate app.py

Tapez le code indiqué dans l'image ci-dessous. Ici, nous avons défini un itinéraire vers la page d'accueil du site Web qui devrait afficher "Ceci est mon site Web flask et c'est tellement cool." Notez que définir l'hôte sur 0.0.0.0 permet à ce site Web d'être accessible par tous les appareils connectés au même réseau.

Enregistrez le fichier et utilisez la commande suivante pour exécuter le site Web sur le serveur Pi:

python3 app.py

À la réception du message de réussite ci-dessus, ouvrez une nouvelle fenêtre de navigateur sur n'importe quel appareil de votre réseau et saisissez l'adresse IP du Pi (dans ce cas, il s'agit de 192.168.0.12), suivie du port sur lequel le serveur de développement s'exécute (5000. ) L'adresse complète sera donc //192.168.0.12:5000/

Vous devriez voir le texte "Ceci est mon site Web flask et c'est tellement cool." sur la page Web.

Cela confirme que votre serveur de développement est actif et exécute le site Web que vous venez de créer.

Étape 7. Ajouter d'autres itinéraires

Actuellement, le code se compose d'un seul itinéraire qui est la page d'accueil du site Web. Ajoutez une autre route en tapant le code suivant. Notez que vous pouvez apporter des modifications de manière dynamique pendant l'exécution du serveur de développement. Il capturera automatiquement le delta (changement de code) et exécutera une version révisée une fois que vous aurez actualisé la fenêtre de votre navigateur.

Pour vérifier si le nouvel itinéraire fonctionne ou non comme prévu, accédez à //192.168.0.12:5000/meow et la page Web devrait vous «MEOW».

Étape 8. Ajoutez une structure à votre code

Maintenant, ajouter plus de routes est cool, mais avoir tout le code dans un seul fichier app.py n'est pas la façon dont un site Web devrait être structuré. Habituellement, nous aurions un dossier avec des modèles HTML, un dossier avec des fichiers CSS statiques et un autre pour les fichiers JS. Ajoutons ces dossiers et déplaçons le code dans les dossiers appropriés pour mieux structurer le code. Utilisez les commandes suivantes pour créer ces répertoires:

modèles mkdir mkdir statique

Utilisez la commande 'ls' pour vérifier que ces dossiers ont été créés.

Maintenant, créons un fichier HTML pour la page d'accueil. Utilisez les commandes suivantes pour accéder au répertoire des modèles. Ensuite, créez un nouveau fichier nommé index.html et utilisez rmate pour le modifier:

modèles de cd touch index.html rmate index.html

Écrivez du code HTML de base pour la page d'accueil dans index.html.

Apportez les modifications suivantes dans app.py pour utiliser le fichier index.html. Le code ci-dessous recherchera un fichier nommé index.html dans le répertoire des modèles par défaut.

Revenez au répertoire du projet et réexécutez le site Web.

Revenez à la page d'accueil et vous devriez voir le contenu que vous avez mis à l'intérieur de index.html.

Ajoutez maintenant du style en créant «main.css» dans le répertoire statique. Comme toujours, utilisez la commande 'cd' pour changer de répertoire, la commande 'touch' pour créer un nouveau fichier et la commande 'rmate' pour éditer le même fichier.

Ajoutez du style à la balise h4. Notez que nous avons actuellement 1 balise h4 dans index.html que le css est censé modifier.

Comme toujours, testez vos modifications à l'aide de la commande suivante:

python3 app.py

Notez comment le texte dans la balise h4 est coloré selon le CSS.

Étape 9. Profitez de Jinja

Jinja dans un moteur de modèle basé sur Python qui ajoute de nombreuses fonctionnalités puissantes aux pages Web. Bien que ce didacticiel ne soit pas axé sur l'apprentissage de Jinja, examinons simplement un exemple simple de la façon dont Jinja peut être utile.

Créons simplement une liste de fruits dans app.py et passons-la en paramètre à index.html. Nous aurons alors index.html afficher cette liste sur la page Web. Apportez les modifications suivantes dans app.py et index.html.

Actualisez votre page Web et vous devriez voir la liste des fruits à l'écran.

Cela montre à quel point Jinja peut être puissant et utile. Pour plus d'informations sur Jinja, veuillez vous référer à ceci.

Étape 10. Prochaines étapes

Maintenant que vous avez un serveur de développement Python entièrement fonctionnel, les possibilités pour l'avenir sont pratiquement infinies. Voici quelques prochaines étapes utiles que vous pouvez envisager pour votre projet:

  1. Actuellement, le Pi n'est accessible que via les appareils de votre réseau personnel. Pour exposer le Pi au monde extérieur (y accéder via n'importe quel appareil en dehors de votre réseau personnel), vous avez besoin de quelque chose appelé la redirection de port. Fondamentalement, vous avez besoin d'un nom de domaine et d'une adresse IP statique qui sont attribués en permanence au Pi. Plus d'infos ici et ici.
  2. La plupart des applications nécessitent une base de données pour les opérations CRUD de base. Python prend en charge SQlite dès la sortie de la boîte. Apprenez à utiliser SQlite avec Flask ici et ici.
  3. Voici un kit de démarrage Raspberry Pi cool sur Amazon. La chose intéressante à ce sujet est qu'il contient tout ce dont vous avez besoin pour commencer et vous évite de rechercher vous-même des éléments individuels.
  4. Puisque vous n'utilisez pas d'écran, il est important que vous utilisiez la commande d'arrêt pour le Pi utilisant le terminal. Cela garantit que le Pi et la carte SD ne sont pas endommagés:
sudo shutdown -h maintenant

#Jusqu'à la prochaine fois.