Recherche de site Web

Installer Apache, MySQL, PHP (pile LAMP) sur Ubuntu 20.04 LTS


La pile LAMP est une plateforme de développement web open source populaire qui peut être utilisée pour exécuter et déployer des sites web dynamiques et des applications web. Typiquement, une pile LAMP se compose du serveur web Apache, des bases de données MariaDB/MySQL, et des langages de programmation PHP/Python/Perl. LAMP est l'acronyme de Linux, Apache, MariaDB/MYSQL, PHP/Python/Perl. Ce tutoriel étape par étape décrit comment installer Apache, MySQL, PHP (pile LAMP) sur la version serveur Ubuntu 20.04 LTS.

Installer Apache, MySQL, PHP (pile LAMP) sur Ubuntu 20.04 LTS

Aux fins de ce tutoriel, nous utiliserons le système Ubuntu suivant.

  • Système d'exploitation : Ubuntu 20.04 LTS Édition serveur
  • Adresse IP : 192.168.225.52/24

Tout d'abord, installons le serveur Apache.

1. Installer le serveur web Apache sur Ubuntu

Tout d'abord, mettez à jour le serveur Ubuntu en utilisant les commandes :

$ sudo apt update
$ sudo apt upgrade

Ensuite, installez le serveur web Apache :

$ sudo apt install apache2

Vérifiez si le serveur web Apache fonctionne ou non avec la commande :

$ sudo systemctl status apache2

La sortie d'exemple serait :

● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabl>
     Active: active (running) since Fri 2020-05-29 07:02:26 UTC; 25s ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 23996 (apache2)
      Tasks: 55 (limit: 2283)
     Memory: 5.1M
     CGroup: /system.slice/apache2.service
             ├─23996 /usr/sbin/apache2 -k start
             ├─23998 /usr/sbin/apache2 -k start
             └─23999 /usr/sbin/apache2 -k start

May 29 07:02:26 ubuntuserver systemd[1]: Starting The Apache HTTP Server...
May 29 07:02:26 ubuntuserver apachectl[23981]: AH00558: apache2: Could not reliably det>
May 29 07:02:26 ubuntuserver systemd[1]: Started The Apache HTTP Server.

Félicitations ! Le service Apache est en marche et fonctionne !!

1.1. Autoriser le serveur web Apache via le pare-feu UFW

UFW, signifie Pare-feu Incompliqué, est un programme pour gérer un pare-feu netfilter conçu pour être facile à utiliser. UFW est disponible par défaut dans toutes les versions d'Ubuntu.

Par défaut, le navigateur web Apache ne peut pas être accessible depuis des systèmes distants si vous avez activé le pare-feu UFW sous Ubuntu 20.04 LTS. Vous devez autoriser les ports http et https en suivant les étapes indiquées ci-dessous.

Tout d'abord, listez les profils d'application disponibles sur votre système Ubuntu en utilisant la commande :

$ sudo ufw app list

Exemple de sortie :

Available applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

Comme vous pouvez le voir, les applications Apache et OpenSSH ont installé des profils UFW. Vous pouvez lister les informations sur chaque profil et ses règles incluses en utilisant la commande ufw app info "Nom du Profil".

Examinons le profil “Apache Full ” en utilisant la commande :

$ sudo ufw app info "Apache Full"

Exemple de sortie :

Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.

Ports:
80,443/tcp

Comme vous le voyez, le profil "Apache Full" inclut les règles pour autoriser le trafic vers les ports 80 et 443.

Maintenant, exécutez la commande suivante pour autoriser le trafic entrant HTTP et HTTPS pour ce profil :

$ sudo ufw allow in "Apache Full"

Vous verrez une sortie comme ci-dessous :

Rules updated
Rules updated (v6)

Si vous ne voulez pas autoriser le trafic https, mais seulement le trafic http (80), exécutez :

$ sudo ufw app info "Apache"

1.2. Tester le serveur Web Apache

Maintenant, ouvrez votre navigateur web et accédez à la page de test Apache en naviguant vers http://localhost/ ou http://Adresse-IP/.

Si vous voyez la « page par défaut Apache 2 Ubuntu » comme montré ci-dessous, tout est prêt. Le serveur Apache fonctionne !

Tester le serveur Web Apache

2. Installer MySQL sur Ubuntu

Pour installer MySQL sur Ubuntu, exécutez :

$ sudo apt install mysql-server

Vérifiez si le service MySQL fonctionne ou non en utilisant la commande :

$ sudo systemctl status mysql

Exemple de sortie :

● mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2020-05-29 07:15:22 UTC; 2min 8s ago
   Main PID: 25242 (mysqld)
     Status: "Server is operational"
      Tasks: 38 (limit: 2283)
     Memory: 323.7M
     CGroup: /system.slice/mysql.service
             └─25242 /usr/sbin/mysqld

