Comment installer une pile Linux, Apache, MariaDB, PHP (LAMP) sur Debian 9

introduction

Une pile «LAMP» est 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 ariaDB et le contenu dynamique est traité par P HP.

Dans ce guide, nous allons installer une pile LAMP sur un serveur Debian 9.

Conditions préalables

Pour compléter ce didacticiel, vous devez disposer d’un serveur Debian 9 doté d’un compte utilisateur non root + sudo + et d’un pare-feu de base. Ceci peut être configuré en utilisant notre initial initial du guide de configuration du serveur pour Debian 9.

É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 a été largement utilisé dans la majeure partie de l’histoire du Web, ce qui en fait un excellent choix par défaut pour l’hébergement d’un site Web.

Installez Apache en utilisant le gestionnaire de paquets de Debian, + 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 ils vont occuper. Appuyez sur + Y + et appuyez sur + ENTER pour continuer et l’installation se poursuivra.

Ensuite, en supposant que vous ayez suivi les instructions de configuration initiale du serveur en installant et en activant le pare-feu UFW, assurez-vous que votre pare-feu autorise le trafic HTTP et HTTPS.

Une fois installé sur Debian 9, UFW est fourni avec des profils d’application que vous pouvez utiliser pour modifier les paramètres de votre pare-feu. Affichez la liste complète des profils d’application en exécutant:

sudo ufw app list

Les profils + WWW + permettent de gérer les ports utilisés par les serveurs Web:

OutputAvailable applications:
. . .
 WWW
 WWW Cache
 WWW Full
 WWW Secure
. . .

Si vous inspectez le profil + WWW Full +, il indique qu’il active le trafic vers les ports + 80 + et + 443 +:

sudo ufw app info "WWW Full"
OutputProfile: WWW Full
Title: Web Server (HTTP,HTTPS)
Description: Web Server (HTTP,HTTPS)

Ports:
 ,

Autorisez le trafic HTTP et HTTPS entrant pour ce profil:

sudo ufw allow in “WWW Full”

Vous pouvez immédiatement effectuer une vérification ponctuelle pour vérifier que tout s’est déroulé comme prévu en visitant l’adresse IP publique de votre serveur dans votre navigateur Web:

http://

Vous verrez la page Web par défaut de Debian 9 Apache, qui est là à des fins d’information et de test. Ça devrait ressembler a quelque chose comme ca:

image: http: //assets.digitalocean.com/how-to-install-lamp-debian-9/small_apache_default_debian9.png [Debian 9 Apache par défaut]

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

Si vous ne connaissez pas l’adresse IP publique de votre serveur, vous pouvez la trouver de différentes 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 outils + iproute2 + 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 en utiliser qu’une seule, alors n’hésitez pas à les essayer.

Une autre méthode consiste à utiliser l’utilitaire + curl + pour contacter un tiers afin de vous expliquer comment it 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 MariaDB

Maintenant que votre serveur Web est opérationnel, il est temps d’installer MariaDB. MariaDB 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.

MariaDB est un fork de MySQL construit par la communauté. Dans Debian 9, le serveur MySQL par défaut est MariaDB 10.1, et le paquetage + mysql-server +, qui est normalement utilisé pour installer MySQL, est un paquetage de transition qui installe réellement MariaDB. Cependant, il est recommandé d’installer MariaDB avec le paquet actuel du programme, + mariadb-server.

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

sudo apt install mariadb-server

Cette commande affiche é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é livré avec MariaDB préinstallé, qui supprimera certains paramètres par défaut non sécurisés 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 mènera à travers une série d’invites dans lesquelles vous pourrez apporter des modifications aux options de sécurité de votre installation MariaDB. La première invite vous demandera de saisir la base de données actuelle * racine * mot de passe. Il s’agit d’un compte administratif dans MariaDB doté de privilèges accrus. 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 à MariaDB). Comme vous venez d’installer MariaDB et que vous n’avez encore apporté aucune modification à la configuration, ce mot de passe sera vide. Il vous suffit donc d’appuyer sur les touches + ENTER + à l’invite.

L’invite suivante vous demande si vous souhaitez configurer une base de données * root *. Tapez + A + puis appuyez sur + ENTER. Dans Debian, le compte * root * de MariaDB est étroitement lié à la maintenance automatisée du système. Par conséquent, nous ne devrions pas modifier les méthodes d’authentification configurées pour ce compte. Cela permettrait à une mise à jour de package de casser le système de base de données en supprimant l’accès au compte administratif. Ensuite, nous verrons comment configurer éventuellement un compte administratif supplémentaire pour l’accès par mot de passe si l’authentification de socket n’est pas appropriée à votre cas d’utilisation.

