Installer LAMP: Linux, Apache, MySQL et PHP sur Ubuntu 18.04

Introduction

Le terme « LAMP » désigne un groupe de logiciels Open Source généralement installés ensemble pour permettre à un serveur d’héberger des sites Web dynamiques et des applications Web. Ce terme est en fait un acronyme qui représente le système d’exploitation L inux, avec le serveur Web A pache. Les données du site sont stockées dans une base de données M ySQL, et le contenu dynamique est générée par P HP.

Dans ce guide, nous allons installer LAMP sur un serveur Ubuntu 18.04.

Conditions préalables

Afin de compléter ce didacticiel, vous devez disposer d’un serveur Ubuntu 18.04 avec un compte sudo utilisateur non root et un pare-feu de base. Ceci peut être configuré à l’aide de notre guide de configuration initiale du serveur pour Ubuntu 18.04 .

Étape 1 – Installer Apache et mettre à jour le pare-feu

Le serveur Web Apache est l’un des serveurs Web les plus populaires au monde. Il est bien documenté et largement utilisé dans l’histoire du Web, ce qui en fait un excellent choix par défaut pour l’hébergement d’un site Web.

Installez Apache à l’aide du gestionnaire de paquets d’Ubuntu apt:

$ sudo apt update
$ sudo apt install apache2

S’agissant d’une commande sudo, ces opérations sont exécutées avec les privilèges root. Il vous demandera le mot de passe de votre utilisateur régulier pour vérifier vos intentions.

Une fois que vous avez entré votre mot de passe, apt vous dira quels paquets il compte installer et combien d’espace disque supplémentaire qu’ils vont occuper. Appuyez Y et appuyez sur ENTER pour continuer, et l’installation se poursuivra.

Ajuster le pare-feu pour autoriser le trafic Web

Ensuite, en supposant que vous ayez suivi les instructions de configuration initiale du serveur et activé le pare-feu UFW, assurez-vous que votre pare-feu autorise le trafic HTTP et HTTPS. Vous pouvez vérifier que UFW a un profil d’application pour Apache comme suit:

$ sudo ufw app list

Available applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

Si vous regardez le profile Apache Full, il devrait montrer qu’il active le trafic vers les ports 80et 443:

$ sudo ufw app info "Apache Full"

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

Autorisez le trafic HTTP et HTTPS entrant pour ce profil:

$ sudo ufw allow in "Apache Full"

Vous pouvez immédiatement effectuer une vérification ponctuelle pour vérifier que tout s’est passé comme prévu en visitant l’adresse IP publique de votre serveur dans votre navigateur Web (voir la note sous le titre suivant pour savoir quelle est votre adresse IP publique si vous ne disposez pas de ces informations.) déjà):

http://your_server_ip

Vous verrez la page Web par défaut Ubuntu 18.04 Apache, disponible à des fins d’information et de test. Ça devrait ressembler a quelque chose comme ca:

Ubuntu 18.04 Apache par défaut

Si vous voyez cette page, votre serveur Web est maintenant correctement installé et accessible via votre pare-feu.

Comment trouver l’adresse IP publique de votre serveur

Si vous ne connaissez pas l’adresse IP publique de votre serveur, vous pouvez le trouver de plusieurs façons. Il s’agit généralement de l’adresse que vous utilisez pour vous connecter à votre serveur via SSH.

Il existe différentes manières de procéder à partir de la ligne de commande. Premièrement, vous pouvez utiliser les iproute2 outils pour obtenir votre adresse IP en tapant ceci:

$ ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Cela vous donnera deux ou trois lignes en arrière. Ce sont toutes des adresses correctes, mais votre ordinateur ne peut utiliser que l’une d’elles, alors n’hésitez pas à les essayer.

Une autre méthode consiste à utiliser l’utilitaire curl pour contacter une partie externe afin de vous dire comment il voit votre serveur. Ceci est fait en demandant à un serveur spécifique quelle est votre adresse IP:

$ sudo apt install curl
$ curl http://icanhazip.com

Quelle que soit la méthode utilisée pour obtenir votre adresse IP, saisissez-la dans la barre d’adresse de votre navigateur Web pour afficher la page Apache par défaut.

Étape 2 – Installation de MySQL

Maintenant que votre serveur Web est opérationnel, il est temps d’installer MySQL. MySQL est un système de gestion de base de données. Fondamentalement, il organisera et fournira un accès aux bases de données sur lesquelles votre site peut stocker des informations.