May 29 07:15:16 ubuntuserver systemd[1]: Starting MySQL Community Server...
May 29 07:15:22 ubuntuserver systemd[1]: Started MySQL Community Server.

Comme vous le voyez dans la sortie ci-dessus, MySQL fonctionne !

2.1. Configurer le mot de passe de l'utilisateur administratif de la base de données (root) pour Mysql

Par défaut, le mot de passe de l'utilisateur root de MySQL est vide. Il n'est pas recommandé d'utiliser un mot de passe vide pour le compte administrateur de la base de données. Vous devez sécuriser votre serveur MySQL en exécutant le script suivant :

$ sudo mysql_secure_installation

Il vous sera demandé si vous souhaitez configurer le composant "VALIDATE PASSWORD" ou non. Ce composant permet aux utilisateurs de configurer un mot de passe fort pour les identifiants de la base de données. S'il est activé, il vérifiera automatiquement la robustesse du mot de passe et obligera les utilisateurs à définir uniquement des mots de passe suffisamment sécurisés. Il est sûr de le laisser désactivé. Cependant, vous devez utiliser un mot de passe fort et unique pour les identifiants de la base de données. Si vous ne souhaitez pas activer ce composant, appuyez simplement sur une touche pour passer la partie de validation du mot de passe et continuer les autres étapes.

Entrez y si vous voulez configurer le composant VALIDATE PASSWORD :

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: y

Si votre réponse est Oui, il vous sera demandé de choisir le niveau de validation du mot de passe. Les validations de mot de passe disponibles sont faible, moyen et fort. Il suffit de saisir le numéro approprié (0 pour faible, 1 pour moyen et 2 pour mot de passe fort) et d'appuyer sur la touche ENTRÉE.

There are three levels of password validation policy:

LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0

Maintenant, saisissez le mot de passe pour l'utilisateur MySQL root. Veuillez noter que vous devez utiliser le mot de passe pour l'utilisateur MySQL root en fonction de la politique de mot de passe que vous avez choisie à l'étape précédente. Si vous n'avez pas activé le plugin, utilisez simplement un mot de passe fort et unique de votre choix.

Please set the password for root here.

New password:

Re-enter new password:

Estimated strength of the password: 100 
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

Une fois que vous avez saisi le mot de passe deux fois, vous verrez la solidité du mot de passe (Dans notre cas, elle est de 100). Si cela vous convient, appuyez sur Y pour continuer avec le mot de passe fourni. Si la longueur du mot de passe ne vous satisfait pas, appuyez sur une autre touche et définissez un mot de passe fort. Je suis d'accord avec mon mot de passe actuel, j'ai donc choisi y.

Pour le reste des questions, tapez simplement y et appuyez sur ENTRÉE. Cela supprimera l'utilisateur anonyme, interdira la connexion à distance pour l'utilisateur root et supprimera la base de données de test.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Dropping test database...
Success.

- Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!

Fait ! Nous avons défini le mot de passe de l'utilisateur root de MySQL.

2.2. Changer la méthode d'authentification de l'utilisateur root de MySQL

Par défaut, l'utilisateur root de MySQL est configuré pour s'authentifier en utilisant le plugin auth_socket à partir de MySQL 5.7 et des versions plus récentes sur Ubuntu. Bien que cela améliore la sécurité, cela complique également les choses lorsque vous accédez à votre serveur de base de données à l'aide de programmes externes, par exemple phpMyAdmin. Pour résoudre ce problème, vous devez changer la méthode d'authentification de auth_socket à caching_sha2_password ou mysql_native_password.

À partir de la version 8.0 de MySQL, le plugin d'authentification préféré et par défaut est caching_sha2_password. Le plugin d'authentification caching_sha2_password fournit un chiffrement des mots de passe plus sécurisé que le plugin mysql_native_password.

Pour changer le plugin d'authentification, connectez-vous à votre invite MySQL en utilisant la commande :

$ sudo mysql

Ou,

$ mysql -u root -p

Entrez le mot de passe root de MySQL que nous avons configuré à l'étape précédente.

Exécutez la commande suivante à l'invite mysql pour trouver la méthode d'authentification actuelle de tous les comptes d'utilisateurs MySQL :

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Exemple de sortie :

+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user             | authentication_string                                                  | plugin                | host      |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$=s%UO"�o@>.@320vBX9Agb0kvpTpyiqIsh6XlD0UqNXLcl3KLzp46.Le. | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root             |                                                                        | auth_socket           | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)

Trouvez la méthode d'authentification actuelle pour tous les comptes utilisateur MySQL sur Ubuntu

Comme vous le voyez, l'utilisateur root de mysql utilise le plugin auth_socket pour l'authentification.

Pour changer le plugin auth_socket en caching_sha2_password, exécutez la commande suivante à l'invite MySQL. Si vous avez activé le plugin VALIDATE PASSWORD, assurez-vous d'avoir utilisé un mot de passe fort conformément aux exigences de la politique actuelle. Un mot de passe fort doit comporter au moins 8 caractères, incluant une lettre majuscule, une lettre minuscule, un chiffre et un caractère spécial.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password123#@!';

