Serveur Web sur Raspberry Pi
Apache – PHP – MariaDB – phpMyAdmin
La puissance des nano-ordinateurs et la disponibilité de la fibre optique à la maison permettent la mise en place d’un serveur web personnel à usage privé, voire ouvert sur l’ensemble de la toile. La solution proposée ici est un grand classique répandu à des millions d’exemplaires dans le monde.
- Apache: dans sa version 2, le serveur internet le plus utilisé
- PHP: langage permettant de dynamiser le site en adaptant le contenu des pages web envoyées au contexte
- MariaDB: tout site internet avec du contenu a besoin d’une base de données. MariaDB est un clone open source de la célèbre base MySQL.
- phpMyAdmin: pour gérer le contenu de la base. phpMyAdmin rend la tâche beaucoup plus aisée.
- Raspberry PI: le plus connu des nano-ordinateurs en version 3,4 ou 5
Raspberry Pi OS – Système d’exploitation
Les Raspberry tournent à présent avec Raspberry PI OS un système d’exploitation proche de la famille Linux/Debian.
Installez sur votre PC le logiciel « Raspberry Pi Imager« . Avec lui, installez l’OS sur une carte SD d’au moins 32Go
Adressage IP
- Branchez un câble HDMI sur un écran
- Branchez un clavier et une sourie sur les ports USB
- Branchez la carte au réseau avec un câble ethernet et mettre sous-tension.
- Répondez aux questions pour définir un utilisateur, mot de passe etc…
- Laissez faire la mise à jour de l’OSM
En mode terminal tapez : raspi-config et allez sur Interface Options .
Activez les interfaces SSH et VNC.
Ainsi par la suite vous pourrez vous connecter à distance au Raspberry en SSH avec un logiciel comme Bitwise SSH ou VNC viewer depuis votre PC.
Installation du serveur web Apache 2
Apache2 est l’une des applications de serveur web les plus utilisées au monde, robuste et fiable. Elle tourne parfaitement sur des SBC (Single-Board Computer) comme les Raspberry Pi.
Installez Apache2:
apt install apache2 -y
rajoutez sudo si vous n’êtes pas en root
Une fois installé, tapez dans le champ d’adresse de votre navigateur préféré l’adresse IP du serveur. Ex: 192.168.0.100
En retour vous aurez la page d’accueil d’Apache confirmant ainsi le bon fonctionnement du serveur web.
Cette page se trouve dans le dossier : /var/www/html/
Ce fichier index.html peut être remplacé par le votre pour débuter avec votre nouveau serveur.
Installation de PHP
Pour dynamiser le contenu de votre site, il faut installer un langage comme php qui permettra de modifier le contenu de la page envoyée en fonction du contexte et ne pas se limiter à des pages statiques.
On procèdera à l’installation de 2 paquets:
apt install php libapache2-mod-php
Le premier installe le langage, le deuxième permet de faire le lien avec Apache pour insérer du contenu dynamique.
Une fois l’installation faite allez dans le dossier du serveur Apache où se trouve les pages de votre site.
cd /var/www/html
On va créer un petit fichier en langage php qui permettra de tester le couple Apache/Php
nano info.php
Mettez y:
<?php
phpinfo();
?>
Allez dans votre navigateur at appelez la page correspondante:
http://adresse_ip_serveur/info.php
En retour si tout fonctionne vous avez les infos sur php:
Installation de MariaDB
Pour un site web ayant du contenu, il faut une base de donnée. Initialement avec Apache et PHP on installait MySQL. A présent c’est la version Open Source MariaDB clone de Mysql qui s’installe.
apt install mariadb-server
Ensuite sécurisez le serveur MariaDB en créant un mot de passe root et en interdisant l’accès root à distance.
mysql_secure_installation
De nombreuses questions sont posées pour configurer MariaDB
In order to log into MariaDB to secure it, .... Enter current password for root (enter for none): Ne rien mettre Setting the root password ..... Set root password? [Y/n] Y New password: ***** Re-enter new password:***** Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y . Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y … Success!Installation should now be secure.
Testez que MariaDB est correctement installé.
mysql -u root -p
Profitez en pour créer un autre utilisateur non ‘root’ pour accéder à la base de données MariaDB.
MariaDB [(none)]> CREATE USER ‘uuuuuu’@’localhost’ IDENTIFIED BY ‘pppppp’;
Remplacez uuuuuu par un nom d’utilisateur et pppppp par un mot de passe.
Donnez lui temporairement tous les privilèges:
GRANT ALL PRIVILEGES ON *.* TO ‘uuuuuu‘@localhost IDENTIFIED BY ‘pppppp‘;
Par la suite, une fois votre système complètement configuré, pensez à limiter les privilèges.
Tapez exit pour sortir.
Installation de phpMyAdmin
Pour gérer la base de donnée, passer par les commandes en ligne, cela est fastidieux. Il est préférable d’installer un outil comme phpMyAdmin qui utilisera Apache et PHP pour fournir des pages web de gestion de la base.
apt install phpmyadmin
En cas d’erreur:..phpmyadmin : Depends: php-twig (>= 2.9) but 2.6.2-2 is to be installed….
aptitude -t buster-backports install php-twig
Puis reprenez l’installation.
Donnez le mot de passe de la base MariaDB de l’utilisateur créé plus haut.
Dans le fichier de configuration d’Apache il faut déclarer phpMyAdmin. Ouvrir le fichier
/etc/apache2/apache2.conf
En fin rajoutez la ligne:
Include /etc/phpmyadmin/apache.conf
Relancez Apache:
service apache2 restart
Dans votre navigateur rentrez http://IP_du_Serveur/phpmyadmin
Pour l’utilisateur et le mot de passe mettez uuuuuu et pppppp comme défini plus haut.
Virtual Host Apache
Il est possible sur un même serveur web de traiter plusieurs sites distincts. Les paramètres de configuration de chacun sont décrits dans un fichier .conf qui se trouve dans le dossier:
/etc/apache2/sites-available
En plus du fichier d’origine ‘000-default.conf’, vous pouvez rajouter les fichiers:
– site1.conf
– site2.conf
dans lesquels est défini la configuration.
<VirtualHost *:80>
ServerName site1.com
ServerAlias www.site1.com
ServerAdmin webmaster@site1.com
ErrorLog /var/log/apache2/site1-error_log
TransferLog /var/log/apache2/site1-access_log
DocumentRoot "/var/www/html/site1/"
<Directory "/var/www/html/site1/">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Pour activer le site:
a2ensite site1
Pour désactiver le site:
a2dissite site1
Pour redémarrer Apache:
service apache2 restart
Commentaires récents