Installer la pile Apache, MySQL, PHP (LAMP) sur Ubuntu 18.04 LTS
LAMP stack est une plateforme de développement web populaire et open source qui peut être utilisée pour exécuter et déployer des sites web dynamiques et des applications basées sur le web. Typiquement, le stack 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, MariaDB/MYSQL, PHP/Python/Perl. Ce tutoriel décrit comment installer Apache, MySQL, PHP (stack LAMP) sur un serveur Ubuntu 18.04 LTS.
Installer la pile Apache, MySQL, PHP (LAMP) sur Ubuntu 18.04 LTS
Pour les besoins de ce tutoriel, nous utiliserons la machine de test Ubuntu suivante.
- Système d'exploitation : Ubuntu 18.04.1 LTS Édition Serveur
- Adresse IP : 192.168.225.22/24
1. Installer le serveur web Apache
Tout d'abord, mettez à jour le serveur Ubuntu en utilisant les commandes :
$ sudo apt update$ sudo apt upgradeEnsuite, installez le serveur web Apache :
$ sudo apt install apache2Vérifiez si le serveur web Apache fonctionne ou non :
$ sudo systemctl status apache2La sortie d'exemple serait :
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: en
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Tue 2019-02-05 10:48:03 UTC; 1min 5s ago
Main PID: 2025 (apache2)
Tasks: 55 (limit: 2320)
CGroup: /system.slice/apache2.service
├─2025 /usr/sbin/apache2 -k start
├─2027 /usr/sbin/apache2 -k start
└─2028 /usr/sbin/apache2 -k start
Feb 05 10:48:02 ubuntuserver systemd[1]: Starting The Apache HTTP Server...
Feb 05 10:48:03 ubuntuserver apachectl[2003]: AH00558: apache2: Could not reliably
Feb 05 10:48:03 ubuntuserver systemd[1]: Started The Apache HTTP Server.Félicitations ! Le service Apache est en marche et fonctionne !!
1.1 Ajuster le pare-feu pour permettre le serveur web Apache
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 18.04 LTS. Vous devez autoriser les ports http et https en suivant les étapes ci-dessous.
Tout d'abord, listez les profils d'application disponibles sur votre système Ubuntu en utilisant la commande :
$ sudo ufw app listExemple de sortie :
Available applications:
Apache
Apache Full
Apache Secure
OpenSSHComme vous pouvez le voir, les applications Apache et OpenSSH ont des profils UFW installés. Vous pouvez lister des informations sur chaque profil et ses règles incluses en utilisant la commande "ufw app info "Nom du profil" .
Examinons le profil “Apache Full ”. Pour ce faire, exécutez :
$ 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/tcpComme vous le voyez, le profil "Apache Full" inclut les règles permettant le trafic vers les ports 80 et 443 :
Maintenant, exécutez la commande suivante pour autoriser le trafic HTTP et HTTPS entrant pour ce profil :
$ sudo ufw allow in "Apache Full"
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://IP-Address/.
Page de test Apache
Si vous voyez un écran semblable à celui ci-dessus, vous êtes prêt à démarrer. Le serveur Apache fonctionne !
2. Installer MySQL
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 mysqlExemple de sortie :
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enab
Active: active (running) since Tue 2019-02-05 11:07:50 UTC; 17s ago
Main PID: 3423 (mysqld)
Tasks: 27 (limit: 2320)
CGroup: /system.slice/mysql.service
└─3423 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid
Feb 05 11:07:49 ubuntuserver systemd[1]: Starting MySQL Community Server...
Feb 05 11:07:50 ubuntuserver systemd[1]: Started MySQL Community Server.Mysql fonctionne !
2.1 Configurer le mot de passe de l'utilisateur administratif de la base de données (root)
Par défaut, le mot de passe de l'utilisateur root de MySQL est vide. Vous devez sécuriser votre serveur MySQL en exécutant le script suivant :
$ sudo mysql_secure_installationIl vous sera demandé si vous souhaitez configurer le plugin VALIDATE PASSWORD ou non. Ce plugin permet aux utilisateurs de configurer des mots de passe forts pour les identifiants de la base de données. S'il est activé, il vérifiera automatiquement la force du mot de passe et obligera les utilisateurs à ne définir que des mots de passe suffisamment sécurisés. Il est sûr de laisser ce plugin 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 plugin, il vous suffit d'appuyer sur une touche pour passer la partie validation du mot de passe et continuer avec le reste des étapes.
Si votre réponse est Oui, il vous sera demandé de choisir le niveau de validation du mot de passe.
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD PLUGIN 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 plugin?
Press y|Y for Yes, any other key for No yLes validations de mot de passe disponibles sont faible, moyenne et forte. Entrez simplement le numéro approprié (0 pour mot de passe faible, 1 pour mot de passe moyen et 2 pour mot de passe fort) et appuyez 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:Maintenant, saisissez le mot de passe pour l'utilisateur root de MySQL. Veuillez noter que vous devez utiliser le mot de passe de l'utilisateur root de MySQL 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: 50
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : yUne fois que vous avez saisi le mot de passe deux fois, vous verrez la robustesse du mot de passe (Dans notre cas, elle est de 50). 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 satisfait de mon mot de passe actuel, donc j'ai choisi y.
Pour le reste des questions, tapez simplement y et appuyez sur ENTRÉE. Cela supprimera l'utilisateur anonyme, interdira la connexion distante 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!C'est tout. Le mot de passe pour l'utilisateur root de MySQL a été défini.
2.2 Changer la méthode d'authentification pour l'utilisateur root de MySQL
Par défaut, l'utilisateur root de MySQL est configuré pour s'authentifier en utilisant le plugin auth_socket dans MySQL 5.7 et les versions plus récentes sur Ubuntu. Bien que cela renforce la sécurité, cela compliquera également les choses lorsque vous accédez à votre serveur de base de données en utilisant des programmes externes, par exemple phpMyAdmin. Pour résoudre ce problème, vous devez changer la méthode d'authentification de auth_socket à mysql_native_password. Pour ce faire, connectez-vous à votre invite MySQL en utilisant la commande :
$ sudo mysqlExécutez la commande suivante à l'invite mysql pour trouver la méthode d'authentification actuelle de tous les comptes utilisateur mysql :
SELECT user,authentication_string,plugin,host FROM mysql.user;Exemple de sortie :
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *F126737722832701DD3979741508F05FA71E5BA0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)Comme vous le voyez, l'utilisateur root de MySQL utilise le plugin auth_socket pour l'authentification.
Pour changer cette authentification en méthode mysql_native_password, exécutez la commande suivante dans l'invite mysql. N'oubliez pas de remplacer "password" par un mot de passe fort et unique de votre choix. Si vous avez activé le plugin VALIDATION, assurez-vous d'avoir utilisé un mot de passe fort conformément aux exigences de la politique actuelle.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';Mettez à jour les modifications en utilisant la commande :
FLUSH PRIVILEGES;
Vérifiez maintenant à nouveau si la méthode d'authentification a été modifiée ou non en utilisant la commande :
SELECT user,authentication_string,plugin,host FROM mysql.user;Exemple de sortie :
Bien ! Maintenant, l'utilisateur root de MySQL peut s'authentifier en utilisant un mot de passe pour accéder au shell MySQL.
Quitter l'invite MySQL :
exit3. Installer PHP
Pour installer PHP, exécutez :
$ sudo apt install php libapache2-mod-php php-mysqlAprès avoir installé PHP, créez un fichier info.php dans le dossier racine des documents d'Apache. Habituellement, le dossier racine des documents d'Apache sera /var/www/html/ ou /var/www/ dans la plupart des distributions Linux basées sur Debian. Dans Ubuntu 18.04 LTS, il s'agit de /var/www/html/.
Créons le fichier info.php dans le dossier racine d'Apache :
$ sudo vi /var/www/html/info.phpAjoutez 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 apache23.1 Tester PHP
Ouvrez votre navigateur web et naviguez vers l'URL http://IP-address/info.php.
Vous allez voir maintenant la page de test php.
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 noetDéplacez le fichier "index.php" en premier. Une fois que vous avez apporté 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 noetAppuyez 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 apache23.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- | lessExemple de sortie :
Utilisez les touches fléchées pour parcourir le résultat. Pour quitter, tapez q et appuyez sur la touche ENTRÉE.
Pour trouver les détails de n'importe quel module php particulier, par exemple php-gd, exécutez :
$ sudo apt-cache show php-gdPour installer un module PHP, exécutez :
$ sudo apt install php-gdPour installer tous les modules (pas nécessaire cependant), exécutez :
$ sudo apt-get install php*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.
Ensuite, vous pourriez vouloir installer des outils de gestion de bases de données pour gérer facilement les bases de données via un navigateur web. Dans ce cas, installez phpMyAdmin comme décrit dans le lien suivant.
- Installer phpMyAdmin avec la pile LAMP sur Ubuntu 18.04 LTS
Félicitations ! Nous avons configuré avec succès la pile LAMP sur le serveur Ubuntu 18.04 LTS.
Lire aussi :
- Installer la pile Nginx, MariaDB, PHP (LEMP) sur Ubuntu 18.04 LTS
- Installer la pile Apache, MariaDB, PHP (LAMP) sur Arch Linux
- Installer la pile Nginx, MariaDB, PHP (LEMP) sur Arch Linux
Et voilà, c'est tout pour le moment. Comme vous pouvez le voir, configurer une pile LAMP sur Ubuntu est absolument facile et simple.
Référence :
- Océan Numérique