À partir de là, vous pouvez appuyer sur + Y + puis sur + + ENTER + `pour accepter les valeurs par défaut pour toutes les questions suivantes. Cela supprimera certains utilisateurs anonymes et la base de données test, désactivera les connexions * root * distantes et chargera ces nouvelles règles afin que MariaDB respecte immédiatement les modifications que vous avez apportées.

Dans les nouvelles installations sur les systèmes Debian, l’utilisateur * root * MariaDB est configuré pour s’authentifier à l’aide du plugin + unix_socket + par défaut plutôt qu’avec 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 des droits administratifs sur un programme externe (par exemple, phpMyAdmin).

Étant donné que le serveur utilise le compte * root * pour des tâches telles que la rotation des journaux et le démarrage et l’arrêt du serveur, il est préférable de ne pas modifier les détails d’authentification du compte * root *. La modification des informations d’identification du compte dans le répertoire + / etc / mysql / debian.cnf + peut fonctionner initialement, mais les mises à jour de paquetages peuvent potentiellement remplacer ces modifications. Au lieu de modifier le compte * root *, les responsables de package recommandent de créer un compte administratif séparé si vous devez configurer un accès par mot de passe.

Pour ce faire, nous allons créer un nouveau compte appelé + admin + avec les mêmes fonctionnalités que le compte * root *, mais configuré pour l’authentification par mot de passe. Pour ce faire, ouvrez l’invite MariaDB à partir de votre terminal:

sudo mariadb

Nous pouvons maintenant créer un nouvel utilisateur avec les privilèges * root * et un accès basé sur un mot de passe. Changez le nom d’utilisateur et le mot de passe pour qu’ils correspondent à vos préférences:

GRANT ALL ON *.* TO ''@'localhost' IDENTIFIED BY '' WITH GRANT OPTION;

Purgez les privilèges pour vous assurer qu’ils sont enregistrés et disponibles dans la session en cours:

FLUSH PRIVILEGES;

Ensuite, quittez le shell MariaDB:

exit

Désormais, chaque fois que vous souhaitez accéder à votre base de données en tant que nouvel utilisateur administratif, vous devrez vous authentifier en tant qu’utilisateur avec le mot de passe que vous venez de définir à l’aide de la commande suivante:

mariadb -u  -p

À ce stade, votre système de base de données est 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 installation qui traitera le code pour afficher le contenu dynamique. Il peut exécuter des scripts, se connecter à vos bases de données MariaDB pour obtenir des informations et transmettre le contenu traité à votre serveur Web pour l’afficher.

Encore une fois, utilisez le système + apt + pour installer PHP. De plus, incluez cette fois des packages d’aide pour que le code PHP puisse s’exécuter sous le serveur Apache et dialoguer avec votre base de données MariaDB:

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 nommé + index.html +. Nous voulons dire au serveur Web de préférer les fichiers PHP aux autres, alors demandez à Apache de commencer par rechercher un fichier + index.php +.

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

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

Il ressemblera à ceci:

/etc/apache2/mods-enabled/dir.conf

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

Déplacez le fichier d’index PHP (surligné ci-dessus) à la première position après la spécification + DirectoryIndex +, comme ceci:

/etc/apache2/mods-enabled/dir.conf

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

Lorsque vous avez terminé, enregistrez 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 service + apache2 + en utilisant + systemctl +:

sudo systemctl status apache2
Sample Output● apache2.service - The Apache HTTP Server
  Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
  Active: active (running) since Tue 2018-09-04 18:23:03 UTC; 9s ago
 Process: 22209 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
 Process: 22216 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 22221 (apache2)
   Tasks: 6 (limit: 4915)
  CGroup: /system.slice/apache2.service
          ├─22221 /usr/sbin/apache2 -k start
          ├─22222 /usr/sbin/apache2 -k start
          ├─22223 /usr/sbin/apache2 -k start
          ├─22224 /usr/sbin/apache2 -k start
          ├─22225 /usr/sbin/apache2 -k start
          └─22226 /usr/sbin/apache2 -k start

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, dirigez les résultats de + apt search + dans + less +, un pageur qui vous permet de faire défiler le résultat d’autres commandes:

apt search php- | less

Utilisez les touches fléchées pour faire défiler de haut en bas 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:

OutputSorting...
Full Text Search...
bandwidthd-pgsql/stable 2.0.1+cvs20090917-10 amd64
 Tracks usage of TCP/IP and builds html files with graphs

bluefish/stable 2.2.9-1+b1 amd64
 advanced Gtk+ text editor for web and software development

cacti/stable 0.8.8h+ds1-10 all
 web interface for graphing of monitoring systems

cakephp-scripts/stable 2.8.5-1 all
 rapid application development framework for PHP (scripts)

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

haserl/stable 0.9.35-2+b1 amd64
 CGI scripting program for embedded environments

kdevelop-php-docs/stable 5.0.3-1 all
 transitional package for kdevelop-php

kdevelop-php-docs-l10n/stable 5.0.3-1 all
 transitional package for kdevelop-php-l10n
…
:

Pour en savoir plus sur ce que fait chaque module, vous pouvez rechercher sur Internet plus d’informations à leur sujet. Vous pouvez également consulter la description longue du paquet en tapant:

apt show

Il y aura beaucoup de sorties, avec un champ appelé + Description + qui donnera une explication plus longue de la fonctionnalité fournie par le module.

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

apt show php-cli

Outre de nombreuses autres informations, vous trouverez quelque chose qui ressemble à ceci:

Output…
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 Debian's default
PHP version (currently 7.0).
…

Si, après avoir effectué des recherches, vous souhaitez installer un paquet, vous pouvez le faire en utilisant la commande + apt install + comme vous l’avez fait pour les autres logiciels.

Si vous avez décidé que + php-cli + est quelque chose dont vous avez besoin, 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 commande + apt install +, comme ceci:

sudo apt install

À ce stade, votre pile LAMP est installée et configurée. Avant d’apporter des modifications ou de déployer une application, il serait utile de tester de manière proactive votre configuration PHP au cas où il y aurait un problème à résoudre.

É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é web root.

Dans Debian 9, ce répertoire se trouve dans + / 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:

/var/www/html/info.php

<?php
phpinfo();
?>

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

Vous pouvez maintenant vérifier 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:///info.php

La page à laquelle vous venez devrait ressembler à ceci:

image: https: //assets.digitalocean.com/how-to-install-lamp-debian-9/small_php_info_debian9.png [informations PHP par défaut de Debian 9]

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 aux informations ultérieurement.

Conclusion

Maintenant que vous avez une pile LAMP installée, vous avez beaucoup de choix pour ce qu’il faut faire ensuite. En gros, 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.