Encore une fois, utilisez apt pour acquérir et installer ce logiciel:

$ sudo apt install mysql-server

Remarque : Dans ce cas, vous n’avez pas besoin d’exécuter sudo apt update avant la commande. En effet, vous l’avez récemment exécuté pour installer Apache. L’index de paquet sur votre ordinateur devrait déjà être à jour.

Cette commande vous montrera également une liste des packages qui seront installés, ainsi que la quantité d’espace disque qu’ils vont occuper. Entrez Y pour continuer.

Une fois l’installation terminée, exécutez un simple script de sécurité fourni avec MySQL, pré installé, qui supprimera certains paramètres par défaut dangereux et bloquera l’accès à votre système de base de données. Démarrez le script interactif en exécutant:

$ sudo mysql_secure_installation

Cela vous demandera si vous voulez configurer le VALIDATE PASSWORD PLUGIN.

Remarque: l’activation de cette fonctionnalité est une sorte de jugement. Si activé, les mots de passe qui ne correspondent pas aux critères spécifiés seront rejetés par MySQL avec une erreur. Cela posera des problèmes si vous utilisez un mot de passe faible avec un logiciel qui configure automatiquement les informations d’identification de l’utilisateur MySQL, telles que les paquets Ubuntu pour phpMyAdmin. Il est prudent de laisser la validation désactivée, mais vous devez toujours utiliser des mots de passe forts et uniques pour les informations d’identification de la base de données.

Répondez Ypar oui, ou par toute autre chose, continuez sans activer.

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:

Si vous répondez «oui», il vous sera demandé de sélectionner un niveau de validation du mot de passe. Gardez à l’esprit que si vous entrez 2 pour le niveau le plus fort, vous recevrez des erreurs lorsque vous tenterez de définir un mot de passe ne contenant pas de chiffres, de lettres majuscules et minuscules et de caractères spéciaux, ou reposant sur des mots du dictionnaire courants.

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: 1

Que vous choisissiez ou non de le configurer VALIDATE PASSWORD PLUGIN, votre serveur vous demandera ensuite de sélectionner et de confirmer un mot de passe pour l’ utilisateur root MySQL. C’est un compte administratif dans MySQL qui a augmenté ses privilèges. Considérez-le comme similaire au compte root du serveur lui-même (bien que celui que vous configurez maintenant soit un compte spécifique à MySQL). Assurez-vous qu’il s’agit d’un mot de passe fort et unique et ne le laissez pas vierge.

Si vous avez activé la validation du mot de passe, la force du mot de passe du mot de passe root que vous venez d’entrer vous sera affichée et votre serveur vous demandera si vous souhaitez modifier ce mot de passe. Si votre mot de passe actuel vous convient, entrez N «non» à l’invite:

Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

Pour le reste des questions, appuyez Y sur la ENTER touche à chaque invite et appuyez dessus. Cela supprimera certains utilisateurs anonymes et la base de données de test, désactivera les connexions racine à distance et chargera ces nouvelles règles afin que MySQL respecte immédiatement les modifications que vous avez apportées.

Notez que dans les systèmes Ubuntu exécutant MySQL 5.7 (et les versions ultérieures), l’ utilisateur root MySQL est configuré pour s’authentifier à l’aide du plugin auth_socket par défaut plutôt que d’un mot de passe. Cela permet une sécurité et une convivialité accrues dans de nombreux cas, mais peut également compliquer les choses lorsque vous devez autoriser un programme externe (par exemple, phpMyAdmin) à accéder à l’utilisateur.

Si vous préférez utiliser un mot de passe pour vous connecter à MySQL en tant que root, vous devrez changer sa méthode d’authentification de auth_socket à mysql_native_password. Pour ce faire, ouvrez l’invite MySQL depuis votre terminal:

$ sudo mysql

Ensuite, vérifiez la méthode d’authentification utilisée par chacun de vos comptes d’utilisateur MySQL avec la commande suivante:

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

+------------------+-------------------------------------------+-----------------------+-----------+
| 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 | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Dans cet exemple, vous pouvez voir que l’ utilisateur root s’authentifie à l’aide du plugin auth_socket. Pour configurer le compte root afin qu’il s’authentifie avec un mot de passe, exécutez la commande suivante ALTER USER. Assurez-vous de changer le password avec un mot de passe fort de votre choix:

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

