Linux

Installation de LAMP (Serveur Web) sur Ubuntu 20.04

Aujourd’hui nous verrons ensemble comment installer LAMP (Linux, Apache, MySQL/MariaDB, PHP) sur Ubuntu 20.04. Dans mon article, j’utiliserai la version Server d’Ubuntu, mais ça fonctionne également sans problème sur la version Desktop. Il est possible d’installer LAMP avec Docker, mais pour bien comprendre le fonctionnement de LAMP nous effectuerons ici une installation de A à Z, sans docker.

LAMP vous permettra ensuite de faire tourner de nombreux services web (Wordpress, Nextcloud…). Nous utiliserons ici Apache pour le serveur web, MariaDB pour le serveur de base de donnée et PHP pour la partie dev/web.

Les prérequis

Comme souvent, il est nécessaire d’avoir quelques prérequis pour suivre mes guides. Ici, il vous faudra une machine capable de faire tourner Ubuntu 20.04. Cela peut être un ordinateur, une machine virtuelle, un VPS ou encore un serveur dédié. À vous de voir en fonction de vos besoins.

Dans ce tutoriel, on supposera donc que vous avez déjà un serveur avec Ubuntu 20.04 installé.

Mise à jour d’Ubuntu 20.04

Avant de commencer l’installation de LAMP, pensez à mettre à jour votre système. Exécutez les commandes suivantes sur votre machine Ubuntu 20.04

sudo apt update

sudo apt upgrade

Installation du serveur Apache

On passe maintenant à l’installation du serveur Web Apache. Lancer la commande suivante pour procéder à l’installation d’Apache : 

sudo apt install -y apache2 apache2-utils

Une fois installé, Apache devrait être démarré automatiquement. Vérifiez son état avec la commande systemctl.

systemctl status apache2

Voici ce que vous devriez avoir :

 apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-07-16 21:13:21 UTC; 55s ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 45918 (apache2)
Tasks: 55 (limit: 4621)
Memory: 4.9M
CGroup: /system.slice/apache2.service
├─45918 /usr/sbin/apache2 -k start
├─45920 /usr/sbin/apache2 -k start
└─45921 /usr/sbin/apache2 -k start

Si ce n’est pas le cas, utilisez la commande suivante :

sudo systemctl start apache2

Utilisez la commande suivante pour démarrer Apache au démarrage système : 

sudo systemctl enable apache2

Si besoin, vous pouvez vérifier la version d’Apache avec la commande suivante : 

apache2 -v

Ce qui devrait donner un résultat de ce type : 

Server version: Apache/2.4.41 (Ubuntu)
Server built: 2020-04-13T17:19:17

La première étape est terminée puisque nous avons maintenant terminé l’installation d’Apache. Vous pouvez vérifier son fonctionnement en lançant un navigateur Web sur l’adresse ip du serveur. Si vous êtes sur Ubuntu Desktop, vous pouvez vérifier en utilisant localhost ou 127.0.0.1 comme adresse web.

Voici ce que vous devriez obtenir : 

Si la connexion est refusée ou bloquée, jeter un coup d’oeil au niveau du pare-feu de votre serveur (iptable ou UFW par exemple).

Maintenant que nous savons que notre serveur Apache est correctement installé, nous allons passer à la phase d’installation.

Configuration Apache

Maintenant, nous devons définir  www-data (utilisateur Apache) en tant que propriétaire de la racine du document (autrement appelé racine Web). Par défaut, il appartient à l’utilisateur root.

sudo chown www-data:www-data /var/www/html/ -R

Par défaut, Apache utilise le nom d’hôte du système comme son global ServerName. Si le nom d’hôte du système ne peut pas être résolu via DNS, alors vous risquez d’avoir une erreur lors de l’utilisation de la commande suivante :

sudo apache2ctl -t

Voici l’erreur que vous pouvez avoir :

tech2tech@tech2tech:~$ sudo apache2ctl -t
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

Pour résoudre ce problème, nous pouvons définir un global ServerNamedans Apache. Utilisez votre éditeur de texte préféré pour créer un nouveau fichier de configuration.

sudo nano /etc/apache2/conf-available/servername.conf

Ajoutez-y la ligne suivante :

ServerName localhost

Activer maintenant le fichier de configuration avec la commande suivante : 

sudo a2enconf servername.conf

Relancer apache : 

sudo systemctl reload apache2

Vous ne devriez plus avoir d’erreur lors de l’utilisation de la commande sudo apache2ctl -t

Installation du serveur de base de données MariaDB

MariaDB est une alternative à MySQL. Il est développé par d’anciens membres de l’équipe MySQL qui craignent qu’Oracle ne transforme MySQL en produit fermé.

Entrez la commande suivante pour installer MariaDB sur Ubuntu 20.04.

sudo apt install mariadb-server mariadb-client

Une fois installé, le serveur MariaDB devrait être démarré automatiquement. Utilisez systemctl pour vérifier son état.

statut systemctl mariadb

Comme pour Apache, vous devriez avoir un retour de ce style :

