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:

Info 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

F1ATB André

Radio Amateur - Domotique - Photovoltaïque

Vous aimerez aussi...