[tuto][linux][novice] Serveur Web avec Lighttpd + PHP + MariaDB
Sommaire
- Étape 1 - Installer Lighttpd
- Étape 2 - Installer et configurer PHP-FPM
- Étape 3 - Configurer Lighttpd et PHP-FPM
- Étape 4 - Test
- Étape 5 - Installer et configurer le serveur MySQL
Prérequis
Avant d'installer le serveur, commencons par mettre à jour le référentiel et les packages logiciels :
Code : Tout sélectionner
apt update
apt upgrade
Code : Tout sélectionner
apt install lighttpd
Code : Tout sélectionner
cd /etc/lighttpd
- lighttpd.conf et le fichier de configuration principale dans lequel sont chargées les instructions principales.
- conf-available est un répertoire contenant les fichiers de configurations des modules installés sur le serveur.
- conf-enabled est le dossier contenant les fichiers des modules activés.
Code : Tout sélectionner
nano -l lighttpd.conf
Code : Tout sélectionner
1 server.modules = (
2 "mod_indexfile",
3 "mod_access",
4 "mod_alias",
5 "mod_redirect",
6 )
7
8 server.document-root = "/var/www/html"
9 server.upload-dirs = ( "/var/cache/lighttpd/uploads" )
10 server.errorlog = "/var/log/lighttpd/error.log"
11 server.pid-file = "/run/lighttpd.pid"
12 server.username = "www-data"
13 server.groupname = "www-data"
14 server.port = 80
15
16 # features
17 #https://redmine.lighttpd.net/projects/lighttpd/wiki/Server_feature-flagsDetails
18 server.feature-flags += ("server.h2proto" => "enable")
19 server.feature-flags += ("server.h2c" => "enable")
20 server.feature-flags += ("server.graceful-shutdown-timeout" => 5)
21 #server.feature-flags += ("server.graceful-restart-bg" => "enable")
22
23 # strict parsing and normalization of URL for consistency and security
24 # https://redmine.lighttpd.net/projects/lighttpd/wiki/Server_http-parseoptsDetails
25 # (might need to explicitly set "url-path-2f-decode" = "disable"
26 # if a specific application is encoding URLs inside url-path)
27 server.http-parseopts = (
28 "header-strict" => "enable",# default
29 "host-strict" => "enable",# default
30 "host-normalize" => "enable",# default
31 "url-normalize-unreserved"=> "enable",# recommended highly
32 "url-normalize-required" => "enable",# recommended
33 "url-ctrls-reject" => "enable",# recommended
34 "url-path-2f-decode" => "enable",# recommended highly (unless breaks app)
35 #"url-path-2f-reject" => "enable",
36 "url-path-dotseg-remove" => "enable",# recommended highly (unless breaks app)
37 #"url-path-dotseg-reject" => "enable",
38 #"url-query-20-plus" => "enable",# consistency in query string
39 )
40
41 index-file.names = ( "index.php", "index.html" )
42 url.access-deny = ( "~", ".inc" )
43 static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
44
45 # default listening port for IPv6 falls back to the IPv4 port
46 include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
47 include_shell "/usr/share/lighttpd/create-mime.conf.pl"
48 include "/etc/lighttpd/conf-enabled/*.conf"
49
50 #server.compat-module-load = "disable"
51 server.modules += (
52 "mod_dirlisting",
53 "mod_staticfile",
54 )
55
Ensuite, vous pouvez voir la configuration des répertoires et fichiers utilisés par Lighty (lignes 8 à 11) :
server.document-root : Cette ligne permet de choisir le répertoire dans lequel Lighty ira chercher vos pages. Par défaut, Lighty charge les fichiers contenus dans le répertoire /var/www/html. Si vous souhaitez changer de répertoire, pensez à le créer manuellement et à copier dedans les fichiers contenus dans /var/www/html avant de redémarrer le serveur après modification sur fichier de configuration.
Pour ce tutoriel, nous allons modifier le chemin pour /var/www :
Code : Tout sélectionner
server.document-root = "/var/www"
server.errorlog : Contient le chemin vers le fichier des logs du serveur.
server.pid-file :
Viennent ensuite les lignes server.username et server.groupname pour définir le propriétaire et le groupe utilisés par le serveur, ici 'www-data'.
server.port : Modifier cette ligne permet de changer le port d’écoute du serveur. Par défaut le serveur écoute sur le port 80 (HTTP).
La ligne 41 spécifie l'ordre de recherche des pages index, si le serveur ne trouve pas de page 'index.php', il ira chercher 'index.html' et ainsi de suite.
Vous pouvez par exemple placer index.html en premier et ajouter index.htm, ce qui donne :
Code : Tout sélectionner
index-file.names = { "index.html", "index.htm", "index.php" }
Code : Tout sélectionner
sudo service lighttpd restart
Code : Tout sélectionner
sudo service lighttpd status
Code : Tout sélectionner
cd /var/www
ls -l
Code : Tout sélectionner
rm -rf /var/www/*
Code : Tout sélectionner
echo "Bienvenue" > index.html
Code : Tout sélectionner
chown -R www-data:www-data /var/www
Pour connaitre l'adresse IP du serveur :
Code : Tout sélectionner
ip addr
192.168.x.x
Étape 2 - Installer et configurer PHP-FPM
FPM (FastCGI Process Manager) est une implémentation principale de PHP FastCGI contenant certaines fonctionnalités (pour la plupart) utiles pour les sites très chargés. Dans cette étape, nous allons installer les packages PHP-FPM et les configurer pour qu'ils fonctionnent avec le serveur Web Lighttpd.
Nous allons ici Installer seulement les packages nécessaires à PHP-FPM sur le système, d'autres modules PHP pourrons être installés (au besoin) dans le futur (voir en fin de tutoriel) :
Code : Tout sélectionner
apt install php-fpm
Code : Tout sélectionner
Les NOUVEAUX paquets suivants seront installés :
php8.2-fpm php8.2-cli php8.2-common php8.2-opcache php8.2-readline php8.2-mysql
Souhaitez-vous continuer ? [O/n]
Vérifiez le service PHP-FPM à l'aide des commandes suivantes :
Code : Tout sélectionner
ps -ef | grep php
service php8.2-fpm status
Code : Tout sélectionner
systemctl start php8.2-fpm
systemctl enable php8.2-fpm
Étape 3 - Configurer Lighttpd et PHP-FPM
Pour cette étape, nous allons configurer le Lighttpd avec PHP-FPM.
Allez maintenant dans le répertoire '/etc/lighttpd/conf-available' et vous obtiendrez quelques configurations.
Code : Tout sélectionner
cd /etc/lighttpd/conf-available/
Code : Tout sélectionner
sudo lighttpd-enable-mod fastcgi
sudo lighttpd-enable-mod fastcgi-php-fpm
Code : Tout sélectionner
ls -lah /etc/lighttpd/conf-enabled/
Code : Tout sélectionner
sudo service lighttpd restart
Et par conséquent, la configuration de Lighttpd avec PHP-FPM s'est terminée avec succès.
Étape 4 - Test
On va maintenant tester la configuration de PHP, pour cela, nous allons créer un fichier "/var/www/info.php" dans lequel on va appeler une fonction PHP phpinfo() et on lui donne les droits d'accès au serveur :
Code : Tout sélectionner
echo "<?php phpinfo(); ?>" > /var/www/info.php
sudo chown -R www-data:www-data /var/www
http://<ip-du-serveur>:<port-d-ecoute>/info.php ou par défaut http://localhost/info.php si vous êtes sur la machine locale.
Vous devriez voir apparaitre une page de votre configuration PHP-FPM.
Étape 5 - Installer et configurer le serveur MariaDB
Dernière étapae, l'installation de MariaDB :
Code : Tout sélectionner
apt install mariadb-server
Code : Tout sélectionner
mariadb-secure-installation
Définition d'un mot de passe root : Vous aurez la possibilité de définir un mot de passe pour le compte root, offrant ainsi une couche de protection supplémentaire.
Suppression des utilisateurs anonymes : le script vous aidera à supprimer tous les comptes d'utilisateurs anonymes, garantissant que seuls les utilisateurs authentifiés peuvent accéder aux bases de données, répondre Oui.
Interdire la connexion root à distance : vous serez invité à désactiver la connexion root à distance, empêchant ainsi tout accès non autorisé potentiel à partir de sources externes, répondre Oui.
Suppression de la base de données de test : le script aide à supprimer la base de données de test, qui est généralement accessible aux utilisateurs anonymes. Cette action élimine toutes les vulnérabilités de sécurité potentielles associées à la base de données de test, répondre Oui.
Rechargement des tables de privilèges : Une fois les mesures de sécurité nécessaires mises en œuvre, le script recharge les tables de privilèges pour appliquer efficacement les modifications, répondre Oui.
Pour connaître la version installée :
Code : Tout sélectionner
mariadb -v
Documentaion Lighttpd :
https://redmine.lighttpd.net/projects/1/wiki/docs
Documentation MariaDB :
https://mariadb.org/documentation/