Serveur LAMP · 13 min read · Dec 28, 2025

Tutoriel de serveur LAMP Ubuntu 16.04 (LTS) avec Apache, PHP 7 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 16.04 LTS (Xenial Xerus) avec PHP 7 (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.

Remarque 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 minimal comme base pour le tutoriel, cela peut être une image de serveur virtuel ou root avec une installation minimale d’Ubuntu 16.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 su

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 appelés ‘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 je voudrais 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.
... en cours de saut.  
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. Ceci est destiné uniquement à  
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 est livré avec une base de données nommée 'test' que  
quiconque peut accéder. Ceci est également destiné uniquement à 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.
Le rechargement des 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

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 :

Connexion MariaDB sur Ubuntu 16.04.

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

2. Installer le serveur web Apache

Apache 2 est disponible en tant que paquet Ubuntu, nous pouvons donc 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 !) :

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

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

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

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

Sortie PHPINFO de PHP 7.

Comme vous le voyez, PHP 7.0 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 PHP5. MySQL n’y est pas répertorié, 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.0-mysql. Il est judicieux d’installer quelques autres modules PHP également car vous pourriez en avoir besoin pour vos applications. Vous pouvez rechercher les modules PHP disponibles comme ceci :

apt-cache search php7.0

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

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

Maintenant redémarrez Apache2 :

systemctl restart apache2

PHP avec support MySQL / MariaDB.

PHP 7 a maintenant un 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.0-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 y trouver de nombreux nouveaux modules :

APCu installé dans PHP.

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

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.

Accepter l'avertissement SSL dans Firefox

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.

Page par défaut d'Apache en mode https.

Le “Verrou 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 officiellement signé que vous achetez auprès d’une autorité SSL, soit obtenir 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 consiste à installer le paquet python-letsencrypt-apache. Exécutez la commande suivante :

apt-get -y install python-letsencrypt-apache

Dans l’étape suivante, nous allons demander un certificat SSL à Let’s Encrypt, pendant ce processus, le serveur Let’s Encrypt essaie de se connecter à votre serveur via le nom de domaine que vous fournissez à la commande letsencrypt. 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 :

letsencrypt --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.

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

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

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

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, nous allons configurer un cronjob maintenant pour renouveler automatiquement le certificat SSL lorsque cela est nécessaire. La commande est ‘letsencrypt renew’.

Configurez un cronjob pour le renouvellement automatique de LE. Exécutez :

crontab -e

pour ouvrir le crontab root dans un éditeur. Insérez la ligne suivante à la fin du fichier :

0 1 * * * /usr/bin/letsencrypt renew &> /dev/null

enregistrez le fichier, cela activera le cronjob. Ce cronjob appellera la commande de renouvellement Let’s Encrypt chaque nuit à 1h du matin. La commande renouvellera le certificat SSL uniquement si nécessaire (30 jours avant son expiration), il n’y a pas de problème à l’exécuter chaque nuit.

9. Installer phpMyAdmin

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

apt-get -y install phpmyadmin

IMPORTANT : L’installateur apt vous posera plusieurs questions maintenant, l’une d’elles consiste à sélectionner le type de serveur web. Une erreur courante est que le type de serveur web est simplement 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èche. 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 de l'application MySQL pour phpmyadmin : <-- Appuyez sur entrer, apt créera automatiquement un mot de passe aléatoire.

9.1 Accès root à PHPMyAdmin avec MariaDB

L’étape suivante est requise uniquement pour les installations MariaDB, si vous utilisez MySQL 5.7, alors passez cette étape.

MariaDB active 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

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 qui est compatible avec VMWare et Virtualbox. L’image de la 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.