Recherche de site Web

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.