Admin/Dev

26
Févr.
2022

Installation (sans écran) d'un serveur web sur une Raspberry Pi

Publié par sky

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) :

 
 
Commentaires
Aucun commentaire pour le moment.

 

Poster un commentaire
En postant sur skymac.org, je m'engage à être courtois et à ce que mon message soit pertinent avec le sujet de l'article.
En outre, j'accepte, sans condition, que mon message soit refusé et supprimé si ces règles ne sont pas appliquées.
Ouvrir le panneau de gestion des cookies
Fermer le panneau
Ce site utilise des cookies pour assurer son bon fonctionnement. Il utilise aussi des cookies issues de services tiers permettant de proposer des fonctionnalités avancées. À tout moment, vous pouvez choisir quels services vous souhaitez activer ou refuser, afin de retirer votre consentement quant à l'utilisation des cookies.
 
Personnalisation des services
Vous êtes libre de choisir quels services vous souhaitez activer. En autorisant ces services tiers, vous acceptez le dépôt et la lecture de cookies et l'utilisation de technologies de suivi nécessaires à leur bon fonctionnement. En retirant votre consentement pour certains de ces services, certaines fonctionnalités du site peuvent ne plus fonctionner.
Navigation du site  En savoir plus
Le site écrit un cookie de session permettant son bon fonctionnement et aidant à la navigation. Il ne peut être désactivé.
Utilisation : 1 cookie, enregistre l'identifiant de la session.
Durée de vie : Le cookie est présent pendant toute la session sur le site. Il devient obsolète après 24 minutes d'inactivité.
Obligatoire
Popup Média
Afficher des vidéos depuis Yoube ou Dailymotion.
 
Tout accepter Tout refuser Gérer