Ensuite, exécutez la commande FLUSH PRIVILEGES qui demande au serveur de recharger les privilèges et d’appliquer vos nouvelles modifications:

mysql> FLUSH PRIVILEGES;

Vérifiez à nouveau les méthodes d’authentification utilisées par chacun de vos utilisateurs pour vous assurer que root ne s’authentifie plus à l’aide du plugin auth_socket:

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

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Vous pouvez voir dans cet exemple de sortie que l’ utilisateur root MySQL s’authentifie maintenant à l’aide d’un mot de passe. Une fois que vous confirmez cela sur votre propre serveur, vous pouvez quitter le shell MySQL:

mysql> exit

À ce stade, votre système de base de données est maintenant configuré et vous pouvez passer à l’installation de PHP, le dernier composant de la pile LAMP.

Étape 3 – Installation de PHP

PHP est le composant de votre configuration qui traitera le code pour afficher le contenu dynamique. Il peut exécuter des scripts, se connecter à vos bases de données MySQL pour obtenir des informations et transmettre le contenu traité à votre serveur Web pour l’afficher.

Encore une fois, utilisez le aptsystème pour installer PHP. De plus, incluez quelques paquets d’aide cette fois pour que le code PHP puisse s’exécuter sous le serveur Apache et communiquer avec votre base de données MySQL:

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

Cela devrait installer PHP sans aucun problème. Nous allons tester cela dans un instant.

Dans la plupart des cas, vous voudrez modifier la façon dont Apache sert les fichiers lorsqu’un répertoire est demandé. Actuellement, si un utilisateur demande un répertoire au serveur, Apache recherchera d’abord un fichier appelé index.html. Nous voulons dire au serveur Web de préférer les fichiers PHP aux autres, alors demandez à Apache de index.php commencer par rechercher un fichier.

Pour ce faire, tapez cette commande pour ouvrir le dir.conf fichier dans un éditeur de texte doté des privilèges root:

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

Il ressemblera à ceci:

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

Déplacez le fichier d’index PHP (mis en évidence ci-dessus) à la première position après la balise DirectoryIndex, comme ceci:

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

Lorsque vous avez terminé, sauvegardez et fermez le fichier en appuyant sur CTRL+X. Confirmez la sauvegarde en tapant Y puis appuyez sur ENTER pour vérifier l’emplacement de sauvegarde du fichier.

Après cela, redémarrez le serveur Web Apache pour que vos modifications soient reconnues. Faites ceci en tapant ceci:

sudo systemctl restart apache2

Vous pouvez également vérifier le statut du apache2 service en utilisant systemctl:

$ sudo systemctl status apache2
● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Tue 2018-04-23 14:28:43 EDT; 45s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 13581 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
  Process: 13605 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
    Tasks: 6 (limit: 512)
   CGroup: /system.slice/apache2.service
           ├─13623 /usr/sbin/apache2 -k start
           ├─13626 /usr/sbin/apache2 -k start
           ├─13627 /usr/sbin/apache2 -k start
           ├─13628 /usr/sbin/apache2 -k start
           ├─13629 /usr/sbin/apache2 -k start
           └─13630 /usr/sbin/apache2 -k start

Appuyez sur Q pour quitter le status.

Pour améliorer les fonctionnalités de PHP, vous avez la possibilité d’installer des modules supplémentaires. Pour voir les options disponibles pour les modules et les bibliothèques PHP, transférez les résultats apt search dans less un pager qui vous permet de faire défiler le résultat des autres commandes:

$ apt search php- | less

Utilisez les touches fléchées pour faire défiler et appuyez sur Q pour quitter.

Les résultats sont tous des composants facultatifs que vous pouvez installer. Il vous donnera une brève description pour chacun:

bandwidthd-pgsql/bionic 2.0.1+cvs20090917-10ubuntu1 amd64
  Tracks usage of TCP/IP and builds html files with graphs

bluefish/bionic 2.2.10-1 amd64
  advanced Gtk+ text editor for web and software development

cacti/bionic 1.1.38+ds1-1 all
  web interface for graphing of monitoring systems

ganglia-webfrontend/bionic 3.6.1-3 all
  cluster monitoring toolkit - web front-end

golang-github-unknwon-cae-dev/bionic 0.0~git20160715.0.c6aac99-4 all
  PHP-like Compression and Archive Extensions in Go

