Distributions Linux

Arch Linux : Installer un serveur LAMP

Table des matières

lamp_logo



Introduction



LAMP est un acronyme :
  • Linux : Le système d'exploitation
  • Apache : Le serveur Web
  • MySQL / MariaDB : Le serveur de Base de données
  • PHP : Le langage de script

Avec LAMP, on peut donc mettre en place un serveur Web, hébergeant un site web dynamique écrit en PHP, tout en allant chercher des données dans une base MySQL ou maintenant MariaDB, son fork.

Nous allons voir comment mettre cela en oeuvre sur Arch Linux.

Même si j'ai rédigé ce tuto pour un besoin particulier, je ne conseille évidemment pas d'utiliser un serveur Web sous Arch Linux.
Il n'y a aucune maîtrise de l'évolution de version de PHP, ni du serveur web.
Une "simple" mise à jour du système peut entraîner une mise à jour majeure d'un composant nécessitant une intervention manuelle supplémentaire dans les fichiers de configuration.

Prérequis



Ayant réalisé une installation dans un conteneur LXC et non sur un système installé depuis une ISO, j'ai du initialiser le gestionnaire de paquets pacman.

Copier vers le presse-papierCode BASH :
pacman-key --init
pacman-key --populate archlinux


Et de décommenter un miroir dans mon installation :

Copier vers le presse-papierCode BASH :
nano /etc/pacman.d/mirrorlist


Premièrement, on met à jour notre système :

Copier vers le presse-papierCode BASH :
pacman -Syyu


Serveur Web



Dans un premier temps, on installe le serveur Web Apache :

Copier vers le presse-papierCode BASH :
pacman -S apache 


On active et démarre le service :

Copier vers le presse-papierCode BASH :
systemctl enable --now httpd


On peut tester le bon fonctionnement : http://ip_du_serveur

On remarquera que par rapport à une base red hat ou Debian, pas de page par défaut mais une arborescence vide.

Les fichiers du serveur web sont dans un emplacement non standard : /srv/http vérifiable via :

Copier vers le presse-papierCode BASH :
grep DocumentRoot /etc/httpd/conf/httpd.conf


Interfacer PHP FPM



Sous Arch Linux, il y a plusieurs solutions pour installer PHP. On privilégiera l'installation et l'utilisation de php-fpm (comme j'ai l'habitude sur les base red hat) :

Copier vers le presse-papierCode BASH :
pacman -S php-fpm


Sous Arch, on doit paramétrer beaucoup d'éléments à la main. Activons les modules proxy et FastCGI :

Copier vers le presse-papierCode BASH :
nano /etc/httpd/conf/httpd.conf


Décommenter les lignes :

Copier vers le presse-papierCode BASH :
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so


A la fin du fichier, ajouter une référence à notre fichier de configuration de php-fpm :

Copier vers le presse-papierCode BASH :
Include conf/extra/php-fpm.conf


Créons notre fichier de config. Il indiquera à Apache de contacter php-fpm si une page PHP est appelée :

Copier vers le presse-papierCode BASH :
nano /etc/httpd/conf/extra/php-fpm.conf



Copier vers le presse-papierCode TEXT :
DirectoryIndex index.php index.html
<FilesMatch \.php$>
    SetHandler "proxy:unix:/run/php-fpm/php-fpm.sock|fcgi://localhost/"
</FilesMatch>


On active et démarre le service associé :

Copier vers le presse-papierCode BASH :
systemctl enable --now php-fpm


On redémarre notre serveur web pour prendre en compte la configuration précédemment modifiée :

Copier vers le presse-papierCode BASH :
systemctl restart httpd


On peut faire un petit test en générant une page info.php récapitulant toutes les informations de configuration de PHP (à supprimer par la suite) :

Copier vers le presse-papierCode BASH :
echo "<?php phpinfo(); ?>" > /srv/http/info.php


Si vous avez besoin demodules supplémentaires, voici comment rechercher ce qui est disponible dans les dépôts :

Copier vers le presse-papierCode BASH :
pacman -Ss php-


Moteur de base de données MariaDB



On installe le moteur de base de données MariaDB :

Copier vers le presse-papierCode BASH :
pacman -S mariadb


Comme avec PHP, de la configuration manuelle est nécessaire.
Installons la base de données de base via :

Copier vers le presse-papierCode BASH :
mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql


On peut enfin activer et démarrer le moteur de base de données :

Copier vers le presse-papierCode BASH :
systemctl enable --now mariadb


Puis procéder à l'initialisation de celui-ci :

Copier vers le presse-papierCode BASH :
mysql_secure_installation



PHP et MariaDB



Si on souhaite interroger notre base de données avec PHP, quelques manipulations supplémentaires sont nécessaires :

D'abord éditons le fichier de config de PHP :

Copier vers le presse-papierCode BASH :
nano /etc/php/php.ini


Décommenter les lignes permettant d'activer les extensions associées :

Copier vers le presse-papierCode BASH :
extension=pdo_mysql
extension=mysqli


Puis on redémarre php-fpm :

Copier vers le presse-papierCode BASH :
systemctl restart php-fpm


Pour tester le bon fonctionnement, je vous propose une simple page PHP à créer :

Copier vers le presse-papierCode BASH :
nano /srv/http/sql.php


On mettra ceci dedans, pour interroger notre base de données et afficher la liste des comptes créés :

Copier vers le presse-papierCode PHP :
<?php
$db="mysql";
$dbhost="localhost";
$dbport=3306;
$dbuser="root";
$dbpasswd="root";
$pdo = new PDO('mysql:host='.$dbhost.';port='.$dbport.';dbname='.$db.'', $dbuser, $dbpasswd);
$pdo->exec("SET CHARACTER SET utf8");
$stmt = $pdo->prepare("SELECT * FROM mysql.user");
$stmt->execute();
$res = $stmt->fetchAll();
foreach ( $res as $row ) {
    echo $row['User']."<br>";
}
?>


Pour plus d'infos, sur la syntaxe PHP : https://www.linuxtricks.fr/wiki/php-exemples-avec-pdo-pour-interroger-une-base-mariadb
Cette page a été vue 4842 fois