Comment installer Lighttpd avec MySQL et PHP sur FreeBSD 11.0

introduction

https://www.lighttpd.net [Lighttpd] est un serveur Web open source léger, optimisé pour les environnements à haute vitesse tout en limitant l’utilisation des ressources. C’est une excellente alternative aux serveurs Web couramment utilisés, Nginx et Apache. Dans ce tutoriel, vous allez installer et configurer Lighttpd sur un serveur exécutant FreeBSD 11.0. Vous ajoutez également MySQL et PHP à votre nouveau serveur Web Lighttpd afin de pouvoir servir des applications Web ainsi que du contenu statique.

Conditions préalables

Pour compléter ce tutoriel, vous aurez besoin de:

  • Un serveur sous FreeBSD 11.0.

  • Un compte d’utilisateur configuré pour exécuter des commandes avec + sudo +. Le compte par défaut * freebsd * fourni avec un droplet Digital Ocean FreeBSD conviendra parfaitement à ce tutoriel. Pour en savoir plus sur la configuration de FreeBSD, consultez la série de tutoriels Getting avec FreeBSD.

Étape 1 - Installation de Lighttpd

Il existe plusieurs options pour installer Lighttpd, mais dans ce tutoriel, vous utiliserez des packages pour l’installation. Cette méthode est plus rapide que l’installation depuis les sources ou via Ports, et le logiciel installé avec cette méthode est facile à mettre à jour.

Pour installer Lighttpd avec son paquet, commencez par mettre à jour les informations du référentiel pour vous assurer de disposer de la liste la plus récente des paquets disponibles:

sudo pkg update

Ensuite, téléchargez et installez le paquet + lighttpd +:

sudo pkg install lighttpd

Confirmez l’installation en tapant + y +. Lighttpd va installer.

Avec cette configuration par défaut, vous verrez cette erreur lorsque vous démarrez le serveur:

Output(network.c.260) warning: please use server.use-ipv6 only for hostnames, not without server.bind / empty address; your config will break if the kernel default for IPV6_V6ONLY changes

En effet, la configuration Lighttpd par défaut n’est pas complètement configurée pour prendre en charge IPv6. Pour éviter les surprises plus tard, modifiez le fichier de configuration de Lighttpd et désactivez la prise en charge d’IPv6, car vous n’avez plus besoin de ce didacticiel. Vous pouvez l’activer ultérieurement si vous décidez de l’utiliser:

sudo ee /usr/local/etc/lighttpd/lighttpd.conf

Localisez cette section:

/usr/local/etc/lighttpd/lighttpd.conf

...
##
## Use IPv6?
##
server.use-ipv6 = ""
...

Changez + enable en` + disable`:

/usr/local/etc/lighttpd/lighttpd.conf

...
...
server.use-ipv6 = ""
...

Ensuite, localisez cette ligne à la toute fin du fichier de configuration:

/usr/local/etc/lighttpd/lighttpd.conf

...
...
$SERVER["socket"] == "0.0.0.0:80" { }

Commentez-le, car il est inutile de ne pas utiliser IPv6:

/usr/local/etc/lighttpd/lighttpd.conf

...
...
$SERVER["socket"] == "0.0.0.0:80" { }

Enregistrez ensuite le fichier et quittez l’éditeur.

Configurons ensuite MySQL.

Étape 2 - Installation et configuration de MySQL

MySQL est un système de gestion de base de données qui permettra la création de bases de données pour les applications PHP que vous prévoyez d’héberger sur votre serveur Web Lighttpd.

Vous installerez MySQL via son paquet, comme vous l’avez fait pour Lighttpd. Ensuite, vous allez configurer un mot de passe pour l’utilisateur MySQL * root * et désactiver certaines autres options de test. Cela garantit que vous aurez une configuration sécurisée de MySQL.

Comme vous avez déjà mis à jour les informations du référentiel + pkg + à l’étape 1, vous pouvez télécharger et installer rapidement le paquet du serveur MySQL:

sudo pkg install mysql57-server

Confirmez l’installation en appuyant sur: + y +.

Une fois l’installation terminée, activez MySQL au démarrage du système:

sudo sysrc mysql_enable=yes

Puis lancez le service + mysql-server:

sudo service mysql-server start

Une fois le service démarré, sécurisez votre installation de MySQL en utilisant le script + mysql_secure_installation +. Cela supprimera certaines valeurs par défaut dangereuses et bloquera un peu l’accès à votre système de base de données. Démarrez le script interactif en exécutant:

sudo mysql_secure_installation

Vous verrez le message suivant:

OutputSecuring the MySQL server deployment.

Connecting to MySQL server using password in '/root/.mysql_secret'