haserl/bionic 0.9.35-2 amd64
  CGI scripting program for embedded environments

kdevelop-php-docs/bionic 5.2.1-1ubuntu2 all
  transitional package for kdevelop-php

kdevelop-php-docs-l10n/bionic 5.2.1-1ubuntu2 all
  transitional package for kdevelop-php-l10n
…
:

Pour en savoir plus sur ce que fait chaque module, vous pouvez effectuer une recherche sur Internet pour obtenir plus d’informations à leur sujet. Sinon, regardez la description longue du paquet en tapant:

$ apt show package_name

Il y aura beaucoup de sorties, avec un champ appelé Descriptionqui expliquera plus longuement les fonctionnalités fournies par le module.

Par exemple, pour savoir ce que fait le php-climodule, vous pouvez taper ceci:

$ apt show php-cli

En plus d’une grande quantité d’informations, vous trouverez quelque chose qui ressemble à ceci:

…
Description: command-line interpreter for the PHP scripting language (default)
 This package provides the /usr/bin/php command interpreter, useful for
 testing PHP scripts from a shell or performing general shell scripting tasks.
 .
 PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
 open source general-purpose scripting language that is especially suited
 for web development and can be embedded into HTML.
 .
 This package is a dependency package, which depends on Ubuntu's default
 PHP version (currently 7.2).
…

Si, après avoir effectué des recherches, vous souhaitez installer un package, vous pouvez le faire en utilisant la commande apt install que vous avez utilisée pour les autres logiciels.

Si vous avez décidé que php-cli vous avez besoin de quelque chose, vous pouvez taper:

$ sudo apt install php-cli

Si vous souhaitez installer plusieurs modules, vous pouvez le faire en les énumérant, séparés par un espace, en suivant la apt installcommande, comme ceci:

$ sudo apt install package1 package2 ...

À ce stade, votre pile LAMP est installée et configurée. Avant de procéder à des modifications supplémentaires ou de déployer une application, il serait utile de tester de manière proactive votre configuration PHP au cas où certains problèmes devraient être résolus.

Étape 4 – Test du traitement PHP sur votre serveur Web

Afin de vérifier que votre système est correctement configuré pour PHP, créez un script PHP très basique appelé info.php. Pour qu’Apache trouve ce fichier et le serve correctement, il doit être enregistré dans un répertoire très spécifique, appelé « racine Web ».

Dans Ubuntu 18.04, ce répertoire est situé à /var/www/html/. Créez le fichier à cet emplacement en lançant:

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

Cela ouvrira un fichier vierge. Ajoutez le texte suivant, qui est un code PHP valide, dans le fichier:

<?php
phpinfo();
?>

Lorsque vous avez terminé, enregistrez et fermez le fichier.

Vous pouvez maintenant tester si votre serveur Web est capable d’afficher correctement le contenu généré par ce script PHP. Pour essayer ceci, visitez cette page dans votre navigateur Web. Vous aurez à nouveau besoin de l’adresse IP publique de votre serveur.

L’adresse que vous voudrez visiter est:

http://your_server_ip/info.php

La page à laquelle vous venez devrait ressembler à ceci:

Ubuntu 18.04 par défaut informations PHP

Cette page fournit des informations de base sur votre serveur du point de vue de PHP. C’est utile pour le débogage et pour vous assurer que vos paramètres sont appliqués correctement.

Si vous pouvez voir cette page dans votre navigateur, alors votre PHP fonctionne comme prévu.

Vous voudrez probablement supprimer ce fichier après ce test car il pourrait en fait fournir des informations sur votre serveur à des utilisateurs non autorisés. Pour ce faire, exécutez la commande suivante:

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

Vous pouvez toujours recréer cette page si vous devez accéder à ces informations ultérieurement.

Conclusion

Maintenant que vous avez installé un serveur LAMP, vous avez beaucoup de choix pour la suite. Fondamentalement, vous avez installé une plate-forme qui vous permettra d’installer la plupart des types de sites Web et de logiciels Web sur votre serveur.

Lors de la prochaine étape, vous devez vous assurer que les connexions à votre serveur Web sont sécurisées en les servant via HTTPS. L’option la plus simple consiste à utiliser Let’s Encrypt pour sécuriser votre site avec un certificat gratuit TLS / SSL.

Laisser un commentaire

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