Debian 10: Installer un serveur LAMP (Apache, MySQL, PHP)

Introduction

LAMP est un acronyme :

  • Linux : Le système d’exploitation
  • Apache : Le serveur Web
  • MySQL / MariaDB : Le serveur de Base de données
  • PHP : Le langage de script

Avec LAMP, on peut donc mettre en place un serveur Web, hébergeant un site web dynamique écrit en PHP, tout en allant chercher des données dans une base MySQL ou maintenant MariaDB, son fork.

Installation

D’abord, on met le système à jour :

apt update && apt full-upgrade

On va avoir besoin de

  • apache2, c’est le serveur web
  • php c’est le langage php
  • libapache2-mod-php c’est le module apache pour exécuter php
  • mariadb-server c’est le serveur de base de données

Ce tutoriel a été vérifié sur Debian 9 et 10

Le serveur Web : apache

On installe le serveur apache et son module permettant de gérer PHP plus tard :

apt install apache2 libapache2-mod-php

A partir de là, si on accède au serveur via son adresse IP, on a la page d’Apache, le serveur web fonctionne.

On peut s’assurer que le service démarrera automatiquement au démarrage:

systemctl enable apache2

On peut au passage activer quelques modules d’Apache. Sous Debian, c’est la commande a2enmod qui permet cela.
Pour la réécriture d’url :

a2enmod rewrite

Pour la compression :

a2enmod deflate

Pour contrôler et modifier les headers :

a2enmod headers

Tous les modules se trouvent dans /etc/apache2/mods-available et ceux activés dans /etc/apache2/mods-enabled
Après chaque activation de module, il faut relancer apache. moi je préfère juste recharger la configuration :

systemctl reload apache2

La configuration d’Apache se fait via le fichier /etc/apache2/apache2.conf. C’est la configuration générale :

vi /etc/apache2/apache2.conf

On peut masquer les infos de version, de distribution en ajoutant dans ce fichier :

ServerSignature Off

Il faut évidemment recharger la configuration d’apache après chaque modification.

PHP

D’abord, on installe PHP :

apt install php php-cli

A ce stade, PHP est installé, mais on n’a pas grand chose. Il faut installer des modules en fonction des besoins. Les modules sont nommés de la manière suivante : php-xxx. On peut les lister avec :

apt search ^php-

Pour notre utilisation, on va installer les plus courants :

apt install php-{curl,gd,intl,memcache,xml,zip,mbstring,json}

Pour interagir avec SQL :

apt install php-mysql

Ce paquet permet d’attaquer une base de données MySQL/MariaDB avec mysqli ou pdo.
Une fois tout ça installé, on recharge apache :

systemctl reload apache2

On va tester le bon fonctionnement de PHP.
On se rend dans le répertoire par défaut de la racine d’apache :

cd /var/www/html

Et on créé un fichier dans lequel on demande d’afficher les infos PHP :

echo "<?php phpinfo(); ?>" > test.php

Ensuite, on affiche notre page via le navigateur :

On peut éditer les options de PHP via le fichier /etc/php/7.*/apache2/php.ini ou créer un fichier personnalisé dans /etc/php/7.*/apache2/conf.d.

MariaDB : La base de données

Maintenant, il ne reste plus que le moteur de base de données à installer.
On installe donc MariaDB, le serveur :

apt install mariadb-server

Une fois fait, on démarre l’installation :

mysql_secure_installation

Une série de questions vont s’afficher.
On définit le mot de passe root :

Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!

On supprime les utilisateurs anonymes, les connexions distantes de root, etc…

Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

On teste la connexion à la base de données :

mysql -u root -p

On créé ensuite un utilisateur avec tous les droits pour ne pas utiliser root :

CREATE USER 'adrien'@'localhost' IDENTIFIED BY 'mdp';
GRANT ALL PRIVILEGES ON *.* TO 'adrien'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Et on se déconnecte :

Code SQL :

exit

On peut s’assurer que le service se lance à chaque démarrage du serveur :

systemctl enable mariadb

Notre serveur LAMP est installé 

Les virtualhosts sous Debian…

Pour les virtualhosts, le fichier du virtualhost par défaut est /etc/apache2/sites-available000-default.conf. On peut éditer celui là où, dans la logique debian, si on peut créer plusieurs Virtualhosts pour nos différents sites dans /etc/apache2/sites-available.
Par exemple :

vi /etc/apache2/sites-available/linuxtricksdebian.conf
<VirtualHost *:80>
ServerName linuxtricksdebian.fr
ServerAlias www.linuxtricksdebian.fr DocumentRoot /var/www/linuxtricksdebian <Directory /var/www/linuxtricksdebian>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

Ensuite, on active le site avec a2ensite :

a2ensite linuxtricksdebian

Et on recharge apache2 :

systemctl reload apache2

Activer HTTPS : mod SSL

Si on souhaite activer HTTPS, il faut installer openssl si ce n’est pas déjà fait.
Ensuite, il nous faut activer le module SSL :

a2enmod ssl

Et activer le site par défaut SSL :

a2ensite default-ssl

En se connectant en HTTPS, ça fonctionne. On a une erreur de certificat, normal, il est autogénéré. Pour celà, il faut utiliser un certificat reconnu par une autorité de certification ou bien se générer un certificat avec Lets Encrypt : https://www.linuxtricks.fr/wiki/let-s-encrypt-mise-en-place

PassionInfo

PassionInfo

L'informatique, bien plus qu'une passion ...

Les commentaires sont fermés.