Chaque composant doit être installé séparément et dans un ordre spécifique. Dans ce guide, nous allons passer en revue toutes les étapes de l'installation de LAMP Stack sur Debian 10.
Pour les besoins de ce guide, nous partons du principe que vous disposez d'un serveur installé et configuré avec :
- Accès SSH en tant que root
- Debian 10 ou 11
- Accès au terminal/à la ligne de commande
Installation du serveur Apache
Apache est un serveur web open source très populaire qui peut être utilisé en conjonction avec PHP. Apache dispose d'une excellente documentation sur Internet et a été l'un des leaders pendant la majeure partie de l'histoire d'Internet. Les serveurs Apache sont largement utilisés sur tous les types d'hébergement. Pour commencer, assurez-vous que votre cache apt est à jour avec :sudo apt update
sudo apt install apache2
http://<votre_ip_serveur>
Pour trouver l'adresse IP publique de votre serveur :ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Saisissez l'adresse dans votre navigateur et vous verrez s'afficher la page Web Apache par défaut, qui sert à des fins d'information et de test. Elle devrait ressembler à ceci :
Si cette page s'affiche, votre serveur web est désormais correctement installé et accessible sur Internet.
Installation de MySQL MariaDB
Une fois que vous avez démarré le serveur web, il est temps d'installer MariaDB, un serveur de base de données. Ce serveur organisera et fournira l'accès aux bases de données où votre site web peut stocker des informations. Pour installer MariaDB, nous utiliserons à nouveau apt pour installer le serveur :sudo apt install mariadb-server
Cette commande affichera également une liste des paquets qui seront installés, ainsi que l'espace disque qu'ils occuperont. Tapez Y puis ENTRÉE pour confirmer et continuer.
Une fois l'installation terminée, exécutez le script de sécurité fourni avec MySQL, qui supprimera certains paramètres par défaut dangereux et verrouillera l'accès au système de base de données. Exécutez le script via la console et suivez les instructions à l'écran :
sudo mysql_secure_installation
sudo mariadb
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 74
Server version: 10.3.15-MariaDB-1 Debian 10
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
Notez que vous n'avez pas eu besoin de fournir un mot de passe pour vous connecter en tant que root. Cela fonctionne car la méthode d'authentification par défaut pour l'utilisateur root MariaDB se fait via unix_socket plutôt que par mot de passe. Bien que cela puisse sembler être un problème de sécurité à première vue, cela rend en fait le serveur de base de données plus sûr, car les seuls utilisateurs autorisés à se connecter en tant qu'utilisateur root MariaDB sont les utilisateurs du système disposant des privilèges sudo, qui se connectent à partir du terminal ou via une application fonctionnant avec ces privilèges.
Le rôle d'utilisateur root est uniquement administratif, vous ne pouvez donc pas connecter votre application PHP.
Pour renforcer la sécurité, nous allons créer des comptes utilisateurs dédiés avec les privilèges appropriés pour chaque base de données. Pour illustrer cette configuration, nous allons créer une base de données nommée example_database et un utilisateur nommé example_user. Vous pouvez remplacer ces noms par ceux de votre choix.
Pour créer une nouvelle base de données, exécutez la commande suivante à partir de la console MariaDB :
CREATE DATABASE example_database;
Nous allons maintenant créer un nouvel utilisateur et lui accorder tous les privilèges sur la base de données que nous avons créée. La commande suivante définit le mot de passe de cet utilisateur sur PASSWORD, mais vous devez remplacer cette valeur par un mot de passe sécurisé et fort :
GRANT ALL ON example_database.* TO 'example_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
La commande accordera à l'utilisateur example_user tous les privilèges sur la base de données example_database, tout en l'empêchant de créer ou de modifier d'autres bases de données sur le serveur.
Vous pouvez vérifier les privilèges pour vous assurer qu'ils sont enregistrés et disponibles sans avoir à redémarrer :
FLUSH PRIVILEGES;
Vous pouvez ensuite quitter MariaDB :
exit
Vous pouvez vérifier si le nouvel utilisateur dispose des autorisations appropriées en vous reconnectant à la console MariaDB avec le nom d'utilisateur et le mot de passe que vous avez saisis précédemment :
mariadb -u example_user -p
Remarque : L'utilisation de -p dans cette commande vous demandera le mot de passe que vous avez choisi lors de la création de l'utilisateur example_user. Après vous être connecté à la console MariaDB, vérifiez que vous avez accès à la base de données example_database :
SHOW DATABASES;
Vous obtiendrez le résultat suivant :
+--------------------+
| Database |
+--------------------+
| example_database |
| information_schema |
+--------------------+
2 rows in set (0.000 sec)
Pour quitter MariaDB, tapez :
exit
À ce stade, le système de base de données est configuré et vous pouvez passer à l'installation de PHP, le dernier composant du serveur LAMP.
Installation de PHP sur LAMP
PHP est un langage de programmation permettant d'afficher des sites web dynamiques. Il peut exécuter des scripts, se connecter à des bases de données MariaDB pour recevoir et envoyer des informations depuis et vers le serveur web, et les afficher à l'utilisateur. Nous allons à nouveau utiliser apt pour installer PHP, ainsi que quelques autres paquets qui permettront au code PHP de s'exécuter sous le serveur Apache et de communiquer avec la base de données MariaDB :sudo apt install php libapache2-mod-php php-mysql
Cela devrait installer PHP sans aucun problème, mais nous allons vérifier que tout fonctionne correctement.
Dans la plupart des cas, il est judicieux de modifier les paramètres Apache afin que le fichier index.php soit accessible en premier, plutôt que le fichier index.html. Actuellement, si un utilisateur demande un répertoire au serveur, Apache recherche d'abord un fichier nommé index.html. Nous voulons indiquer au serveur web de privilégier les fichiers PHP par rapport aux autres, nous devons donc configurer Apache pour qu'il recherche le fichier index.php.
Pour ce faire, tapez la commande suivante pour ouvrir le fichier dir.conf dans un éditeur de texte avec les privilèges root :
sudo nano /etc/apache2/mods-enabled/dir.conf
Le fichier ressemblera à ceci :
<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>
Déplacez le fichier index.php (surligné ci-dessus) à la première position après DirectoryIndex, comme ceci :
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
Enfin, enregistrez le fichier. Si vous utilisez nano, vous pouvez le faire en appuyant sur CTRL + X, puis sur Y et ENTER pour confirmer.
Rechargez maintenant Apache avec :
sudo systemctl reload apache2
Vous pouvez vérifier l'état d'apache2 :
sudo systemctl status apache2
apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2019-07-08 12:58:31 UTC; 8s ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 11948 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 11954 (apache2)
Tasks: 6 (limit: 4719)
Memory: 11.5M
CGroup: /system.slice/apache2.service
├─11954 /usr/sbin/apache2 -k start
├─11955 /usr/sbin/apache2 -k start
├─11956 /usr/sbin/apache2 -k start
├─11957 /usr/sbin/apache2 -k start
├─11958 /usr/sbin/apache2 -k start
└─11959 /usr/sbin/apache2 -k start
À ce stade, votre serveur LAMP est configuré. Vous pouvez maintenant vous occuper du reste des paramètres, tels que les vhosts.