Comment installer Lighttpd avec PHP et Free Let's Encrypt SSL sur Debian 11
Lighttpd est un serveur Web simple, rapide et sécurisé. Il est de très petite taille et ne nécessite pas beaucoup de mémoire ni d’utilisation du processeur, ce qui en fait l’un des meilleurs serveurs pour héberger n’importe quelle application. Il est conçu pour les environnements critiques. Il peut gérer jusqu'à 10 000 connexions en parallèle sur un seul serveur. Il offre de nombreuses fonctionnalités, notamment la réécriture d'URL, la compression de sortie, le mécanisme d'événements, FastCGI, SCGI, Auth, etc.
Dans ce tutoriel, nous allons vous montrer comment installer Lighttpd avec PHP et Let's Encrypt SSL sur Debian 11.
Conditions préalables
- Un serveur exécutant Debian 11.
- Un nom de domaine valide pointé avec l'adresse IP du serveur.
- Un mot de passe root est configuré sur le serveur.
Installer Lighttpd
Par défaut, le package Lighttpd est inclus dans le référentiel officiel Debian 11. Vous pouvez l'installer en exécutant la commande suivante :
apt-get install lighttpd -y
Une fois Lighttpd installé, démarrez le service Lighttpd et activez-le pour démarrer au redémarrage du système :
systemctl start lighttpd
systemctl enable lighttpd
Vous pouvez également vérifier l'état de Lighttpd avec la commande suivante :
systemctl status lighttpd
Vous obtiendrez le résultat suivant :
? lighttpd.service - Lighttpd Daemon
Loaded: loaded (/lib/systemd/system/lighttpd.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2022-02-12 07:01:06 UTC; 12s ago
Process: 4663 ExecStartPre=/usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf (code=exited, status=0/SUCCESS)
Main PID: 4668 (lighttpd)
Tasks: 1 (limit: 2341)
Memory: 932.0K
CPU: 226ms
CGroup: /system.slice/lighttpd.service
??4668 /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf
Feb 12 07:01:06 debian11 systemd[1]: Starting Lighttpd Daemon...
Feb 12 07:01:06 debian11 systemd[1]: Started Lighttpd Daemon.
Maintenant, ouvrez votre navigateur Web et accédez à la page Web Lighttpd en utilisant l'URL http://your-server-ip. Vous devriez voir la page de test Lighttpd sur l'écran suivant :
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Installer PHP et PHP-FPM
Ensuite, exécutez la commande suivante pour installer les packages PHP et PHP-FPM sur votre système.
apt-get install php php-cgi php-fpm php-mysql -y
Après l'installation, modifiez le fichier php.ini et définissez cgi.fix_pathinfo sur 1.
nano /etc/php/7.4/fpm/php.ini
Modifiez la ligne suivante :
cgi.fix_pathinfo=1
Enregistrez et fermez le fichier lorsque vous avez terminé.
Pour que Lighttpd fonctionne avec PHP-FPM, vous devrez remplacer la configuration PHP-CGI par défaut et le socket PHP-FPM :
Tout d'abord, éditez le fichier de configuration PHP-FPM :
nano /etc/php/7.4/fpm/pool.d/www.conf
Recherchez la ligne suivante :
listen = /run/php/php7.4-fpm.sock
Et remplacez-le par la ligne suivante :
listen = 127.0.0.1:9000
Enregistrez et fermez le fichier puis redémarrez PHP-FPM pour appliquer les modifications :
systemctl restart php7.4-fpm
Vous pouvez également vérifier l'état du PHP-FPM à l'aide de la commande suivante :
systemctl status php7.4-fpm
Vous obtiendrez le résultat suivant :
? php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2022-02-12 07:04:35 UTC; 1min 7s ago
Docs: man:php-fpm7.4(8)
Process: 15141 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/7.4/fpm/pool.d/www.conf 74 (code=e>
Main PID: 15138 (php-fpm7.4)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 3 (limit: 2341)
Memory: 8.8M
CPU: 54ms
CGroup: /system.slice/php7.4-fpm.service
??15138 php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf)
??15139 php-fpm: pool www
??15140 php-fpm: pool www
Feb 12 07:04:35 debian11 systemd[1]: Starting The PHP 7.4 FastCGI Process Manager...
Feb 12 07:04:35 debian11 systemd[1]: Started The PHP 7.4 FastCGI Process Manager.
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Configurer Lighttpd pour PHP-FPM
Ensuite, vous devrez éditer le fichier de configuration Lighttpd et le modifier à l'aide du Fast CGI :
nano /etc/lighttpd/conf-available/15-fastcgi-php.conf
Recherchez les lignes suivantes :
"bin-path" => "/usr/bin/php-cgi",
"socket" => "/var/run/lighttpd/php.socket",
Et je les ai remplacés par les lignes suivantes :
"host" => "127.0.0.1",
"port" => "9000",
Enregistrez et fermez le fichier puis activez les modules Fast CGI à l'aide des commandes suivantes :
lighty-enable-mod fastcgi
lighty-enable-mod fastcgi-php
Enfin, redémarrez le service Lighttpd pour appliquer les modifications :
systemctl restart lighttpd
Créer un hôte virtuel Lighttpd
Lighttpd vous permet également d'héberger plusieurs sites Web à l'aide de l'hébergement virtuel. Créons un nouveau fichier de configuration d'hôte virtuel pour héberger un site Web nommé test.example.com.
nano /etc/lighttpd/conf-available/test.conf
Ajoutez les lignes suivantes :
$HTTP["host"] == "test.example.com" {
server.document-root = "/var/www/html/"
server.errorlog = "/var/log/lighttpd/example.com-error.log"
}
Enregistrez et fermez le fichier puis activez l'hôte virtuel avec la commande suivante :
ln -s /etc/lighttpd/conf-available/test.conf /etc/lighttpd/conf-enabled/
Créez ensuite un fichier index.php :
nano /var/www/html/index.php
Ajoutez la ligne suivante :
<?php
phpinfo();
?>
Enregistrez et fermez le fichier, puis définissez les autorisations et la propriété appropriées avec la commande suivante :
chown -R www-data:www-data /var/www/html/
chmod -R 755 /var/www/html
Ensuite, redémarrez le service Lighttpd pour appliquer les modifications :
systemctl restart lighttpd
Maintenant, ouvrez votre navigateur Web et vérifiez votre site Web à l'aide de l'URL http://test.example.com. Vous devriez voir la page de test PHP sur l'écran suivant :
Sécurisez Lighttpd avec Let's Encrypt
Lighttpd vous permet également de sécuriser le site Web avec Let's Encrypt SSL. Pour ce faire, installez d'abord le client Certbot avec la commande suivante :
apt-get install certbot -y
Ensuite, exécutez la commande suivante pour télécharger Let's Encrypt SSL pour votre site Web :
certbot certonly --webroot -w /var/www/html/ -d test.example.com
Il vous sera demandé de fournir votre adresse e-mail et d'accepter la durée de la licence comme indiqué ci-dessous :
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Once the certificates are downloaded successfully, you should see the following output:
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/test.example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/test.example.com/privkey.pem
Your cert will expire on 2022-05-11. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Ensuite, vous devrez combiner le certificat et la clé privée dans un seul fichier. Vous pouvez le faire avec la commande suivante :
cat /etc/letsencrypt/live/test.example.com/cert.pem /etc/letsencrypt/live/test.example.com/privkey.pem > /etc/letsencrypt/live/test.example.com/web.pem
Ensuite, vous devrez modifier le fichier d'hôte virtuel Lighttpd et définir le chemin du certificat SSL Let's Encrypt.
Vous pouvez le faire avec la commande suivante :
nano /etc/lighttpd/conf-enabled/test.conf
Modifiez le fichier comme indiqué ci-dessous :
$HTTP["host"] == "test.example.com" {
server.document-root = "/var/www/html/"
}
$SERVER["socket"] == ":443" {
ssl.engine = "enable"
ssl.pemfile = "/etc/letsencrypt/live/test.example.com/web.pem"
ssl.ca-file = "/etc/letsencrypt/live/test.example.com/chain.pem"
server.name = "test.example.com"
server.document-root = "/var/www/html/"
server.errorlog = "/var/log/lighttpd/example.com_error.log"
accesslog.filename = "/var/log/lighttpd/example.com_access.log"
}
$HTTP["scheme"] == "http" {
$HTTP["host"] == "test.example.com" {
url.redirect = ("/.*" => "https://test.example.com$0")
}
}
Enregistrez et fermez le fichier. Redémarrez ensuite le service Lighttpd pour appliquer les modifications de configuration :
systemctl restart lighttpd
Vous pouvez désormais accéder à votre site Web en toute sécurité en utilisant l'URL https://test.example.com.
Conclusion
Toutes nos félicitations! vous avez installé avec succès Lighttpd avec PHP et Let's Encrypt SSL sur Debian 11. Vous pouvez maintenant commencer à déployer votre site Web à l'aide du serveur Web Lighttpd. N'hésitez pas à me demander si vous avez des questions.