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
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
a2enmod rewrite a2enmod ssl a2enmod deflate a2enmod brotli a2enmod headers a2enmod http2 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
echo "ServerSignature Off" >> /etc/apache2/apache2.conf echo "ServerTokens Prod" >> /etc/apache2/apache2.conf 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.
a2enmod proxy_fcgi setenvif a2enconf php8.2-fpm 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é
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.
apt install mariadb-server -y 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.
a2enconf phpmyadmin.conf 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 !
1 réflexion sur “Installation d’Apache, MySQL et PHP (LAMP) + phpMyAdmin – Debian, Raspberry”
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.