Autres distribs Linux

Arch : 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.

Code BASH :
pacman-key --init
pacman-key --populate archlinux


Et de décommenter un miroir dans mon installation :

Code BASH :
nano /etc/pacman.d/mirrorlist


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

Code BASH :
pacman -Syyu


Serveur Web



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

Code BASH :
pacman -S apache 


On active et démarre le service :

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

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

Code BASH :
pacman -S php-fpm


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

Code BASH :
nano /etc/httpd/conf/httpd.conf


Décommenter les lignes :

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

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

Code BASH :
nano /etc/httpd/conf/extra/php-fpm.conf



Code 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é :

Code BASH :
systemctl enable --now php-fpm


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

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

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

Code BASH :
pacman -Ss php-


Moteur de base de données MariaDB



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

Code BASH :
pacman -S mariadb


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

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

Code BASH :
systemctl enable --now mariadb


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

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

Code BASH :
nano /etc/php/php.ini


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

Code BASH :
extension=pdo_mysql
extension=mysqli


Puis on redémarre php-fpm :

Code BASH :
systemctl restart php-fpm


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

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

Code 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 842 fois