Lighttpd est un serveur Web gratuit, open-source et haut débit spécialement conçu pour les environnements à vitesse critique. Il nécessite une faible empreinte mémoire par rapport à d'autres serveurs Web, tels qu'Apache et Nginx, et est particulièrement rapide pour exécuter des applications AJAX. Lighttpd nous permet également d'héberger des applications Web écrites dans d'autres langages de programmation à l'aide des interfaces FastCGI, SCGI et CGI. Lighttpd est le meilleur choix pour vous si votre serveur souffre de problèmes de charge.
Dans ce tutoriel, nous apprendrons comment installer Lighttpd sur Debian 10 avec le support PHP-FPM et MariaDB et nous sécuriserons le serveur Web avec un certificat SSL Let's Encrypt.
Exigences
- Un serveur exécutant Debian 10.
- Un mot de passe root est configuré sur votre serveur.
J'utiliserai le nom de domaine example.com dans ce tutoriel. Remplacez example.com dans tous les noms de fichiers et paramètres de configuration par votre propre nom de domaine ci-dessous.
Mise en route
Avant de commencer, vous devrez mettre à jour votre système avec la dernière version. Vous pouvez le faire en exécutant la commande suivante :
apt-get update -y
apt-get upgrade -y
Une fois votre serveur mis à jour, redémarrez votre serveur pour appliquer les modifications.
Installer Lighttpd
Par défaut, Lighttpd est disponible dans le dépôt par défaut de Debian 10. Vous pouvez l'installer en exécutant simplement la commande suivante :
apt-get install lighttpd -y
Une fois l'installation terminée, démarrez le service Lighttpd et autorisez-le à démarrer après le redémarrage du système avec la commande suivante :
systemctl start lighttpd
systemctl enable lighttpd
Vous pouvez également vérifier l'état de Lighttpd avec la commande suivante :
systemctl status lighttpd
Vous devriez obtenir le résultat suivant :
? lighttpd.service - Lighttpd Daemon Loaded: loaded (/lib/systemd/system/lighttpd.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2019-09-06 02:09:35 EDT; 29s ago Main PID: 4445 (lighttpd) Tasks: 1 (limit: 1138) Memory: 1.4M CGroup: /system.slice/lighttpd.service ??4445 /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf Sep 06 02:09:35 debian systemd[1]: Starting Lighttpd Daemon... Sep 06 02:09:35 debian systemd[1]: Started Lighttpd Daemon. Sep 06 02:09:36 debian systemd[1]: /lib/systemd/system/lighttpd.service:6: PIDFile= references path below legacy directory /var/run/, updating lines 1-12/12 (END)
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Installer le serveur MariaDB
Vous pouvez installer le serveur MariaDB en exécutant la commande suivante :
apt-get install mariadb-server mariadb-client -y
Une fois installé, vous devrez sécuriser l'installation de MariaDB. Vous pouvez le sécuriser en exécutant le script suivant :
mysql_secure_installation
Answer all the questions as shown below: Change the root password? [Y/n] n Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Installer PHP et PHP-FPM
Ensuite, vous devrez installer PHP, PHP-FPM et FastCGI sur votre système. Par défaut, Debian 10 est livré avec PHP version 7.3. Vous pouvez l'installer en exécutant simplement la commande suivante :
apt-get install php php-cgi php-fpm php-mysql -y
Une fois tous les packages installés, vous devrez éditer le fichier php.ini et définir cgi.fix_pathinfo sur 1. Vous pouvez le faire avec la commande suivante :
nano /etc/php/7.3/fpm/php.ini
Modifiez la ligne suivante :
cgi.fix_pathinfo=1
Enregistrez et fermez le fichier lorsque vous avez terminé.
Par défaut, PHP pointe vers le socket UNIX /var/run/php/php7.3-fpm.sock. Vous devrez donc configurer le pool PHP-FPM pour que PHP écoute le socket TCP.
Vous pouvez le faire en éditant le fichier /etc/php/7.3/fpm/pool.d/www.conf :
nano /etc/php/7.3/fpm/pool.d/www.conf
Recherchez la ligne suivante :
listen = /run/php/php7.3-fpm.sock
Et remplacez-le par la ligne suivante :
listen = 127.0.0.1:9000
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, redémarrez le service PHP-FPM pour appliquer les modifications de configuration :
systemctl restart php7.3-fpm
Ensuite, vous devrez modifier le fichier 15-fastcgi-php.conf :
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 remplacez-les par ce qui suit :
"host" => "127.0.0.1", "port" => "9000",
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, activez les modules FastCGI et FastCHI-PHP avec les 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
Ensuite, vous devrez créer un nouveau fichier d'hôte virtuel pour tester PHP avec Lighttpd. Vous pouvez le créer avec la commande suivante :
nano /etc/lighttpd/conf-available/example.com.conf
Ajoutez les lignes suivantes :
$HTTP["host"] == "www.example.com" { server.document-root = "/var/www/html/" server.errorlog = "/var/log/lighttpd/example.com-error.log" }
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, activez l'hôte virtuel avec la commande suivante :
ln -s /etc/lighttpd/conf-available/example.com.conf /etc/lighttpd/conf-enabled/
Ensuite, créez un exemple de fichier index.php dans le répertoire racine du document Lighttpd avec la commande suivante :
nano /var/www/html/index.php
Ajoutez la ligne suivante :
<?php phpinfo(); ?>
Enregistrez et fermez le fichier. Ensuite, changez la propriété du répertoire racine du document Lighttpd en www-data avec la commande suivante :
chown -R www-data:www-data /var/www/html/
Enfin, redémarrez le service Lighttpd pour appliquer toutes les modifications de configuration :
systemctl restart lighttpd
Sécuriser Lighttpd avec Let's Encrypt SSL gratuit
Tout d'abord, vous devrez installer l'outil Certbot pour sécuriser votre serveur Web avec Let's Encrypt. Par défaut, la dernière version de Certbot n'est pas disponible dans le référentiel par défaut de Debian 10.
Vous pouvez ajouter le référentiel Certbot avec la commande suivante :
apt-get install software-properties-common
add-apt-repository ppa:certbot/certbot
Ensuite, mettez à jour le référentiel et installez Certbot avec la commande suivante :
apt-get update -y
apt-get install certbot -y
Ensuite, créez un certificat Let's Encrypt avec la commande suivante :
certbot certonly --webroot -w /var/www/html/ -d www.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 protected] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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
Une fois les certificats téléchargés avec succès, vous devriez voir le résultat suivant :
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2019-12-06. 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/example.com/cert.pem /etc/letsencrypt/live/example.com/privkey.pem > /etc/letsencrypt/live/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/example.com.conf
Modifiez le fichier comme indiqué ci-dessous :
$HTTP["host"] == "www.example.com" { server.document-root = "/var/www/html/" } $SERVER["socket"] == ":443" { ssl.engine = "enable" ssl.pemfile = "/etc/letsencrypt/live/example.com/web.pem" # Combined Certificate ssl.ca-file = "/etc/letsencrypt/live/example.com/chain.pem" # Root CA server.name = "www.example.com" # Domain Name OR Virtual Host Name server.document-root = "/var/www/html/" # Document Root server.errorlog = "/var/log/lighttpd/example.com_error.log" accesslog.filename = "/var/log/lighttpd/example.com_access.log" } $HTTP["scheme"] == "http" { $HTTP["host"] == "www.example.com" { # HTTP URL url.redirect = ("/.*" => "https://www.example.com$0") # Redirection HTTPS URL } }
Enregistrez et fermez le fichier. Redémarrez ensuite le service Lighttpd pour appliquer les modifications de configuration :
systemctl restart lighttpd
Accéder à l'interface Web Lighttpd
Lighttpd est installé et configuré avec le support PHP et PHP-FPM. Maintenant, il est temps de le tester.
Ouvrez votre navigateur Web et saisissez l'URL https://www.example.com. Vous serez redirigé vers la page suivante :
La page ci-dessus indique que PHP fonctionne bien avec FastCGI.
Conclusion
Toutes nos félicitations! vous avez installé et configuré avec succès le serveur Web Lighttpd avec la prise en charge de PHP-FPM et FastCGI sur Debian 10. Vous pouvez désormais héberger facilement votre propre serveur Web. Pour plus d'informations, visitez la page de documentation officielle de Lighttpd sur Lighttpd Doc.