
Article générique donnant le principe pour mettre en place un serveur Web sur Raspberry, ou autre machine Linux avec Flask qui est un framework de développement web en Python.
Il en existe d’autres, le plus connu d’entre eux est Django.
Mais Flask a l’avantage d’être simple, et de permettre facilement la création d’un site web à usage principalement privé.
Cette artcile est basé mais l’excellent article sur de Flask de Miguel Grinberg Les exemples de cet article sont basés sur le site
Prérequis
Le choix ci-dessous s’est concentré sur Raspberry, mais peut être applicable à Ubuntu
Vim
Sous Raspberry nous pouvons utiliser nano pour éditer des fichiers, mais je conseille vim
sudo apt-get install vim
Afin de se familiariser avec vim, je conseille le tutoriel en ligne qui se lance avec :
vimtutor
Python 3
Installation
Pyhton 3 est installé sur Raspberry
Afin de pouvoir installé d’autres packages, il nous faut installer pip.
pip est un gestionnaire de paquets utilisé pour installer et gérer des paquets écrits en Python.
pip est un acronyme qui correspond à la fois à « Pip Installs Packages » ou à « Pip Installs Python »
sudo apt install python3-pip Vérification pip3 --version
pip3 fonctionne toujours sur l’environnement Python3 uniquement,
pip fonctionne sur n’importe quel environnement approprié au contexte.
Par exemple, si vous êtes dans un venv Python3, pip fonctionnera sur l’environnement Python3.
Environnement virtuel Python
Installation venv
Les programmes Python utilisent souvent des paquets et modules qui ne font pas partie de la bibliothèque standard.
D’autre part, la création d’un environnement permet de s’isoler et travailler sans perturber l’installation par défaut.
Le module utilisé pour créer et gérer des environnements virtuels s’appelle venv.
#Installation de venv sudo apt-get install python3-venv
Création de l’environement
mkdir flaskr cd flaskr python3 -m venv venv --> va créer un répertoire venv au niveau du répertoire courant
Généralités
#Préparation du répertoire mkdir -p /project1 #Création de l'environnement python3 -m venv /project1/venv #Activation de l'environnement source ~/virtualenvs/project1/venv/bin/activate # Chemin de notre interpréteur Python (project1) which python # Installer un module, le mettre à jour (project1) pip install [module] # Supprimer un module (project1) pip uninstall [module] # Lister le contenu de notre environnement (project1) pip freeze # sauvegarde de l'environnement dans l'objectif de partage (project1) pip freeze > requirements.txt # Tip : Pensez à mettre à jour pip lui-même de temps en temps : (project1) pip install --upgrade pip #Et pour sortir de l'environnement : (project1) deactivate
Activation sous emacs
Pour rappel il est également possible d’activer l’environnement de développement sous emacs

Installation du framework Flask
Dans l’environnement de développement activé
Nous installons Flask qui est un framework de développement web en Python.
# Installer un module flask pip install flask
L’intérêt réside dans le fait de pouvoir utiliser des templates
The Jinja2 template engine uses the following delimiters for escaping from HTML. {% ... %} for Statements {{ ... }} for Expressions to print to the template output {# ... #} for Comments not included in the template output # ... ## for Line Statements
Exemple basique
exemple.py
from flask import Flask
from jinja2 import Template
app = Flask(__name__)
# -----------------------------------------------------------
# O
# -----------------------------------------------------------
@app.route('/0')
def index0():
return " Hello"
# -----------------------------------------------------------
# 1
# -----------------------------------------------------------
@app.route('/1')
def index1():
return " \
<h1>Tilte 1</h1> \
<a href=\"/0\"> Hello </a> \
<h2>Title 2</h2> \
"
# -----------------------------------------------------------
# 2
# -----------------------------------------------------------
template2 = Template("Hello {{ name }}!")
@app.route('/2')
def index2():
return template2.render(name='John Doe')
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8080, debug=True)
Le Lancement du Serveur WEB se fait à travers
python exemple.py Serving Flask app "web" (lazy loading) Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. Debug mode: on Running on http://0.0.0.0:8080/ (Press CTRL+C to quit) Restarting with stat Debugger is active! Debugger PIN: 213-589-677
L’interface WEB étant accessible à travers : http://localhost:8080/
Développement
Dans le cadre de développement d’une application, il est conseillé d’avoir une approche plus professionnelle, pour ce faire nous pouvons se baser sur les exemples données
Exécution au démarrage
Afin de pouvoir exécuter le script Python au démarrage, il faut créer le script shell : run-orpic.sh
Script à rendre exécutable avec:
chmod +x run-orpic.sh
vi run-orpic.sh
!/bin/bash source /home/pi/Orpic/.venv/bin/activate python /home/pi/Orpic/src/web.py &
Ce script est ensuite lancé au démarrage de Raspberry en insérant l’exécution de ce script juste avant « exit 0 » du : rc.local
sudo vi /etc/rc.local
....... ....... # Run Orpic /home/pi/Orpic/run-orpic.sh exit 0