Serveur LAMP · 14 min read · Dec 26, 2025

Tutoriel de serveur LAMP Ubuntu 18.04 (LTS) avec Apache, PHP 7.2 et MySQL

LAMP est l’acronyme de L inux, A pache, M ySQL, P HP. Ce tutoriel montre comment installer un serveur web Apache sur un serveur Ubuntu 18.04 LTS (Bionic Beaver) avec PHP 7.2 (mod_php) et le support de MySQL / MariaDB et comment configurer un certificat SSL avec Let’s Encrypt. De plus, j’installerai PHPMyAdmin pour faciliter l’administration de MySQL. Une configuration LAMP est une base parfaite pour des systèmes CMS populaires comme Joomla, Wordpress ou Drupal.

Note Préliminaire

Dans ce tutoriel, j’utiliserai le nom d’hôte server1.example.com avec l’adresse IP 192.168.1.100. Ces paramètres peuvent différer pour vous, donc vous devez les remplacer là où cela est approprié.

Je recommande d’utiliser une configuration de serveur Ubuntu minimale comme base pour le tutoriel, cela peut être une image de serveur virtuel ou root avec une installation minimale d’Ubuntu 18.04 d’une société d’hébergement web ou vous pouvez utiliser notre tutoriel de serveur minimal pour installer un serveur à partir de zéro.

J’exécute toutes les étapes de ce tutoriel avec des privilèges root, donc assurez-vous que vous êtes connecté en tant que root :

sudo -s

1. Installer la base de données MySQL ou MariaDB

Il existe actuellement deux systèmes de base de données MySQL largement utilisés, le serveur classique “MySQL” qui est développé par Oracle et est disponible en version 5.7 maintenant et le fork de MySQL nommé MariaDB qui est développé par le développeur original de MySQL Monty Widenius.

Je vais vous montrer comment installer les deux alternatives ci-dessous. Suivez simplement le chapitre 1.1 ou 1.2 mais pas les deux. J’utiliserai MySQL 5.7 pour l’image de machine virtuelle qui peut être téléchargée depuis Howtoforge.

1.1 Installer MySQL 5.7

Pour installer MySQL 5.7, exécutez cette commande :

apt-get -y install mysql-server mysql-client

Les paquets mysql-server et mysql-client sont des ‘méta-paquets’, ils installent toujours la dernière version de MySQL disponible depuis Ubuntu. La dernière version est actuellement MySQL 5.7.

Nous avons déjà défini le mot de passe root pour MySQL lors de l’installation, mais j’aimerais supprimer l’utilisateur anonyme et la base de données de test pour des raisons de sécurité. Exécutez la commande mysql_secure_installation ci-dessous pour y parvenir.

mysql_secure_installation

Vous serez invité à répondre à ces questions :