Ensuite, il vous sera demandé si vous souhaitez configurer un plugin pour valider les mots de passe:

OutputVALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Répondez + Y + pour oui, ou toute autre chose pour continuer sans activer.

Si vous choisissez d’activer cette fonctionnalité, vous serez invité à sélectionner un niveau de validation du mot de passe. Gardez à l’esprit que si vous entrez + 2 +, pour le niveau le plus fort, vous recevrez des erreurs lorsque vous tenterez de définir un mot de passe ne contenant pas de chiffres, de lettres majuscules ou minuscules et de caractères spéciaux, ou reposant sur un dictionnaire commun. mots.

OutputThere are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:

Ensuite, il vous sera demandé si vous souhaitez modifier le mot de passe de l’utilisateur * root *:

OutputChange the password for root ? ((Press y|Y for Yes, any other key for No) :

Appuyez sur + Y + pour changer ce mot de passe.

Si vous avez activé la validation du mot de passe, le niveau de mot de passe du mot de passe root existant vous sera indiqué. Il vous sera demandé si vous souhaitez modifier ce mot de passe.

OutputNew password:

Re-enter new password:

Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :

Appuyez sur + Y + pour continuer avec le nouveau mot de passe.

Pour le reste des questions, vous devez appuyer sur + Y + et appuyer sur la touche Entrée à chaque invite. Cela supprimera certains utilisateurs anonymes et la base de données de test, désactivera les connexions root à distance et chargera ces nouvelles règles afin que MySQL respecte immédiatement les modifications que nous avons apportées.

Puis redémarrez le service + mysql-server + pour vous assurer que votre instance implémente immédiatement les modifications de sécurité:

sudo service mysql-server restart

Une fois que l’instance MySQL est opérationnelle, nous pouvons installer et configurer PHP.

Étape 3 - Installation et configuration de PHP

PHP est le composant de notre configuration qui traitera le code pour afficher le contenu dynamique. Il peut exécuter des scripts, se connecter à nos bases de données MySQL pour obtenir des informations et transmettre le contenu traité à notre serveur Web.

Encore une fois, utilisez le système de paquets pour installer PHP, ainsi que l’extension PHP + mysqli + qui ajoute le support de MySQL:

sudo pkg install php71 php71-mysqli

Lighttpd ne contient pas de traitement PHP natif, contrairement à certains autres serveurs Web. Nous allons donc utiliser PHP-FPM, qui signifie «FastCGI Process Manager». Nous allons configurer Lighttpd pour utiliser ce module pour traiter les requêtes PHP. Avant de faire cela, nous devons configurer PHP-FPM lui-même.

Commencez par éditer le fichier de configuration PHP-FPM:

sudo ee /usr/local/etc/php-fpm.d/www.conf

Nous allons configurer PHP-FPM pour qu’il utilise un socket Unix au lieu d’un port réseau pour la communication. Ceci est plus sécurisé pour les services qui communiquent au sein d’un seul serveur.

Recherchez cette ligne dans le fichier de configuration:

/usr/local/etc/php-fpm.d/www.conf

listen = 127.0.0.1:9000

Changez cette ligne pour utiliser le socket + php-fpm +:

/usr/local/etc/php-fpm.d/www.conf

listen =

Définissez maintenant le propriétaire, le groupe et les autorisations pour le socket qui sera créé. Recherchez cette section du fichier de configuration:

/usr/local/etc/php-fpm.d/www.conf

...
;listen.owner = www
;listen.group = www
;listen.mode = 0660
...

Supprimez les commentaires de la section suivante en supprimant les points-virgules au début de chaque ligne, de sorte que la section ressemble à ceci:

/usr/local/etc/php-fpm.d/www.conf

...
listen.owner = www
listen.group = www
listen.mode = 0660
...

Enregistrez et fermez le fichier lorsque vous avez terminé.

Ensuite, créez un fichier + php.ini qui configurera le comportement général de PHP. Deux exemples de fichiers sont inclus: + php.ini-production et` + php.ini-development`. Le fichier + php.ini-production sera plus proche de ce que vous voulez pour votre serveur, donc copiez-le dans` + / usr / local / etc / php.ini is`, l’emplacement que PHP s’attend à trouver. fichier de configuration:

sudo cp /usr/local/etc/php.ini-production

Ouvrez le nouveau fichier + php.ini avec votre éditeur de texte:

sudo ee /usr/local/etc/php.ini

Dans le fichier de configuration, localisez la section du comportement + cgi.fix_pathinfo +. Il sera commenté et réglé par défaut sur + 1 +:

/usr/local/etc/php.ini

...
;cgi.fix_pathinfo=1
...

Décommentez cette ligne et définissez la valeur sur + 0 +. Cela empêche PHP d’essayer d’exécuter des parties du chemin si le fichier transmis au processus n’est pas trouvé. Cela pourrait être utilisé par un attaquant pour exécuter du code malveillant.

/usr/local/etc/php.ini

...
cgi.fix_pathinfo=
...

Enregistrez le fichier et quittez l’éditeur.

Puis activez le service + php-fpm + pour qu’il démarre au démarrage:

sudo sysrc php_fpm_enable=yes

Puis démarrez le service:

sudo service php-fpm start

Ensuite, configurons Lighttpd pour servir les applications PHP.

Étape 4 - Configuration de Lighttpd pour servir des applications PHP

Dans cette étape, vous allez configurer Lighttpd pour utiliser FastCGI et PHP-FPM. Cela activera PHP sur Lighttpd et donnera un support PHP rapide et efficace.

Commencez par activer le module FastCGI. Ouvrez le fichier de configuration des modules Lighttpd:

sudo ee /usr/local/etc/lighttpd/modules.conf

Localisez la section suivante:

/usr/local/etc/lighttpd/modules.conf

...
##
## FastCGI (mod_fastcgi)
##
#include "conf.d/fastcgi.conf"
...

Décommentez la ligne + include + en supprimant le symbole + # +. Si vous ne trouvez pas cette ligne, ajoutez-la à la fin du fichier.

/usr/local/etc/lighttpd/modules.conf

...
##
## FastCGI (mod_fastcgi)
##

...

Enregistrez le fichier et quittez l’éditeur.

Ensuite, éditez le fichier de configuration FastCGI:

sudo ee /usr/local/etc/lighttpd/conf.d/fastcgi.conf

Ce fichier contient plusieurs exemples, commentés. Ajoutez les lignes de configuration suivantes à la fin du fichier, ce qui permet à Lighttpd de servir les fichiers PHP avec FastCGI et PHP-FPM:

/usr/local/etc/lighttpd/conf.d/fastcgi.conf

...
fastcgi.server += ( ".php" =>
       ((
               "socket" => "/var/run/php-fpm.sock",
               "broken-scriptfilename" => "enable"
       ))
)
...

Ensuite, activez Lighttpd pour qu’il démarre au démarrage. De cette façon, Lighttpd démarrera automatiquement à chaque redémarrage du serveur Web:

sudo sysrc lighttpd_enable=yes

Puis démarrez le service + lighttpd +:

sudo service lighttpd start

Maintenant que PHP est prêt, assurez-vous que tout fonctionne.

Étape 5 - Test de la configuration du serveur

Pour tester le serveur Lighttpd nouvellement configuré, créez d’abord le dossier + / usr / local / www / data +, qui est l’emplacement où Lighttpd recherchera les pages Web à servir.

sudo mkdir -p /usr/local/www/data

Puis créez un + info.php + dans le dossier + / usr / local / www / data / +. Ce fichier testera le fonctionnement de PHP et vous permettra de consulter les informations relatives à la configuration du serveur Web dans un navigateur Web:

sudo ee /usr/local/www/data/info.php

Ajoutez ce code au fichier:

/usr/local/www/data/info.php

<?php phpinfo(); ?>

Enregistrez le fichier et quittez l’éditeur.

Visitez + http: /// info.php + dans votre navigateur Web. Vous verrez une page qui ressemble à ceci:

image: https: //assets.digitalocean.com/articles/lighttpd_php_freebsd11/NXq8JIE.png [La page d’informations PHP]

Cette page contient des informations sur votre système d’exploitation, votre serveur Web et la manière dont votre serveur Web traite les fichiers PHP. Il vérifie également que votre serveur Web peut gérer correctement les fichiers PHP.

Si vous ne voyez pas cette page et que vous voyez plutôt * Erreur 503 Service non disponible *, assurez-vous que le service + php-fpm + a démarré correctement à l’étape précédente.

Une fois que vous avez vérifié que tout fonctionne correctement, supprimez la page + info.php, car elle expose des informations sur votre serveur que vous devez garder confidentielles:

sudo rm /usr/local/www/data/info.php

Le serveur Web est maintenant entièrement configuré et prêt à fonctionner. Placez vos fichiers dans + / usr / local / www / data + pour les servir.

Conclusion

Maintenant que le serveur Web Lighttpd est pleinement opérationnel, vous pouvez héberger des pages Web, des documents et d’autres fichiers sur votre serveur Web. Pour sécuriser davantage votre serveur Web en ajoutant la configuration SSL et d’autres fonctionnalités de sécurité. Pour plus d’informations sur Lighttpd, visitez les forums Lighttpd.