Dans cet article nous allons voir ensemble comment installer LAMP pour monter mon serveur web. LAMP correspond à Linux Apache MySQL/MariaDB, PHP (ou Pearl, Python).
Installation d’Apache2
On installe apache2 avec le paquet apache2-utils, qui ajoute quelques fonctionnalités comme la possibilité d’utiliser .htpasswd
sudo apt install apache2 apache2-utils -y
On va maintenant activer quelques mod indispensables.
rewrite permet de réécrire des urls. Utilisé pour les redirections
ssl sert à gérer les certificats SSL et donc a avoir le https
deflate gère la compression des fichiers, notamment avec GZIP
brolti est un système de compression encore plus performant que GZIP. C’est un nouveau standard (disponible nativement depuis Apache 2.4.26)
headers permet d’agir sur les headers https
http2 permet à notre serveur Apache de répondre aux requêtes avec http2, pour améliorer les performances
sudo a2enmod rewrite sudo a2enmod ssl sudo a2enmod deflate sudo a2enmod brotli sudo a2enmod headers sudo a2enmod http2 sudo systemctl restart apache2
Par mesure de sécurité, nous allons ajouter ces deux lignes dans le fichier de configuration d’Apache.
ServerSignature Off permet de cacher la version d’Apache sur les pages d’erreur.
ServerTokens Prod permet de cacher la version d’Apache dans le header http.
Pourquoi cacher le numéro de version ? Le numéro de version peut faciliter la tâche à un pirate. En connaissant la version utilisée, il lui est plus facile de chercher des vulnérabilités. Ça n’arrêtera pas un pirate déterminé, mais les crawlers malveillants ne devraient pas s’arrêter sur vous
sudo echo "ServerSignature Off" >> /etc/apache2/apache2.conf sudo echo "ServerTokens Prod" >> /etc/apache2/apache2.conf sudo systemctl restart apache2
En allant sur l’adresse IP de votre serveur depuis votre navigateur vous devriez obtenir ce résultat
On peut maintenant passer à php.
Installation de PHP 8.2
Si vous utilisez une nouvelle installation de Debian vous aurez besoin de quelques outils (première ligne). Il est possible que certains soient déjà installés sur votre machine.
On installe ensuite la clé GPG pour le repo de Ondřej Surý, (c’est grâce à lui que nous avons des versions de php récentes et à jour sur Debian, notamment), puis le repo et on met à jour la liste des paquets.
Note : Sur Debian 12 le package PHP est déjà à la version 8.2, vous pouvez donc passer à l’installation directement
sudo apt install apt-transport-https lsb-release ca-certificates curl wget -y sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' sudo apt update
php7.4 est la version la plus récente disponible sur les repo de Debian, sauf que php7.4 n’est plus maintenu et recevra seulement des mises à jour de sécurité jusqu’au 28 novembre 2022. Grace à Ondřej, on peut passer à la version 8.2. On installe donc la version 8.2 avec quelques extensions.
sudo apt install apache2-bin libapache2-mod-php8.2 php8.2-{mysql,cli,common,imap,ldap,xml,fpm,curl,mbstring,zip}
Installation de PHP 8.2-FPM (optionnel)
Pour faire simple, php-fpm permet de gagner en performances, voici donc comment l’activer. Je vous invite à vous renseigner sur le sujet si vous hésitez ou si vous êtes simplement curieux.
sudo a2enmod proxy_fcgi setenvif sudo a2enconf php8.2-fpm sudo systemctl restart apache2
Pour que le mod HTTP2 fonctionne correctement avec PHP-FPM:
a2dismod php8.2 a2dismod mpm_prefork a2enmod mpm_event systemctl restart apache2
Pour vérifier que php-fpm est bien activé
sudo echo "<?php phpinfo(); ?>" >> /var/www/html/info.php
Ensuite ip_serveur/info.php.
Si la ligne 4, Server API affiche FPM/FastCGI c’est bon pour fpm.
Si elle affiche Apache 2 Handler vous n’utilisez pas fpm
Si la page affiche le code, php n’est pas activé, a2enmod php8.2 pour activer le mod php classique.
Le screen ci-dessous a été pris lors de la rédaction originale de cette article, c’est pourquoi la version indiquée est 8.0
Installation MySQL/MariaDB
MariaDB est un fork communautaire de MySQL open source, sous licence GPL, à la différence de MySQL qui est un logiciel propriétaire de chez Oracle.
sudo apt install mariadb-server -y sudo mariadb-secure-installation
Ici, entrez le mot de passe de votre utilisateur root. Une fois le mot de passe entré, vous pouvez répondre y à toutes les question. À la question est Change the root password? [Y/n], répondez y et remettez votre mot de passe. Il arrive parfois que sans ça, vous ne puissiez pas vous connecter avec phpMyAdmin
C’est tout pour MariaDB.
Installation de phpMyAdmin
wget https://files.phpmyadmin.net/phpMyAdmin/5.1.2/phpMyAdmin-5.1.2-all-languages.tar.xz tar xvf phpMyAdmin-5.1.2-all-languages.tar.xz mv phpMyAdmin-*/ /usr/share/phpmyadmin mkdir -p /var/lib/phpmyadmin/tmp chown -R www-data:www-data /var/lib/phpmyadmin mkdir /etc/phpmyadmin/ cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php nano /usr/share/phpmyadmin/config.inc.php
A ce stade nous devons fournir une clé secrète Blowfish, cliquez sur ce lien pour en récupérer une, générée aléatoirement (vous pouvez actualiser pour changer de clé) et copiez la entre les quotes.
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
Maintenant on indique l’emplacement des fichiers tmp en ajoutant cette ligne
$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';
Et enfin, on crée le fichier de conf pour Apache
nano /etc/apache2/conf-available/phpmyadmin.conf
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
<IfModule mod_php5.c>
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
</IfModule>
<FilesMatch ".+\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
php_admin_value mbstring.func_overload 0
</IfModule>
<IfModule mod_php.c>
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
</IfModule>
<FilesMatch ".+\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
php_admin_value mbstring.func_overload 0
</IfModule>
</Directory>
# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
<IfModule mod_authz_core.c>
<IfModule mod_authn_file.c>
AuthType Basic
AuthName "phpMyAdmin Setup"
AuthUserFile /etc/phpmyadmin/htpasswd.setup
</IfModule>
Require valid-user
</IfModule>
</Directory>
# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
Require all denied
</Directory>
On active la configuration et on relance Apache.
sudo a2enconf phpmyadmin.conf sudo systemctl restart apache2
Il est maintenant possible de se rendre sur ip_server/phpmyadmin
Vous pouvez changer Alias /phpmyadmin et mettre ce que vous souhaitez après le slash. C’est vivement conseillé si vous rendez cette page disponible directement depuis internet (si c’est le cas, mettez un .htpasswd).
Il est aussi possible d’exiger une IP précise, ou une plage d’IP pour accéder à la page, en ajoutant
Require ip 127.0.0.1 192.168.18.0/24
Et voilà la page d’accueil de phpMyAdmin. Vous pouvez vous sur la droite les caractéristiques sur serveurs
Vous êtes maintenant fin prêt à héberger votre site internet depuis votre nouvelle installation VPS ou Raspberry !
Si ce n’est pas déjà fait, je vous conseille vivement d’aller mettre en place la connexion par clé SSH ! Je reviens bientôt avec la mise en place du certificat SSL pour le https pour votre site internet et comment rendre son Raspberry accessible depuis internet !
3 réflexions sur “Installation d’Apache, MySQL et PHP (LAMP) + phpMyAdmin – Debian, Raspberry”
Bonjour Antoine,
Merci beaucoup pour cet article très précis
Après de longue recherche, une solution de création de serveur qui fonctionne.
J’ai suivi cette procédure pour une isntallation sur Raspberry Pi 3
OS : Rasberry Pi OS Lite 64 bits
Pour l’instant je n’ai pas actvié : php-fpm
Petit précision sur la commande suivante qui ne passe pas,
echo « » >> /var/www/html/info.php
A remplacer par
sudo bash -c » echo » >> /var/www/html/info.php »
Ensuite
mariadb-secure-installation
par
sudo mariadb-secure-installation
puis créer un mot de passe root afin de pouvoir accéder à phpMyAdmin
Cdt.
Christian
PS: Dommage que l’on ne puisse pas voir le commentaire des autres ..
Bonjour,
Merci pour vos retours.
Vous ne pouvez pas voir les commentaires des autres parce qu’il n’y en a pas 🙂
Concernant les commandes, effectivement il faut les lancer avec sudo. J’aurais dû le préciser, faisant les commandes directement en root lorsque je fais les tutos, je ne pense pas toujours à le préciser.
Bonjour,
Je tiens a vous remerciez pour ce tuto, après de nombreux jours de galères , enfin un solution de création de serveur qui fonctionne. maintenant plus qua trouver comment y installer WPress. je suis resté Trop longtemps sur Windows en fait depuis que cela existe , mais il n’est jamais trop tard.
Cordialement.
Articles de la même catégorie
Installation et configuration de Nginx sur Debian, Ubuntu et Raspberry
Qu’est ce que Nginx ? Nginx, prononcé comme « engine-ex », est un serveur web open-source qui, depuis son succès initial en tant que serveur
Activer la compression Brotli sur Nginx – Debian, Ubuntu
Aujourd’hui nous allons voir comment ajouter le module Brotli à Nginx. Ce module est disponible nativement dans Apache depuis la version 2.4.26. Pour Nginx vous
Accéder à votre Raspberry Pi depuis internet
Aujourd’hui nous allons voir comment rendre votre Raspberry Pi accessible depuis internet. Pour cela il vous faudra un serveur web, si vous n’en avez pas