tech2tech@tech2tech:~$ systemctl status mariadb
mariadb.service - MariaDB 10.3.22 database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-07-16 21:46:44 UTC; 8h ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Main PID: 48169 (mysqld)
Status: "Taking your SQL requests now..."
Tasks: 30 (limit: 4621)
Memory: 65.8M
CGroup: /system.slice/mariadb.service
└─48169 /usr/sbin/mysqld

Si MariaDB n’est pas up & running, vous pouvez le lancer via la commande suivante :

sudo systemctl start mariadb

Ici, comme pour Apache, on lance MariaDB au démarrage du système avec la commande suivante :

sudo systemctl enable mariadb

Configuration de MariaDB

Maintenant que MariaDB est installé, on lance le script de configuration

sudo mysql_secure_installation

Votre installation est nouvelle, donc pour le moment le mot de passe SQL est vide. À la première étape, appuyer sur la touche entrée pour valider que le mot de passe actuel est vide.

Sélectionnez ensuite « Y » pour définir un nouveau mot de passe SQL, puis choisissez le bien. (Si besoin, vous pouvez utiliser un générateur de mots de passe)

Pour les questions suivantes, vous pouvez appuyer sur Entrée à chaque fois, ce qui vous permettra de supprimer l’utilisateur anonyme, désactiver la connexion root à distance et supprimer la base de données de test.

Par défaut, le package MariaDB sur Ubuntu utilise unix_socketpour authentifier la connexion utilisateur, ce qui signifie que vous pouvez utiliser le nom d’utilisateur et le mot de passe du système d’exploitation pour vous connecter à la console MariaDB. Vous pouvez donc exécuter la commande suivante pour vous connecter sans fournir le mot de passe root MariaDB : 

sudo mariadb -u root

Pour sortir, utilisez la commande :

exit;

Vous pouvez vérifier la version de MariaDB installé avec la commande suivante : 

mariadb --version

Ce qui devrait donner un résultat de ce type : 

mariadb Ver 15.1 Distrib 10.3.22-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Installation de PHP

Au moment où j’écris cet article, c’est PHP 7.4 la dernière version stable de PHP. Vous pouvez bien évidemment adapter les commandes en fonction de la version dont vous avez besoin. Entrez la commande suivante pour installer PHP 7.4 et quelques modules PHP qui pourraient vous être utile.

sudo apt install php7.4 libapache2-mod-php7.4 php7.4-mysql php-common php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline

 Activer le module Apache PHP puis redémarrer Apache avec la commande suivante : 

sudo a2enmod php7.4
sudo systemctl restart apache2

Vous pouvez vérifier la version de PHP avec la commande suivante :

php --version

Ce qui devrait vous afficher ceci :

PHP 7.4.3 (cli) (built: May 26 2020 12:24:22) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

Un test assez simple pour vérifier le fonctionnement de PHP est de créer un fichier phpinfo à la racine de votre hébergement. Pour ça, exécuter la commande suivante : 

sudo nano /var/www/html/phpinfo.php

Puis ajouter dans ce fichier le texte suivant :

<?php phpinfo(); ?>

Ce qui vous permet maintenant de tester via un navigateur la lecture du fichier phpinfo.php ; Cela devrait donner quelque chose comme ça : 

Activer PHP FPM

Dans certains cas, vous aurez besoin de  PHP-FPM pour obtenir de meilleures performances pour votre serveur web, nous allons alors activer PHP-FPM sur notre serveur Apache.

Désactiver le module PHP 7.4

sudo a2dismod php7.4

Installer le module PHP-FPM

sudo apt install php7.4-fpm

Activer les modules proxy_fcgi et setenvif

sudo a2enmod proxy_fcgi setenvif

Activer le fichier de configuration /etc/apache2/conf-available/php7.4-fpm.conf

sudo a2enconf php7.4-fpm

Puis redémarrer Apache :

sudo systemctl restart apache2

Maintenant, si vous recharger votre page phpinfo, vous devriez voir que php-fpm est utilisé : 

Voilà ! Votre serveur web LAMP est maintenant installé et configuré. Vous pouvez maintenant créer votre site internet, installer un CMS ou encore de nombreux services web.

N’oubliez pas de supprimer le fichier phpinfo qui regorge d’informations qui pourrait être utile aux petits malins qui voudraient s’en prendre à votre serveur.

sudo rm /var/www/html/info.php

Dans un prochain article, nous verrons comment installer PHPMyAdmin pour la gestion de votre base de données via une interface web.

Mikaël GUILLERM

Administrateur Système et Autoentrepreneur depuis 2009 pour la société zerobug. Je partage mes connaissances, problèmes et solutions à travers articles ou tweets !

Articles similaires

Un commentaire

  1. Bonjour,
    Pourriez vous faire un nouveau post pour expliquer comment protéger son réseau et sa machine dès lors qu’elle devient accessible au monde extérieur depuis internet.

    Il y a t-il des outils à installer pour se protéger ?
    Merci

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Bouton retour en haut de la page