Arch Linux : Installer un serveur LAMP
Table des matières
LAMP est un acronyme :
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.
Premièrement, on met à jour notre système :
Dans un premier temps, on installe le serveur Web Apache :
On active et démarre le service :
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 :
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) :
Sous Arch, on doit paramétrer beaucoup d'éléments à la main. Activons les modules proxy et FastCGI :
Décommenter les lignes :
A la fin du fichier, ajouter une référence à notre fichier de configuration de php-fpm :
Créons notre fichier de config. Il indiquera à Apache de contacter php-fpm si une page PHP est appelée :
On active et démarre le service associé :
On redémarre notre serveur web pour prendre en compte la configuration précédemment modifiée :
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) :
Si vous avez besoin demodules supplémentaires, voici comment rechercher ce qui est disponible dans les dépôts :
On installe le moteur de base de données MariaDB :
Comme avec PHP, de la configuration manuelle est nécessaire.
Installons la base de données de base via :
On peut enfin activer et démarrer le moteur de base de données :
Puis procéder à l'initialisation de celui-ci :
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 :
Décommenter les lignes permettant d'activer les extensions associées :
Puis on redémarre php-fpm :
Pour tester le bon fonctionnement, je vous propose une simple page PHP à créer :
On mettra ceci dedans, pour interroger notre base de données et afficher la liste des comptes créés :
Pour plus d'infos, sur la syntaxe PHP : https://www.linuxtricks.fr/wiki/php-exemples-avec-pdo-pour-interroger-une-base-mariadb
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
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