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 ServerName
dans 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_socket
pour 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.
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