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
:
sudo pacman -S apache mariadb php php-apache
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 :
sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
Ensuite, nous démarrons le service MariaDB avec la commande suivante :
sudo systemctl start mysqld
Finalement, nous allons sécuriser l’installation avec un script pré-installé :
sudo mariadb-secure-installation
Ce script va nous poser plusieurs questions pour nous aider. J’ai inclus les réponses à donner en tant que commentaire sous chaque question :
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.
Enter current password for root (enter for none):
# Pas de mot de passe, il faut presser la touche Entrée.
[...]
Switch to unix_socket authentication [Y/n]
# Nous répondons "N", nous utiliserons plutôt un mot de passe.
[...]
Change the root password? [Y/n]
# Nous répondons "Y", nous allons pouvoir définir le mot de passe pour root.
[...]
Remove anonymous users? [Y/n]
# Nous répondons "Y", nous supprimons les utilisateurs anonymes.
[...]
Disallow root login remotely? [Y/n]
# Nous répondons "Y", pour une installation plus sécurisée.
[...]
Remove test database and access to it? [Y/n]
# Nous répondons "Y", la base de donnée test ne nous est pas utile.
[...]
Reload privilege tables now? [Y/n]
# Nous répondons "Y", il faut recharger les tables.
[...]
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
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 :
sudo nano /etc/php/php.ini
Nous devons dé-commenter les deux extensions liées à MySQL :
;extension=mysqli
extension=mysqli
;extension=odbc
;zend_extension=opcache
;extension=pdo_dblib
;extension=pdo_mysql
extension=pdo_mysql
Vous pouvez sauvegarder et fermer le fichier.
Configuration d’Apache
Nous pouvons maintenant configurer Apache :
sudo nano /etc/httpd/conf/httpd.conf
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 :
LoadModule mpm_event_module modules/mod_mpm_event.so
#LoadModule mpm_event_module modules/mod_mpm_event.so
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
Ensuite, pour gérer les redirections via htaccess, nous devons activer un autre module :
#LoadModule rewrite_module modules/mod_rewrite.so
LoadModule rewrite_module modules/mod_rewrite.so
Puis, nous allons préciser le nom du serveur et le port à utiliser :
#ServerName www.example.com:80
ServerName localhost:80
Finalement, il faut activer PHP. Pour cela, nous commençons par charger le module PHP :
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule php_module modules/libphp.so
<IfModule unixd_module>
Puis, à la fin du fichier, nous rajoutons :
# Load PHP
<IfModule php_module>
AddHandler php-script .php
Include conf/extra/php_module.conf
</IfModule>
Vous pouvez maintenant sauvegarder et fermer ce fichier. Vous pouvez démarrer le serveur Apache avec la commande suivante :
sudo systemctl start httpd
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 :
sudo pacman -S phpmyadmin
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 :
sudo nano /etc/httpd/conf/extra/httpd-phpmyadmin.conf
Dans ce fichier, nous allons insérer les instructions suivantes pour indiquer à Apache où se trouvent les fichiers de PHPMyAdmin :
# PHPMyAdmin
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"
<Directory "/usr/share/webapps/phpMyAdmin">
DirectoryIndex index.html index.php
AllowOverride All
Options FollowSymlinks
Require all granted
</Directory>
Vous pouvez sauvegarder et fermer ce fichier. Il faut maintenant éditer la configuration d’Apache pour inclure celle de PHPMyAdmin :
sudo nano /etc/httpd/conf/httpd.conf
À la fin du fichier, nous ajoutons :
# PHPMyAdmin configuration
Include conf/extra/httpd-phpmyadmin.conf
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 :
openssl rand -base64 22
Notez la sortie de la commande et poursuivons en éditant le fichier de configuration de PHPMyAdmin :
sudo nano /usr/share/webapps/phpMyAdmin/config.inc.php
Nous allons utiliser notre phrase de passe dans la section suivante :
/**
* This is needed for cookie based authentication to encrypt the cookie.
* Needs to be a 32-bytes long string of random bytes. See FAQ 2.10.
*/
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
$cfg['blowfish_secret'] = 'votre-phrase-de-passe'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
Il faut maintenant définir un dossier temporaire pour PHPMyAdmin :
/**
* You can find more configuration options in the documentation
* in the doc/ folder or at <https://docs.phpmyadmin.net/>.
*/
$cfg['TempDir'] = '/tmp/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 :
sudo systemctl restart httpd
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 :
sudo mysql -u root -p
Ensuite, nous définissons un mot de passe pour l’utilisateur « root » :
ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD("votre-mot-de-passe");
Puis, nous nous déconnectons du serveur MySQL :
exit
Finalement, il ne reste plus qu’à redémarrer le service mysqld
:
sudo systemctl restart 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 :
mkdir /home/votreNom/votreDossierDeTravail
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 :
sudo setfacl -m "u:http:r-x" /home/votreNom
Puis, nous répétons l’opération sur notre dossier de travail pour donner à Apache tous les droits, de manière récursive :
sudo setfacl -R -m "u:http:rwx" /home/votreNom/votreDossierDeTravail
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 :
sudo setfacl -d -R -m "u:http:rwx" /home/votreNom/votreDossierDeTravail
Vous pouvez vérifier les nouvelles permissions avec :
getfacl -p /home/votreNom/votreDossierDeTravail
La commande devrait produire la sortie suivante :
# file: /home/votreNom/votreDossierDeTravail
# owner: votreNom
# group: votreNom
user::rwx
user:http:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:http:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
Mettre à jour le dossier racine de localhost
Commençons par créer le dossier qui servira de racine à localhost
:
mkdir ~/votreDossierDeTravail/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
) :
mkdir ~/votreDossierDeTravail/localhost/htdocs
Puis, créons un lien symbolique allant de notre dossier localhost
vers /srv/http/default
:
sudo ln -s /srv/http/default
Ensuite, éditons le fichier de configuration d’Apache :
sudo nano /etc/httpd/conf/httpd.conf
Nous devons remplacer la configuration par défaut avec le chemin vers notre nouvelle racine :
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/srv/http"
DocumentRoot "/srv/http/default/htdocs"
<Directory "/srv/http">
<Directory "/srv/http/default/htdocs">
Vous pouvez sauvegarder et fermer ce fichier.
Vous pouvez vérifier qu’Apache à bien accès à votre dossier htdocs
avec la commande suivante :
getfacl -p /home/votreNom/votreDossierDeTravail/localhost/htdocs
La commande devrait produire la sortie suivante :
# file: /home/votreNom/votreDossierDeTravail/localhost/htdocs
# owner: votreNom
# group: votreNom
user::rwx
user:http:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:http:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
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.
sudo nano /etc/httpd/conf/httpd.conf
Pour désactiver ce dossier, nous procédons à la modification suivante :
# User home directories
Include conf/extra/httpd-userdir.conf
#Include conf/extra/httpd-userdir.conf
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.
sudo pacman -S mkcert
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 :
mkcert -install
Vous devriez voir la sortie suivante :
Created a new local CA 💥
The local CA is now installed in the system trust store! ⚡️
The local CA is now installed in the Firefox and/or Chrome/Chromium trust store (requires browser restart)! 🦊
Vous pouvez vérifier le dossier d’installation avec la commande suivante :
mkcert -CAROOT
Créer un certificat pour localhost
Nous allons créer un dossier contenant le certificat et sa clé pour localhost
:
mkdir ~/votreDossierDeTravail/localhost/certs
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 :
cd ~/votreDossierDeTravail/localhost/certs
mkcert localhost 127.0.0.1
Soit, vous utilisez la commande suivante pour vous éviter un déplacement :
mkcert -key-file ~/votreDossierDeTravail/localhost/certs/localhost+1-key.pem -cert-file ~/votreDossierDeTravail/localhost/certs/localhost+1.pem localhost 127.0.0.1
La commande devrait retourner les informations suivantes :
Created a new certificate valid for the following names 📜
- "localhost"
- "127.0.0.1"
The certificate is at "/home/votreNom/votreDossierDeTravail/localhost/certs/localhost+1.pem" and the key at "/home/votreNom/votreDossierDeTravail/localhost/certs/localhost+1-key.pem" ✅
It will expire on 13 November 2026 🗓
Activer SSL
Nous commençons par éditer le fichier de configuration de SSL :
sudo nano /etc/httpd/conf/extra/httpd-ssl.conf
Dans ce fichier, nous allons remplacer le nom du serveur et la racine de localhost :
# General setup for the virtual host
DocumentRoot "/srv/http"
DocumentRoot "/srv/http/default/htdocs"
ServerName www.example.com:443
ServerName localhost:443
ServerAdmin you@example.com
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 » :
SSLCertificateFile "/etc/httpd/conf/server.crt"
#SSLCertificateFile "/etc/httpd/conf/server.crt"
#SSLCertificateFile "/etc/httpd/conf/server-dsa.crt"
#SSLCertificateFile "/etc/httpd/conf/server-ecc.crt"
SSLCertificateFile "/srv/http/default/certs/localhost+1.pem"
Puis, nous modifions également le chemin vers la clé privée :
SSLCertificateKeyFile "/etc/httpd/conf/server.key"
#SSLCertificateKeyFile "/etc/httpd/conf/server.key"
#SSLCertificateKeyFile "/etc/httpd/conf/server-dsa.key"
#SSLCertificateKeyFile "/etc/httpd/conf/server-ecc.key"
SSLCertificateKeyFile "/srv/http/default/certs/localhost+1-key.pem"
Vous pouvez sauvegarder et fermer le fichier. Maintenant, nous avons également quelques modifications à apporter au fichier de configuration d’Apache :
sudo nano /etc/httpd/conf/httpd.conf
Nous activons le module fournissant un cache d’objets partagés nécessaire pour certaines directives comme SSLSessionCache
:
#LoadModule cache_socache_module modules/mod_cache_socache.so
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
#LoadModule socache_dbm_module modules/mod_socache_dbm.so
Puis nous activons le module SSL lui-même :
#LoadModule slotmem_plain_module modules/mod_slotmem_plain.so
#LoadModule ssl_module modules/mod_ssl.so
LoadModule ssl_module modules/mod_ssl.so
#LoadModule dialup_module modules/mod_dialup.so
Finalement, nous devons indiquer le chemin du fichier de configuration de SSL :
# Secure (SSL/TLS) connections
#Include conf/extra/httpd-ssl.conf
Include conf/extra/httpd-ssl.conf
#
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 :
sudo systemctl restart httpd
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.
mkdir -p /home/votreNom/votreDossierDeTravail/projet.test/htdocs
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
:
mkdir /home/votreNom/votreDossierDeTravail/projet.test/logs
Puis, le sous-dossier certs
:
mkdir /home/votreNom/votreDossierDeTravail/projet.test/certs
Si votre shell le supporte, vous pouvez combiner ces trois commandes en une seule :
mkdir -p /home/votreNom/votreDossierDeTravail/projet.test/{htdocs,logs,certs}
Maintenant, générons un certificat valide pour notre nom de domaine :
mkcert -cert-file ~/votreDossierDeTravail/projet.test/certs/projet.test.pem -key-file ~/votreDossierDeTravail/projet.test/certs/projet.test-key.pem projet.test "*.projet.test"
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 :
sudo ln -s /home/votreNom/votreDossierDeTravail/projet.test /srv/http
Ensuite, nous allons créer un dossier pour stocker les configurations de nos différents hôtes virtuels :
sudo mkdir /etc/httpd/conf/vhosts
Puis, nous créons un fichier de configuration pour notre nom de domaine :
sudo nano /etc/httpd/conf/vhosts/projet.test
Dans ce fichier, nous allons ajouter les lignes suivantes :
<VirtualHost *:80>
ServerAdmin webmaster@projet.test
DocumentRoot "/srv/http/projet.test/htdocs/"
ServerName www.projet.test
ServerAlias *.projet.test
ErrorLog "/srv/http/projet.test/logs/error.log"
CustomLog "/srv/http/projet.test/logs/access.log" combined
<Directory /srv/http/projet.test/htdocs/>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@projet.test
DocumentRoot "/srv/http/projet.test/htdocs/"
ServerName www.projet.test:443
ServerAlias *.projet.test:443
SSLEngine on
SSLCertificateFile "/srv/http/projet.test/certs/projet.test.pem"
SSLCertificateKeyFile "/srv/http/projet.test/certs/projet.test-key.pem"
ErrorLog "/srv/http/projet.test/logs/error.log"
CustomLog "/srv/http/projet.test/logs/access.log" combined
<Directory /srv/http/projet.test/htdocs/>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
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 :
sudo nano /etc/httpd/conf/httpd.conf
Dans ce fichier, nous allons ajouter les lignes suivantes :
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
Include conf/vhosts/projet.test
Pensez à sauvegarder et fermer ce fichier, puis modifions le fichier hosts
pour que notre nom de domaine soit reconnu :
sudo nano /etc/hosts
Finalement, dans ce fichier, nous ajoutons :
# This host address
127.0.1.1 computer-name
# Virtual hosts
127.0.0.1 projet.test
127.0.0.1 www.projet.test
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 :
sudo systemctl restart httpd
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 :
nano ~/votreDossierDeTravail/projet.test/htdocs/index.php
Puis, dans ce fichier, ajoutons :
<?php
phpinfo();
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.
rm ~/votreDossierDeTravail/projet.test/htdocs/index.php
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 :
sudo systemctl start httpd
sudo systemctl start mysqld
Vous pouvez également décider de démarrer automatiquement Apache et MySQL au démarrage du système. Pour cela, il faut utiliser :
sudo systemctl enable httpd
sudo systemctl enable mysqld
Si vous faites des modifications dans la configuration d’Apache, il faudra redémarrer le service :
sudo systemctl restart httpd
Finalement, si vous souhaitez arrêter Apache et MySQL, il faudra utiliser les commandes suivantes :
sudo systemctl stop httpd
sudo systemctl stop mysqld
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.