Remplacez Password123#@! par un mot de passe fort et unique de votre choix dans la commande ci-dessus.

Mettez à jour les modifications en utilisant la commande :

mysql> FLUSH PRIVILEGES;

Vérifiez maintenant si le plugin d'authentification actuel a été changé ou non en utilisant la commande :

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Exemple de sortie :

Vérifiez le plugin d'authentification actuel dans MySQL

Bien ! Maintenant, l'utilisateur MySQL root peut s'authentifier en utilisant un mot de passe pour accéder à l'interface MySQL.

Sortie de l'invite MySQL :

mysql> exit

Remarque :

Même si le plugin caching_sha2_password offre un chiffrement sécurisé amélioré, il présente certains problèmes de compatibilité avec les installations MySQL existantes. Pour plus de détails, veuillez consulter ce lien. Si vous rencontrez des problèmes de compatibilité, vous devez définir le plugin mysql_native_password comme plugin d'authentification par défaut.

Pour changer vers le plugin mysql_native_password, exécutez la commande suivante à l'invite MySQL.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Mettez à jour les modifications en utilisant la commande :

mysql> FLUSH PRIVILEGES;

Vérifiez maintenant à nouveau si la méthode d'authentification a été modifiée ou non en utilisant la commande :

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Exemple de sortie :

Trouver la méthode d'authentification actuelle pour tous les comptes utilisateur MySQL

Quitter l'invite MySQL :

mysql> exit

3. Installer PHP sous Ubuntu

Pour installer PHP, exécutez :

$ sudo apt install php libapache2-mod-php php-mysql

Après avoir installé PHP, créez le fichier info.php dans le dossier racine des documents Apache. En général, le dossier racine des documents Apache sera /var/www/html/ ou /var/www/ dans la plupart des distributions Linux basées sur Debian. Dans Ubuntu 20.04 LTS, il est /var/www/html/.

Créons le fichier info.php dans le dossier racine d'Apache :

$ sudo vi /var/www/html/info.php

Ajoutez les lignes suivantes :

<?php
phpinfo();
?>

Appuyez sur la touche ESC et tapez :wq pour enregistrer et quitter le fichier. Redémarrez le service Apache pour que les modifications prennent effet.

$ sudo systemctl restart apache2

3.1. Tester PHP

Ouvrez votre navigateur web et allez à l'URL http://IP-address/info.php.

Vous verrez les informations PHP telles que la version, l'API du serveur et les détails de tous les plugins PHP activés.

Page de test PHP

Habituellement, lorsqu'un utilisateur demande un répertoire au serveur web, Apache cherchera d'abord un fichier nommé index.html. Si vous souhaitez modifier Apache pour qu'il serve des fichiers php plutôt que d'autres, déplacez index.php en première position dans le fichier dir.conf comme indiqué ci-dessous

$ sudo vi /etc/apache2/mods-enabled/dir.conf

Voici le contenu du fichier ci-dessus.

<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Déplacez le fichier index.php en premier. Une fois que vous avez effectué les modifications, votre fichier dir.conf ressemblera à ce qui suit.

<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Appuyez sur la touche ESC et tapez :wq pour enregistrer et fermer le fichier. Redémarrez le service Apache pour que les modifications prennent effet.

$ sudo systemctl restart apache2

3.2. Installer les modules PHP

Pour améliorer la fonctionnalité de PHP, vous pouvez installer certains modules PHP supplémentaires.

Pour lister les modules PHP disponibles, exécutez :

$ sudo apt-cache search php- | less

Exemple de sortie :

Lister les modules PHP disponibles sur Ubuntu

Utilisez les flèches pour parcourir le résultat. Pour quitter, tapez q.

Pour trouver les détails de n'importe quel module PHP particulier, par exemple php-gd, exécutez :

$ sudo apt-cache show php-gd

Pour installer un module PHP, exécutez :

$ sudo apt install php-gd

N'oubliez pas de redémarrer le service Apache après avoir installé un module PHP. Pour vérifier si le module est chargé ou non, ouvrez le fichier info.php dans votre navigateur et vérifiez s'il est présent.

Félicitations ! Comme vous pouvez le voir, il est très facile d'installer Apache, MySQL, PHP (pile LAMP) sur Ubuntu 20.04 LTS. Vous pouvez maintenant commencer à héberger vos sites web en utilisant la pile LAMP.

Lire ensuite :

  • Installer phpMyAdmin avec la pile LAMP sur Ubuntu 20.04 LTS

Lecture connexe :

  • Installer Nginx, MySQL, PHP (Stack LEMP) sur Ubuntu 20.04 LTS
  • Installer Apache, MariaDB, PHP (Pile LAMP) sur CentOS 8