Sécurisation du déploiement du serveur MySQL.
Entrez le mot de passe pour l'utilisateur root : <-- Entrez le mot de passe root MySQL
Le PLUGIN DE VALIDATION DE MOT DE PASSE peut être utilisé pour tester les mots de passe  
et améliorer la sécurité. Il vérifie la force du mot de passe  
et permet aux utilisateurs de définir uniquement les mots de passe qui sont  
suffisamment sécurisés. Souhaitez-vous configurer le plugin VALIDATE PASSWORD ?
Appuyez sur y|Y pour Oui, toute autre touche pour Non :  
Utilisation du mot de passe existant pour root.  
Changer le mot de passe pour root ? ((Appuyez sur y|Y pour Oui, toute autre touche pour Non) : <-- Choisissez 'y' ici si vous souhaitez activer la validation du mot de passe, je n'ai pas besoin de cette fonction, donc je choisis 'n' ici.
... saut en cours.  
Par défaut, une installation MySQL a un utilisateur anonyme,  
permettant à quiconque de se connecter à MySQL sans avoir à  
avoir un compte utilisateur créé pour eux. Cela est uniquement destiné à  
la phase de test, et pour rendre l'installation un peu plus fluide.  
Vous devriez les supprimer avant de passer à un environnement de production.
Supprimer les utilisateurs anonymes ? (Appuyez sur y|Y pour Oui, toute autre touche pour Non) : <-- y  
Succès.

Normalement, root ne devrait être autorisé à se connecter que depuis  
'localhost'. Cela garantit que quelqu'un ne peut pas deviner le  
mot de passe root depuis le réseau.
Interdire la connexion root à distance ? (Appuyez sur y|Y pour Oui, toute autre touche pour Non) : <-- y  
Succès.
Par défaut, MySQL vient avec une base de données nommée 'test' que  
quiconque peut accéder. Cela est également uniquement destiné à des fins de test,  
et devrait être supprimé avant de passer à un environnement de production.

Supprimer la base de données de test et l'accès à celle-ci ? (Appuyez sur y|Y pour Oui, toute autre touche pour Non) : <-- y  
- Suppression de la base de données de test...  
Succès.
- Suppression des privilèges sur la base de données de test...  
Succès.
Recharger les tables de privilèges garantira que tous les changements  
faits jusqu'à présent prendront effet immédiatement.
Recharger les tables de privilèges maintenant ? (Appuyez sur y|Y pour Oui, toute autre touche pour Non) : <-- y  
Succès.
Tout est fait !

La configuration de MySQL est maintenant sécurisée.

1.2 Installer MariaDB 10

Exécutez la commande suivante pour installer le serveur et le client MariaDB :

apt-get -y install mariadb-server mariadb-client

Maintenant, nous définissons un mot de passe root pour MariaDB.

mysql_secure_installation

Vous serez invité à répondre à ces questions :

Entrez le mot de passe actuel pour root (appuyez sur entrer pour aucun) : <-- appuyez sur entrer  
Définir le mot de passe root ? [Y/n] <-- y  
Nouveau mot de passe : <-- Entrez le nouveau mot de passe root MariaDB ici  
Répétez le nouveau mot de passe : <-- Répétez le mot de passe  
Supprimer les utilisateurs anonymes ? [Y/n] <-- y  
Interdire la connexion root à distance ? [Y/n] <-- y  
Recharger les tables de privilèges maintenant ? [Y/n] <-- y

1.3 Tester la connexion root MySQL/MariaDB

Testez la connexion à MariaDB avec la commande “mysql”

mysql -u root -p

et entrez le mot de passe root MariaDB que vous avez défini ci-dessus. Le résultat devrait être similaire à la capture d’écran ci-dessous :

Tester la connexion root MySQL sur Ubuntu 18.04 LTS

Pour quitter le shell MySQL/MariaDB, entrez la commande “quit” et appuyez sur entrer.

2. Installer le serveur web Apache

Apache 2 est disponible en tant que paquet Ubuntu, donc nous pouvons l’installer comme ceci :

apt-get -y install apache2

Maintenant, dirigez votre navigateur vers http://192.168.1.100, et vous devriez voir la page par défaut d’Apache2 (Ça fonctionne !):

La page par défaut d'Apache

Le document racine du vhost par défaut d’apache est /var/www/html sur Ubuntu et le fichier de configuration principal est /etc/apache2/apache2.conf. Le système de configuration est entièrement documenté dans /usr/share/doc/apache2/README.Debian.gz.

3. Installer PHP 7.2

Nous pouvons installer PHP 7.2 et le module PHP d’Apache comme suit :

apt-get -y install php7.2 libapache2-mod-php7.2

Puis redémarrez Apache :

systemctl restart apache2

4. Tester PHP et obtenir des détails sur votre installation PHP

Le document racine du site web par défaut est /var/www/html. Nous allons maintenant créer un petit fichier PHP (info.php) dans ce répertoire et l’appeler dans un navigateur. Le fichier affichera de nombreux détails utiles sur notre installation PHP, tels que la version de PHP installée.

nano /var/www/html/info.php

Puis changez le propriétaire du fichier info.php en utilisateur et groupe www-data.

chown www-data:www-data /var/www/html/info.php

Maintenant, nous appelons ce fichier dans un navigateur (par exemple http://192.168.1.100/info.php) :

Ubuntu 18.04 PHP 7.2 info

Comme vous le voyez, PHP 7.2 fonctionne, et il fonctionne via le gestionnaire Apache 2.0, comme indiqué dans la ligne Server API. Si vous faites défiler plus bas, vous verrez tous les modules qui sont déjà activés dans PHP. MySQL n’y est pas listé, ce qui signifie que nous n’avons pas encore de support MySQL / MariaDB dans PHP.

5. Obtenir le support MySQL / MariaDB dans PHP

Pour obtenir le support MySQL dans PHP, nous pouvons installer le paquet php7.2-mysql. C’est une bonne idée d’installer également d’autres modules PHP car vous pourriez en avoir besoin pour vos applications. Vous pouvez rechercher les modules PHP disponibles comme ceci :

apt-cache search php7.2

et

apt-cache search php-

car tous les paquets PHP n’ont pas le numéro de version 7.2 dans leur nom.

Choisissez ceux dont vous avez besoin et installez-les comme ceci :

apt-get -y install php7.2-mysql php7.2-curl php7.2-gd php7.2-intl php-pear php-imagick php7.2-imap php-memcache php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc php7.2-xsl php7.2-mbstring php-gettext

Maintenant redémarrez Apache2 :

systemctl restart apache2

PHP 7.2 avec l'extension MySQL chargée

PHP 7.2 a maintenant le support MySQL / MariaDB comme indiqué dans phpinfo() ci-dessus.

6. Installer le cache PHP Opcache + APCu pour accélérer PHP

PHP 7 est livré avec un cache d’opcode intégré pour mettre en cache et optimiser le code intermédiaire PHP, il s’appelle ‘opcache’ et est disponible dans le paquet php7.0-opcache. Il est fortement recommandé d’avoir un Opcache installé pour accélérer votre page PHP. En plus d’opcache, j’installerai APCu qui est un wrapper de compatibilité pour opcache afin de fournir les fonctions du cache APC, un système de cache souvent utilisé dans les versions PHP 5.x et de nombreux systèmes CMS l’utilisent encore.

Opcache et APCu peuvent être installés comme suit :

apt-get -y install php7.2-opcache php-apcu

Ne vous inquiétez pas s’il indique qu’Opcache est déjà installé.

Maintenant redémarrez Apache :

systemctl restart apache2

Maintenant, rechargez http://192.168.1.100/info.php dans votre navigateur et faites défiler à nouveau jusqu’à la section des modules. Vous devriez maintenant trouver de nombreux nouveaux modules là-bas :

APC et APCu activés dans PHP 7.2

Veuillez ne pas oublier de supprimer le fichier info.php lorsque vous n’en avez plus besoin car il fournit des détails sensibles de votre serveur. Exécutez la commande suivante pour supprimer le fichier.

rm -f /var/www/html/info.php

7. Activer le site SSL dans Apache

SSL/TLS est une couche de sécurité pour chiffrer la connexion entre le navigateur web et votre serveur. La plupart des navigateurs web commencent à afficher les sites comme non sécurisés aujourd’hui lorsque la connexion entre le serveur et le navigateur web n’est pas chiffrée avec SSL. Dans ce chapitre, je vais vous montrer comment sécuriser votre site web avec SSL.

Exécutez les commandes suivantes sur votre serveur pour activer le support SSL (https://). Exécutez :

a2enmod ssl  
a2ensite default-ssl

ce qui active le module SSL et ajoute un lien symbolique dans le dossier /etc/apache2/sites-enabled vers le fichier /etc/apache2/sites-available/default-ssl.conf pour l’inclure dans la configuration apache active. Ensuite, redémarrez apache pour activer la nouvelle configuration :

systemctl restart apache2

Maintenant, testez la connexion SSL en ouvrant https://192.168.1.100 dans un navigateur.

Avertissement de certificat SSL auto-signé

Vous recevrez un avertissement SSL car le certificat SSL du serveur est un certificat SSL “auto-signé”, cela signifie que le navigateur ne fait pas confiance à ce certificat par défaut et vous devez d’abord accepter l’avertissement de sécurité. Après avoir accepté l’avertissement, vous verrez la page par défaut d’apache.

Apache avec SSL activé

Le cadenas vert fermé devant l’URL dans le navigateur montre que la connexion est chiffrée.

Il existe deux façons de se débarrasser de l’avertissement SSL, soit remplacer le certificat SSL auto-signé /etc/ssl/certs/ssl-cert-snakeoil.pem par un certificat SSL signé officiellement que vous achetez auprès d’une autorité SSL, soit vous obtenez un certificat SSL gratuit de Let’s Encrypt, que je décrirai dans le chapitre 8.

8. Obtenir un certificat SSL gratuit de Let’s Encrypt

La première étape pour sécuriser le site web avec un certificat SSL Let’s Encrypt est d’installer le paquet python3-certbot-apache. Exécutez la commande suivante :

apt-get -y install python3-certbot-apache

Dans l’étape suivante, nous allons demander un certificat SSL à Let’s Encrypt en utilisant le programme client certbot, pendant ce processus, le serveur Let’s Encrypt essaie de se connecter à votre serveur via le nom de domaine que vous fournissez à la commande certbot. Il est important que ce nom de domaine pointe déjà vers votre serveur dans DNS afin que le site web soit accessible par son nom de domaine sur le port 80 (http) déjà. Si le site web n’est pas accessible depuis Internet, alors la création du certificat SSL Let’s Encrypt échouera.

Avant de pouvoir commencer à créer le certificat SSL, définissez le nom de domaine dans le fichier de configuration vhost. Ouvrez le fichier vhost par défaut avec un éditeur :

nano /etc/apache2/sites-available/000-default.conf

et ajoutez la ligne :

ServerName example.com

Juste en dessous de la ligne ‘DocumentRoot’. Remplacez example.com par le nom de domaine de votre propre site web.

Ensuite, créez le certificat SSL avec cette commande :

certbot --apache -d example.com

Remplacez example.com par votre nom de domaine ici encore. La commande lancera un assistant qui vous posera plusieurs questions.

Entrez l’adresse e-mail où l’administrateur responsable de ce site web peut être contacté.

Acceptez les termes et conditions de l’autorité SSL Let’s Encrypt.

Certbot vous demandera maintenant si vous souhaitez partager votre adresse e-mail avec la Electronic Frontier Foundation. Choisissez ici ce que vous préférez.

Ensuite, choisissez si vous souhaitez rediriger automatiquement les requêtes non-SSL vers https://. Je vais sélectionner oui ici pour éviter les problèmes de contenu dupliqué lorsque le site web est disponible en tant que version http:// et https://.

Rediriger les requêtes HTTP

Le certificat SSL a été émis avec succès.

Certificat SSL émis avec succès

Lorsque vous accédez maintenant au site web avec un navigateur, vous serez automatiquement redirigé vers SSL et le cadenas vert devant la barre d’URL dans le navigateur montre que nous utilisons maintenant un certificat SSL de confiance.

Site web protégé par SSL

8.1 Renouvellement automatique Let’s Encrypt

Les certificats SSL Let’s Encrypt sont valides pour une courte période de 80 jours seulement. Par conséquent, un cronjob pour renouveler automatiquement les certificats SSL est nécessaire qui exécute la commande certbot –renew.

Ce cronjob est configuré automatiquement lorsque vous installez certbot, le fichier cron est /etc/cron.d/certbot. Donc, il n’y a rien de plus à faire ici. Si vous souhaitez savoir à quoi ressemble le cronjob, exécutez la commande :

/etc/cron.d/certbot

Le résultat est :

root@server1:~# cat /etc/cron.d/certbot  
# /etc/cron.d/certbot : entrées crontab pour le paquet certbot  
#  
# En amont, il est recommandé d'essayer le renouvellement deux fois par jour  
#  
# Éventuellement, cela sera une occasion de valider que les certificats  
# n'ont pas été révoqués, etc. Le renouvellement n'aura lieu que si l'expiration  
# est dans les 30 jours.  
SHELL=/bin/sh  
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
0 */12 * * * root test -x /usr/bin/certbot -a \\! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew

9. Installer phpMyAdmin

phpMyAdmin est une interface web à travers laquelle vous pouvez gérer vos bases de données MySQL. C’est une bonne idée de l’installer :

apt-get -y install phpmyadmin

IMPORTANT : L’installateur apt vous posera plusieurs questions maintenant, l’une d’elles est de sélectionner le type de serveur web. Une erreur courante est que le type de serveur web est juste surligné mais pas sélectionné. Pour sélectionner un élément dans un menu apt, vous devez appuyer sur la barre d’espace sur le clavier après avoir navigué vers l’élément avec les touches tab ou fléchées. Il ne suffit pas de le surligner !

Vous verrez les questions suivantes :

Serveur web à configurer automatiquement : <-- Sélectionnez l'option : apache2  
Configurer la base de données pour phpmyadmin avec dbconfig-common ? <-- Oui  
Mot de passe d'application MySQL pour phpmyadmin : <-- Appuyez sur entrer, apt créera un mot de passe aléatoire automatiquement.

9.1 Accès root à PHPMyAdmin

MariaDB et MySQL activent un plugin appelé “unix_socket” pour l’utilisateur root par défaut, ce plugin empêche l’utilisateur root de se connecter à PHPMyAdmin et que les connexions TCP à MySQL fonctionnent pour l’utilisateur root. Pour obtenir un utilisateur avec des privilèges pour créer d’autres utilisateurs et bases de données dans PHPMyAdmin, je vais créer un nouvel utilisateur MySQL avec le nom “admin” avec les mêmes privilèges que l’utilisateur root.

Connectez-vous à la base de données MySQL en tant qu’utilisateur root dans le shell :

mysql -u root

Créez un nouvel utilisateur avec le nom “admin” et le mot de passe “howtoforge”. Remplacez le mot de passe “howtoforge” par un mot de passe sécurisé dans les commandes ci-dessous !

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'howtoforge';  
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;  
FLUSH PRIVILEGES;  
exit

Ensuite, vous pouvez accéder à phpMyAdmin sous http://192.168.1.100/phpmyadmin/ :

Connexion phpMyAdmin

Connexion en tant qu'utilisateur administratif à phpMyAdmin

10 Téléchargement de l’image de machine virtuelle de ce tutoriel

Ce tutoriel est disponible sous forme d’image de machine virtuelle prête à l’emploi au format ovf/ova compatible avec VMWare et Virtualbox. L’image de machine virtuelle utilise les détails de connexion suivants :

Connexion SSH / Shell

Nom d’utilisateur : administrator
Mot de passe : howtoforge

Cet utilisateur a des droits sudo.

Connexion MySQL

Nom d’utilisateur : root
Mot de passe : howtoforge

L’IP de la VM est 192.168.1.100, elle peut être changée dans le fichier /etc/network/interfaces. Veuillez changer tous les mots de passe ci-dessus pour sécuriser la machine virtuelle.

11 Liens

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.