Installer LAMP sur Manjaro
Ce guide résume les différentes étapes pour configurer un serveur LAMP sur Manjaro. Il s’adresse aux personnes souhaitant mettre en place un espace dédié au développement web sur leur ordinateur personnel. Si vous n’utilisez pas Manjaro ou si vous l’utilisez sur un serveur en production, ce guide n’est sans doute pas adapté à vos besoins.
Préambule
Il y a quelques années, lorsque j’ai voulu installer LAMP sur ma distribution, j’ai commencé par chercher des tutoriels et des wikis. Je voulais m’assurer de ne pas oublier une étape et surtout, mes connaissances en serveur étant encore limitées, je préférais ne pas faire d’erreur.
Le wiki d’Arch Linux est sans doute le plus complet, mais les informations sont — ou, du moins, étaient — un peu éparpillées pour ce que je cherchais à faire. J’ai donc décidé de rassembler ces informations et d’en faire un guide correspondant à mes besoins. Depuis, je le fais évoluer lorsque j’ai besoin de réinstaller LAMP.
La date de publication n’est pas exacte puisqu’une ancienne version de ce guide existait sur mon ancien site. Elle correspond à cette nouvelle version qui a été mise à jour.
Qu’est-ce que LAMP ?
LAMP est un acronyme pour « Linux Apache MySQL PHP ». Il s’agit d’un ensemble de logiciels permettant de mettre en place un serveur web.
- Linux désigne le système d’exploitation
- Apache correspond au serveur HTTP
- MySQL est un serveur de base de données
- PHP est un langage de programmation
Il existe différentes variantes pour mettre en place un serveur web. Voici quelques exemples :
- Linux peut être remplacé par Windows (WAMP) ou Mac (MAMP)
- Apache peut être remplacé par Nginx (LEMP)
- MySQL peut être remplacé par MariaDB ou PostgreSQL
- PHP peut être remplacé par Python ou Perl
Notre but
Dans ce guide, nous allons installer un serveur LAMP opérationnel avec quelques fonctionnalités supplémentaires :
- nous installerons et configurerons PHPMyAdmin pour gérer les bases de données,
- nous activerons HTTPS pour avoir un environnement semblable à celui utilisé en production,
- nous mettrons en place un dossier de travail dans notre « home »,
- nous désactiverons le dossier public de notre « home »,
- nous verrons comment créer des hôtes virtuels pour nos sites.
Au final, nous pourrons accéder à notre site dans un navigateur en saisissant https://www.projet.test/
où projet
est le nom du site. Les fichiers de notre projet seront situés dans un dossier de notre « home » (ici, ce sera /home/votreNom/votreDossierDeTravail
) et un lien symbolique dans /srv/http
permettra à Apache d’y accéder.
Avant de commencer
Prérequis
- Utiliser Manjaro : je n’ai pas testé mais, logiquement, Arch Linux et ses dérivées devraient également être compatibles avec ce guide.
- Supporter les ACL : certaines parties du guide utilisent les listes de contrôle d’accès pour gérer les droits d’accès.
Si vous utilisez une distribution qui n’est pas basée sur Arch Linux, les étapes décrites dans ce guide ne seront pas adaptées à vos besoins. Vous pouvez vous en inspirer mais soyez certains de comprendre ce qui est écrit et ce que vous faîtes.
Conseils
- Penser à adapter les commandes si nécessaire : par exemple, dans les commandes, j’utilise l’éditeur de texte
nano
parce qu’il est simple d’utilisation ; vous utilisez peut-être un autre éditeur. - Penser à remplacer les valeurs factices : certaines commandes et certains fichiers de configuration utilisent des valeurs factices (par exemple,
votreDossierDeTravail
ouprojet.test
), ces valeurs sont à remplacer avec vos propres données. - Comprendre la notation diff : pour éviter de créer deux blocs de code quasiment identiques, j’utilise la notation diff pour indiquer les lignes à supprimer et celles à ajouter.
- Ne pas se fier aux numéros de ligne : ces numéros sont donnés à titre d’indication pour que vous retrouviez plus facilement la bonne section mais ils peuvent être différents pour vous suivant la version installée, vos précédents changements ou encore si vous avez sauté certaines étapes de ce guide. La notation diff peut également poser problème puisque j’utilise uniquement CSS pour définir les numéros de ligne (si plusieurs lignes sont supprimées, les numéros de ligne qui suivent ne sont plus fiables).
Étape 1 : Installer LAMP
Installation des paquets
Sur Manjaro, nous installerons MariaDB comme serveur de base de données SQL ; il s’agit d’un dérivé de MySQL.
Pour commencer, nous installons les paquets nécessaires avec pacman
:
Lors de la rédaction du guide, les paquets étaient aux versions suivantes :
-
apache-2.4.62-1
-
mariadb-11.4.2-1
-
php-8.3.10-1
-
php-apache-8.3.10-1
Si certaines parties du guide vous semble différentes de ce que vous avez devant vous, c’est probablement dû à l’utilisation d’une autre version.
Configuration de MariaDB
Nous commençons par initialiser les tables :
Ensuite, nous démarrons le service MariaDB avec la commande suivante :
Finalement, nous allons sécuriser l’installation avec un script pré-installé :
Ce script va nous poser plusieurs questions pour nous aider. J’ai inclus les réponses à donner en tant que commentaire sous chaque question :
MariaDB est maintenant configuré. Il est possible de se connecter en root, de créer un nouvel utilisateur ou une nouvelle base de donnée. Comme nous allons utiliser PHPMyAdmin (voir l’étape 2), nous nous arrêtons là pour MariaDB.
Configuration de PHP
Il faut maintenant configurer PHP pour prendre en compte MariaDB. Éditons son fichier de configuration :
Nous devons dé-commenter les deux extensions liées à MySQL :
Vous pouvez sauvegarder et fermer le fichier.
Configuration d’Apache
Nous pouvons maintenant configurer Apache :
Le wiki d’Arch Linux nous précise qu’une librairie contenue dans le paquet php-apache
génère une erreur avec mod_mpm_event.so
. La documentation d’Apache explique que mod_mpm_prefork.so
permet une plus grande stabilité et une meilleure compatibilité avec les logiciels anciens en comparaison avec mod_mpm_event.so
.
Commençons par échanger ces deux modules :
Ensuite, pour gérer les redirections via htaccess, nous devons activer un autre module :
Puis, nous allons préciser le nom du serveur et le port à utiliser :
Finalement, il faut activer PHP. Pour cela, nous commençons par charger le module PHP :
Puis, à la fin du fichier, nous rajoutons :
Vous pouvez maintenant sauvegarder et fermer ce fichier. Vous pouvez démarrer le serveur Apache avec la commande suivante :
Le serveur LAMP est maintenant fonctionnel. Si vous accédez à http://localhost
dans un navigateur, vous devriez voir une page semblable à celle ci-dessous :
Toutefois, il nous reste encore quelques étapes pour atteindre notre but.
Étape 2 : Installer et configurer PHPMyAdmin
Commençons par installer le paquet :
Au moment de la rédaction du guide, la version utilisée était la suivante : phpmyadmin-5.2.1-1
.
Puis, créons un fichier de configuration Apache dédié à PHPMyAdmin :
Dans ce fichier, nous allons insérer les instructions suivantes pour indiquer à Apache où se trouvent les fichiers de PHPMyAdmin :
Vous pouvez sauvegarder et fermer ce fichier. Il faut maintenant éditer la configuration d’Apache pour inclure celle de PHPMyAdmin :
À la fin du fichier, nous ajoutons :
Vous pouvez sauvegarder et fermer ce fichier. Maintenant, nous devons configurer PHPMyAdmin lui-même. Pour pouvoir s’authentifier en utilisant des cookies, nous devons renseigner une clé pour blowfish_secret
.
Pour générer cette phrase de passe, vous pouvez utiliser openssl
par exemple :
Notez la sortie de la commande et poursuivons en éditant le fichier de configuration de PHPMyAdmin :
Nous allons utiliser notre phrase de passe dans la section suivante :
Il faut maintenant définir un dossier temporaire pour PHPMyAdmin :
Vous pouvez sauvegarder et fermer ce fichier. Puisque nous avons précédemment modifier la configuration d’Apache, nous devons redémarrer le service :
PHPMyAdmin est maintenant disponible à l’URL http://localhost/phpmyadmin
. Dans votre navigateur, vous devriez voir la page suivante :
Pour vous connecter en tant que « root », il faut que vous réutilisiez le mot de passe défini lors de la configuration de MariaDB. Il ne vous restera plus qu’à configurer les utilisateurs et bases de données suivant vos besoins.
Si vous êtes allé trop vite ou si vous avez décidé de ne pas définir de mot de passe pour l’utilisateur « root », vous ne pouvez pas vous connecter. Vous devez suivre les étapes suivantes pour ajouter ou modifier le mot de passe.
Premièrement il faut se connecter au serveur MySQL :
Ensuite, nous définissons un mot de passe pour l’utilisateur « root » :
Puis, nous nous déconnectons du serveur MySQL :
Finalement, il ne reste plus qu’à redémarrer le service mysqld
:
Étape 3 : Création d’un espace de travail dédié
Rappelez-vous, nous souhaitons qu’Apache lise les fichiers dans /srv/http
. Le problème, pour nous, c’est que ce chemin nécessite les droits d’administrateur pour créer ou modifier des fichiers. Pour contourner ce problème, le plus simple est de se créer un espace de travail dans notre répertoire « home ».
Créer un dossier de travail dans sa « home »
Commençons par créer un dossier qui contiendra nos différents projets :
Pour qu’Apache puisse accéder à ce dossier, il faut ajouter les droits de lecture et d’exécution à notre dossier « home » pour l’utilisateur « http ». Nous utiliserons les ACL :
Puis, nous répétons l’opération sur notre dossier de travail pour donner à Apache tous les droits, de manière récursive :
Nous répétons la même opération que ci-dessus mais avec une option en plus pour définir ces droits comme droits par défaut pour tout nouveau fichier ou dossier :
Vous pouvez vérifier les nouvelles permissions avec :
La commande devrait produire la sortie suivante :
Mettre à jour le dossier racine de localhost
Commençons par créer le dossier qui servira de racine à localhost
:
Nous avons également besoin d’un sous-dossier pour contenir les fichiers accessibles depuis le navigateur (ici, je le nomme htdocs
mais vous pouvez utiliser un autre nom comme www
) :
Puis, créons un lien symbolique allant de notre dossier localhost
vers /srv/http/default
:
Ensuite, éditons le fichier de configuration d’Apache :
Nous devons remplacer la configuration par défaut avec le chemin vers notre nouvelle racine :
Vous pouvez sauvegarder et fermer ce fichier.
Vous pouvez vérifier qu’Apache à bien accès à votre dossier htdocs
avec la commande suivante :
La commande devrait produire la sortie suivante :
Si ce n’est pas le cas, vous avez sans doute oublié la dernière commande (celle ajoutant les droits par défaut) à l’étape précédente.
Désactiver le dossier public
Par défaut, Apache est configuré pour permettre l’accès au répertoire $HOME/public_html
depuis l’URL http://localhost/~user/
. Puisque nous avons un espace de travail dédié, nous n’avons pas besoin de ce dossier public ; désactivons-le.
Pour désactiver ce dossier, nous procédons à la modification suivante :
Vous pouvez sauvegarder et fermer ce fichier.
Étape 4 : Configuration de SSL
Installer et préparer mkcert
Pour utiliser SSL, il nous faut des certificats valides pour ne pas être bloqué par le navigateur. Nous allons utiliser mkcert
. Il s’agit d’un outil pour créer des certificats approuvés localement.
Lors de la rédaction du guide, la version utilisée était la suivante : mkcert-1.4.4-2
.
Une fois le paquet installé, il faut installer le certificat racine (rootCA
) en utilisant la commande suivante :
Vous devriez voir la sortie suivante :
Vous pouvez vérifier le dossier d’installation avec la commande suivante :
Créer un certificat pour localhost
Nous allons créer un dossier contenant le certificat et sa clé pour localhost
:
Puis, nous créons un certificat pour localhost
(et 127.0.0.1
). Soit vous vous déplacez dans le dossier et utilisez mkcert
sans option :
Soit, vous utilisez la commande suivante pour vous éviter un déplacement :
La commande devrait retourner les informations suivantes :
Activer SSL
Nous commençons par éditer le fichier de configuration de SSL :
Dans ce fichier, nous allons remplacer le nom du serveur et la racine de localhost :
Si vous avez un serveur mail fonctionnel, vous pouvez également modifier l’adresse email.
Nous allons ensuite ajouter le certificat précédemment généré pour localhost
. Souvenez-vous, nous avons créé un lien symbolique donc nous n’avons pas besoin d’utiliser un chemin vers notre « home » :
Puis, nous modifions également le chemin vers la clé privée :
Vous pouvez sauvegarder et fermer le fichier. Maintenant, nous avons également quelques modifications à apporter au fichier de configuration d’Apache :
Nous activons le module fournissant un cache d’objets partagés nécessaire pour certaines directives comme SSLSessionCache
:
Puis nous activons le module SSL lui-même :
Finalement, nous devons indiquer le chemin du fichier de configuration de SSL :
Vous pouvez sauvegarder et fermer ce fichier. Nous avons terminé la configuration de SSL.
Nous allons redémarrer le serveur pour vérifier la configuration :
Si vous essayez d’accéder à l’adresse https://localhost/
(notez le https
) depuis votre navigateur, vous devriez obtenir la même page que précédemment.
Vous pouvez cliquez sur le cadenas à côté de l’URL pour vérifier que le certificat est bien fourni par mkcert
.
Étape 5 : Utiliser des hôtes virtuels
Création d’un nouvel hôte virtuel
Pour cet exemple de création d’hôte virtuel, nous utiliserons le nom de domaine projet.test
. Il sera accessible en HTTPS avec ou sans www.
. Pensez à adapter les étapes suivantes en fonction de vos besoins.
Nous devons utiliser un domaine de premier niveau (ou TLD) réservé. Ici, je choisis le .test
parce que c’est le plus court et je trouve qu’il correspond bien à ce que nous faisons.
Commençons par créer un dossier dédié dans notre espace de travail créé à l’étape 3. Nous aurons également besoin de créer trois dossiers :
-
htdocs
(ou utilisez le nom de votre choix), qui servira de racine pour les fichiers accessibles depuis le navigateur, -
logs
pour stocker les logs spécifiques à ce domaine, -
certs
pour stocker le certificat et sa clé spécifiques à ce domaine.
L’option -p
de mkdir
permet de créer les dossiers parents s’ils n’existent pas. Ici, projet.test
sera créé en même temps que htdocs
.
Ensuite, nous créons le sous-dossier logs
:
Puis, le sous-dossier certs
:
Si votre shell le supporte, vous pouvez combiner ces trois commandes en une seule :
Maintenant, générons un certificat valide pour notre nom de domaine :
Dans le fichier de configuration de notre hôte virtuel, nous ne voulons pas utiliser le chemin vers notre « home » mais /srv/http
. Nous créons donc un lien symbolique :
Ensuite, nous allons créer un dossier pour stocker les configurations de nos différents hôtes virtuels :
Puis, nous créons un fichier de configuration pour notre nom de domaine :
Dans ce fichier, nous allons ajouter les lignes suivantes :
Vous pouvez sauvegarder et fermer ce fichier. Nous éditons ensuite le fichier de configuration d’Apache pour qu’il charge la configuration de notre hôte virtuel :
Dans ce fichier, nous allons ajouter les lignes suivantes :
Pensez à sauvegarder et fermer ce fichier, puis modifions le fichier hosts
pour que notre nom de domaine soit reconnu :
Finalement, dans ce fichier, nous ajoutons :
Vous pouvez sauvegarder et fermer le fichier. Nous avons terminé la configuration de notre serveur LAMP mais un test s’impose pour vérifier son bon fonctionnement.
Test de notre hôte virtuel
Avant toute chose, il est nécessaire de redémarrer le serveur pour être sûr que nos précédentes modifications soient bien appliquées :
Vous devriez maintenant avoir accès à projet.test
ou www.projet.test
dans votre navigateur. Pour tester le bon fonctionnement, créons un fichier PHP :
Puis, dans ce fichier, ajoutons :
Vous pouvez maintenant sauvegarder et fermer ce fichier. Maintenant, en vous rendant à l’adresse https://www.projet.test
, vous devriez obtenir une page contenant le résultat de phpinfo
et commençant par « PHP Version ».
Si tout c’est bien passé, vous pouvez supprimer le fichier précédemment créé ; il n’est plus utile.
Voilà, vous avez un serveur LAMP fonctionnel et un espace de travail dédié dans votre « home » qui ne nécessite pas les droits d’administrateurs. Avant de partir, pensez à retenir quelques commandes utiles pour utiliser votre serveur de développement.
Ce qu’il faut retenir
Pour gérer le serveur
Pour démarrer Apache et MySQL, vous utiliserez les commandes suivantes :
Vous pouvez également décider de démarrer automatiquement Apache et MySQL au démarrage du système. Pour cela, il faut utiliser :
Si vous faites des modifications dans la configuration d’Apache, il faudra redémarrer le service :
Finalement, si vous souhaitez arrêter Apache et MySQL, il faudra utiliser les commandes suivantes :
Pour gérer ses hôtes virtuels
- Vous devez créer un dossier dans votre espace de travail dédié à votre projet (et des sous-dossiers pour séparer les fichiers publics des logs),
- Vous devez créer un lien symbolique dans
/srv/http
pointant vers le dossier créé, - Vous devez générer un nouveau certificat, en utilisant
mkcert
, pour votre nouveau nom de domaine, - Vous devez ajouter un fichier de configuration pour votre hôte virtuel dans le dossier d’Apache,
- Vous devez modifier le fichier
/etc/hosts
pour pouvoir accéder au nom de domaine depuis votre navigateur, - Vous devez redémarrer Apache pour prendre en compte les modifications.