Serveur Web sur Orange 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.
  • Orange PI: dans la famille des nano-ordinateurs, il y a le très connu « Raspberry Pi » mais ici j’utilise un « Orange Pi » tout aussi puissant à un coût plus intéressant en l’achetant directement en chine.

Choix de l’Orange PI

En allant sur le site d’Orange Pi vous trouverez une multitude de cartes. Le serveur proposé peut tourner sur la plus simple d’entre elles, l’Orange Pi Zéro. Pour pas beaucoup plus chère, on peut choisir une carte avec un processeur H5 ou H6 et un Ethernet à 1Gb/s si l’on dispose d’un réseau adéquat et d’une fibre optique en entrée/sortie. Ici disposant d’un Orange PI PC2 H5, je vais utiliser cette carte. L’orange Pi One Plus H6 est également une bonne solution.

Armbian – Système d’exploitation

Les processeurs des Orange Pi étant utilisés pour des tablettes, on trouve plusieurs système d’exploitation comme Android, ArmBian… Dans notre cas on choisi Armbian Buster (Janvier 2021) que l’on trouve sur le site https://www.armbian.com/ dans la section « download ». Cette version est adaptée de Linux / Debian pour les processeurs de la famille ARM.

Le fichier telechargé est compressé ( extension .xz) . Utiliser un décompresseur comme 7zip pour extraire le fichier image .img qu’il faut installer sur une carte mémoire microSD de 32 ou 64Go.

Adressage IP

  • Branchez la carte au réseau avec un câble ethernet et mettre sous-tension.
  • Allez sur sa box ou un logiciel de gestion réseau pour trouver l’adresse IP attribuée.
  • Connectez vous en ssh (logiciel Bitwise ssh client ou autre) pour le première fois avec l’username « root » et le mot de passe « 1234 »
  • Répondez aux questions pour définir un utilisateur, mot de passe etc…
  • Mettez à jour votre distribution:
    • « apt-get update » ou « sudo apt-get update » si vous n’êtes pas en root
    • « apt-get upgrade » ou « sudo apt-get upgrade »

Si vous souhaitez mettre des compléments à votre système comme:
– Samba: pour accéder directement aux fichier depuis un PC sous windows
– VNC: pour avoir une interface graphique sur un PC distant
vous trouverez les explications dans cet article.

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 Orange 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