Installation (sans écran) d'un serveur web sur une Raspberry Pi
Jusqu'ici, nous avions vu comment installer un serveur web sur son Mac, que ce soit avec les logiciels intégrés ou via Homebrew. Mais avoir son serveur web à l'extérieur de son Mac peut aussi avoir des avantages, en particulier dès que l'on souhaite publier ses sites web sur Internet.
Installer un serveur web sur une Raspberry Pi devient alors la solution la plus simple. Pour très peut cher, on se retrouve avec une solution suffisamment performante pour gérer plusieurs milliers de connexions par jour. De plus avec le terminal intégré à macOS, il est très facile de configurer et gérer sa Raspberry Pi.
Voici un petit guide pour monter votre serveur web sur une Raspberry Pi en mode headless, c'est à dire, sans brancher aucun écran dessus. Pour cela vous aurez besoin d'une Raspberry Pi complète (Carte mère + boitier + alimentation), d'une carte micro SD et d'un lecteur pour votre Mac, et d'un cable éthernet.
Depuis la Raspberry Pi 3, ces micro-ordinateurs sont devenus suffisamment performant pour travailler dessus de manière fluide et confortable. Favorisez donc un modèle 3 ou 4, cependant, cela fonctionne aussi sur les modèles 1 et 2, mais vous ressentirez pas mal de lenteur.
1/ Installation du système
Le plus simple pour installer un serveur web est d'utiliser la distribution officielle de Raspberry. Comme vu dans ce précédent article, récupérez la dernière version de Raspberry Pi Imager. Une fois l'application lancée, cliquez sur Choisissez l'OS (Choose OS), et choisissez la version souhaitée du système. Si vous souhaitez pouvoir accéder avec une interface graphique à votre Pi, choisissez le premier système, recommandé pour la majorité des tâches. Sinon, choisissez Raspberry Pi OS (other), puis Raspberry Pi OS Lite. Elle est deux fois plus légère et ne dispose pas d'accès graphique, ce qui pour un serveur web est largement suffisant.
Brancher la carte SD sur votre Mac. Veillez à ne pas laisser d'informations importantes dessus, car ces dernières seront définitivement effacées. Cliquez sur le bouton Choisissez le stockage (Choose SD Card), et choisissez la carte que vous venez de brancher. Il n'y a plus qu'à cliquer sur Ecrire (Write) pour lancer l'installation du système.
En quelques minutes la carte devrait être écrite. Une fois que c'est fait, débranchez et rebrancher la carte. Pourquoi ? Tout simplement parce qu'en l'état le système n'autorise pas l'accès à distance, par sécurité.
Une fois la carte disponible via Finder de macOS, ouvrez TextEdit. Dans le menu Format, sélectionnez Convertir au format Texte. Puis enregistrer le fichier vide, en le nommant ssh, à la racine du sytème de la Pi. Ejectez proprement la carte SD.
Insérez la carte dans la Pi, branchez le cable éthernet à votre box, ou à un switch de votre réseau local. Enfin, démarrez la Pi en connectant le cable d'alimentation.
2/ Première connexion
En quelques secondes, la Pi devrait avoir démarré, en utilisant le serveur DHCP de votre réseau local, qu'il s'agisse de votre box ou d'un serveur DHCP. Elle devrait avoir donc pris une adresse de votre réseau local, mais laquelle ?
Soit votre box ou serveur DHCP vous indique les appareils ayant fait une requête et il faut tout simplement prendre la dernière, soit il faut faire une petite recherche sur votre réseau.
Pour cela, il y a plusieurs moyens, nous vous avons récemment parlé de nmap et ce n'est pas pour rien. Sinon, vous pouvez aussi lancer un ping sur l'ensemble de votre réseau local. Ainsi si votre réseau est en 192.168.0.xxx, tapez dans votre terminal :
ping 192.168.1.255
Toutes les machines du réseau vont répondre au ping, et il ne restera plus qu'à faire le tri des appareils que vous connaissez pour trouver la Pi.
Une fois que vous avez son adresse, vous n'avez plus qu'à vous y connecter depuis le terminal de votre Mac, via SSH.
ssh pi@192.168.0.xxx
La Raspberry va alors vous demander le mot de passe du compte pi, qui par défaut, est raspberry.
Ensuite vous devriez être connecté. Par défaut, le compte pi dispose des accès pour sudo, et est donc capable de tout modifier sur le micro-ordinateur. Attention donc à ne pas faire de commandes à la légère ou dont vous ne connaissez pas l'issue. Et si cela devrait se passer, au pire, il suffit de retirer la carte SD de la Pi, l'effacer et remettre le système par défaut, et tout recommencer.
3/ Premières actions
La première chose à faire est de mettre à jour le système Raspbian, avec les commandes
sudo apt-get update
puis
sudo apt-get upgrade
Ensuite, il est nécessaire de renforcer la sécurité de la Raspberry Pi en changeant le mot de passe du compte pi
sudo passwd pi
ou en créant un autre compte. Pour ma j'opte toujours pour cette seconde solution, et en supprimant le compte pi, après m'être assuré que le nouveau compte dispose de tous les accès nécessaire. Voici comment créer un compte nommé sky, n'oubliez pas d'indiquer le nom que vous souhaitez pour le compte, et de le changer dans l'ensemble des commandes qui suivent
sudo useradd -m sky
puis, nous indiquons un mot de passe pour le compte, comme vu précédemment avec le compte pi
sudo passwd sky
Ensuite, à ne surtout pas oublier, il faut mettre le compte sky dans les sudoers, pour pouvoir exécuter des actions en tant que root.
sudo usermod -a -G sudo sky
Pour vérifier que l'action est bien passée, vous pouvez vérifier les groupes de votre compte
groups sky
Maintenant, seconde vérification, il suffit d'utiliser le compte pour voir si le mot de passe fonctionne
su sky
Si cela ne fonctionne pas, le mot de passe est certainement faux, essayez de le mettre à jour sur le compte à nouveau, ou vous avez laissé un "sky" trainer dans l'une des précédentes commandes, et il faut trouver laquelle en remontant dans l'historique.
Sinon, une fois dans votre compte, tapez
sudo ls
L'ordinateur devrait vous répondre le message suivant, la première fois que vous utilisez sudo sur un compte
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
Maintenant, vous pouvez vous déconnecter une première fois pour sortir du compte nouvellement créé
exit
puis une seconde fois pour sortir du compte pi, et donc fermer la connexion
exit
Il ne vous reste plus qu'à vous reconnecter en direct avec votre compte
ssh sky@192.168.0.xxx
Votre compte fonctionnant parfaitement, vous pouvez désactiver l'utilisateur pi
sudo usermod -L pi
4/ Configuration système
Les bases de la sécurité étant posées, nous pouvons continuer à configurer notre Raspberry Pi, à commencer par lui indiquer un nom, dans l'exemple suivant, elle s'appelera maPi, à vous de lui trouver le nom que vous souhaitez.
sudo hostnamectl set-hostname maPi
Vous pouvez vérifier que la commande est correctement passée avec
hostnamectl status
Ensuite, vous pouvez mettre à jour le fuseau horaire afin que la date soit correcte. Le fuseau de Paris est fuseau CET (Central European Time) ou UTC+1
sudo timedatectl set-timezone Europe/Paris
si vous ne souhaitez pas ce fuseau, vous pouvez chercher le plus approprié via la liste disponible dans la Pi
timedatectl list-timezones
Il suffit ensuite de vérifier en demandant la date
date
5/ Installation du serveur web
Rentrons dans le vif du sujet, avec l'installation des services web. Pour ce guide nous allons installer le très classique combo : Apache httpd / PHP / MySQL. Contrairement au Mac qui dispose d'une version préinstallée, il est nécessaire de faire cela manuellement sur la Raspberry Pi. Cependant, ce sont des logiciels connus qui sont directement disponibles via le logiciel d'installation de Raspbian apt.
Et commençons par le serveur http
sudo apt-get install apache2
De nombreuses dépendances seront installées en même temps que le serveur web. Grâce à la puissance d'apt, nous n'avons rien d'autre à faire que valider.
Si vous souhaitez faire un site à l'ancienne, uniquement basé sur des fichiers HTML, sans intelligence, vous n'avez rien besoin de plus.
Ensuite, installons le logiciel de base de données. C'est désormais MariaDB qui est disponible dans les paquets de Debian, et donc, par extension, de Raspbian. MariaDB est un fork de MySQL créé par son propre développeur initial depuis que Sun a été racheté par Oracle. Le fonctionnement est identique, et le nom des applications en ligne de commande reste basée sur mysql.
sudo apt-get install mariadb-server
Comme pour httpd, les dépendances sont nombreuses, et le client mysql sera aussi installé.
Enfin, ajoutons le logiciel de script PHP. Il existe dans de nombreuses versions de PHP, plus ou moins récente.
Pour installer la dernière version disponible dans Raspbian, exécutez la commande
sudo apt-get install php
Lors des mises à jour, le système installera toujours la dernière version de PHP, et fera les changements majeurs de version qui peuvent potentiellement "casser" votre code.
Sinon, vous pouvez choisir d'installer une version fixe de PHP, mais pour cela il faudra la trouver
sudo apt-cache search php
vous affichera tous les paquets en relation avec PHP, et préparez vous parce qu'ils sont nombreux.
Pour voir plus d'information sur un paquet, par exemple le paquet php par défaut
sudo apt-cache show php
Ainsi vous saurez quelle version de PHP est installée, actuellement, dans le paquet.
Mais vous pouvez aussi obtenir des infos sur les nombreuses extensions disponibles.
Pour installer une version fixe, il faut prendre le nom exact du paquet, par exemple pour la version 7.4
sudo apt-get install php7.4
A noter que vous pouvez installer plusieurs versions de PHP, et switcher ensuite de l'une à l'autre, en modifiant la configuration du serveur web.
Maintenant, il est nécessaire d'ajouter les extensions de PHP dont vous pourriez avoir besoin, en commençant par le connecteur à la base de données
sudo apt-get install php-mysql
ou
sudo apt-get install php7.4-mysql
selon la version de PHP installée.
Vous n'avez plus qu'à installer les autres paquets de la même manière.
Pour trouver les extensions propres à votre version de PHP, vous pouvez utilisez la commande
sudo apt-cache search php7.4-
Pour CaMykS, je dois installer
sudo apt-get install php7.4-mbstring
sudo apt-get install php7.4-curl
sudo apt-get install php7.4-gd
sudo apt-get install php7.4-json
sudo apt-get install php7.4-sqlite3
sudo apt-get install php7.4-zip
ou en une seule commande
sudo apt-get install php7.4-mbstring php7.4-curl php7.4-gd php7.4-json php7.4-sqlite3 php7.4-zip
6/ Configuration du serveur web
Les configurations sont nombreuses et variées, et dépendent des besoins de vos applications web, il n'est pas possible d'indiquer UNE configuration ultime.
La configuration se fait principalement à 2 niveaux, sur le serveur httpd et sur PHP.
Les deux sont distincts et ne permettent pas les mêmes choses. Il faut donc réfléchir un tout petit peur pou savoir lequel doit être modifié pour réaliser mon action.
La configuration de PHP se fait via le fichier php.ini destiné à Apache2
sudo nano /etc/php/7.4/apache2/php.ini
pensez à modifier le numéro de version pour suivre votre version de PHP. A noter qu'avec l'utilisation du paquet par défaut de PHP, à chaque changement majeur, il faudra certainement refaire la configuration. Et si vous souhaitez avoir plusieurs versions de PHP, il faut bien faire les configurations dans toutes ces versions.
Des configurations additionnelles sont disponibles dans le dossier conf.d
sudo ls -l /etc/php/7.4/apache2/conf.d
pour en voir la liste.
De son côté, la configuration d'Apache est à cet endroit
/etc/apache2/apache2.conf
Quelques éléments de configuration sont directement accessibles via des applications connexes, comme l'activation des modules. Par exemple, pour CaMykS
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod expires
7/ Accès aux données du serveur web
Et voila, votre serveur web est configuré sur une Raspberry Pi toute neuve. Vous pouvez ajouter vos fichiers à la racine du serveur web
/var/www
Vous pouvez scp vos fichiers depuis votre Mac vers le serveur. Afin de faciliter la chose, je vous montrerai dans un autre article comment monter un volume depuis la Mac sur la Pi ou peut être l'inverse, voir les deux, afin de permettre l'édition directement depuis votre Mac sans avoir à transférer les fichiers à chaque modification.
Pour accéder aux données des bases de données, il suffit de se connecter à MariaDB une fois connecté à votre compte sur la Pi
sudo mysql
Vous pouvez bien évidemment activer les accès à distance pour vous y connecter directement depuis un terminal du Mac.
Enfin, comme il s'agit d'un serveur web, vous pouvez accéder aux pages par son url, depuis votre navigateur favori
http://192.168.0.xxx
Et voilà, vous avez la base d'un petit serveur web, redoutablement efficace dans cette tâche. Qu'il s'agisse de développement avant mise en ligne sur internet ou pour développer quelques pages pour la maison, la Raspberry Pi est largement suffisante pour répondre à ces demandes.
Retrouver tous les composants pour monter votre Raspberry Pi 4 sur Amazon (liens sponsorisés) :