LAMP Debian 10 Buster

Préambule

J’installe cet LAMP Debian 10 sur un système de fichier en btrfs pour son avantage concernant la déduplication des données (un fichier en double ne prend qu’une seule fois la place sur le disque). En effet, je vais avoir de nombreuses fois les mêmes fichiers WordPress.

Etant donné qu’il ne s’agit que d’un serveur de test sans accès depuis le monde extérieur et non d’un serveur de production, je fais l’impasse sur certaines « sécurisations ». Mais en pieds de pages dans les sources, je mets des liens pour apporter des modifications pour sécuriser d’avantage ce serveur.

Après avoir fait une configuration de base (voir ici), je vais installer Apache, MariaDB et PHP sur ma Debian.

Etape par étape

J’installe l’ensemble des paquets en une seule fois :

apt install openssl snapd wget git apache2 libapache2-mod-php php8.0 php8.0-{bcmath,curl,gd,imagick,mbstring,mysql,xml,zip} php-cli php-{cli,cgi,common,curl,gd,gettext,gmagick,imagick,intl,json,mbstring,memcache,mysql,pear,phpseclib,xml,zip} mariadb-server webp -y

Je rends le service apache automatique au démarrage :

systemctl enable apache2

J’ajoute quelques modules utiles pour apache :

a2enmod rewrite deflate headers

Enfin, je relance le service :

systemctl restart apache2

Tous les modules disponibles se trouvent dans /etc/apache2/mods-available ; quand aux activés elles sont dans /etc/apache2/mods-enabled.

Afin de masquer les informations de version du serveur, j’ajoute ServerSignature Off à la fin du fichier de configuration de apache /etc/apache2/apache2.conf.

echo "ServerSignature Off" >> /etc/apache2/apache2.conf

Et encore une fois, il faut redémarrer apache pour appliquer les modifications.

systemctl restart apache2

Je crée un fichier de test.php et vérifie le bon fonctionnement de apache et php.

echo "<?php phpinfo(); ?>" >> /var/www/html/test.php
LAMP page de test Apache2
Page de test de Apache2
LAMP page de test PHP
Page de test PHP

Je passe maintenant à la configuration de MariaDB et je subis un interrogatoire :

mysql_secure_installation

Je supprime les utilisateurs anonymes, les connexions distantes de root, la base de donnée test, 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

Je crée un nouvel utilisateur administrateur.

Remplacer nomutil par le nom de l’utilisateur et motdepasse par le mot de passe de cet utilisateur :

mysql -u root -p
CREATE USER 'nomutil'@'localhost' IDENTIFIED BY 'motdepasse';
GRANT ALL PRIVILEGES ON *.* TO 'nomutil'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit

Et j’active ce service de façon automatique :

systemctl enable mariadb

Je continue en activant les protocoles avec les modules SSL :

a2enmod ssl
a2ensite default-ssl
systemctl restart apache2

Le protocole HTTPS sera fonctionnel mais les navigateurs me renverront une erreur de certificat due à l’autogénération. Il me faudra donc utiliser un certificat « fiable » généré avec Lets Encrypt par exemple. Etape abordée dans un autre article.

Pour finir, j’installe phpMyAdmin afin d’avoir une interface web pour gérer les bases de données.

Je commence par télécharger la dernière version de phpMyAdmin dans le dossier temporaire :

wget -P /tmp https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz

Puis, je crée son dossier phpmyadmin dans /usr/share. Je l’installe dans le dossier share afin de la partager entre les sites qui seront sur ce serveur :

mkdir /var/www/html/phpmyadmin

Enfin, je décompresse l’archive dans le dossier nouvellement créé :

tar xvf /tmp/phpMyAdmin-latest-all-languages.tar.gz --strip-components=1 -C /var/www/html/phpmyadmin

Maintenant, je copie le fichier de configuration « exemple » et l’édite :

cp /var/www/html/phpmyadmin/config.sample.inc.php /var/www/html/phpmyadmin/config.inc.php
nano /var/www/html/phpmyadmin/config.inc.php

Dans ce fichier, il me faut localiser la ligne suivante :

$cfg['blowfish_secret'] = '';

Je renseigne une phrase secrète. Je n’ai pas besoin de me souvenir de cette phrase. Elle sera simplement utilisée comme clé de cryptage pour les cookies. J’utilise un générateur de mot de passe pour créer cette chaîne de 32 caractères.

LAMP phpMyAdmin-blowfish_secret
blowfish_secret dans le fichier de configuration de phpMyAdmin

Je modifie les autorisations du ficher config.inc.php :

chmod 660 /var/www/html/phpmyadmin/config.inc.php

Et j’attribue les propriétés du dossier de phpmyadmin :

chown -R www-data:www-data /var/www/html/phpmyadmin

Puis, pour finir, je redémarre apache :

systemctl restart apache2
LAMP phpMyAdmin écran de connexion
Ecran de connexion de phpMyAdmin
LAMP phpMyAdmin Interface
Interface phpMyAdmin

Conclusion

Et voilà ! J’ai un serveur LAMP Debian 10 prêt à fonctionner et incluant une interface graphique pour gérer les bases de données.

Sources :
https://www.linuxtricks.fr/wiki/debian-installer-un-serveur-lamp-apache-mysql-php
https://phoenixnap.com/kb/how-to-install-phpmyadmin-on-debian-10
https://www1.zonewebmaster.eu/serveur-debian-securite/securiser-phpmyadmin
https://www.codeflow.site/fr/article/how-to-install-phpmyadmin-from-source-debian-10
https://www.interserver.net/tips/kb/install-and-serve-webp-images-on-ubuntu/

Laisser un commentaire

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