Installation FEMP · 13 min read · Jan 26, 2026
Installer Nginx, MariaDB et PHP (pile FEMP) sur FreeBSD 11
Dans ce tutoriel, je vais décrire le processus d’installation et de configuration de la pile FEMP sur FreeBSD 11.x. La pile logicielle FEMP est un acronyme qui désigne un groupe de programmes généralement installés dans des systèmes d’exploitation Unix/Linux et principalement utilisés pour déployer des applications web dynamiques. Dans ce cas, l’acronyme FEMP fait référence au système d’exploitation Unix-like FreeBSD, sur lequel sont installées ces applications :
- Nginx serveur web, qui est un serveur web en forte croissance et populaire principalement utilisé pour servir du contenu HTML, mais il peut également fournir un équilibrage de charge, une haute disponibilité ou un proxy inverse pour un serveur web ou pour d’autres services réseau.
- PHP interpréteur de langage de programmation dynamique, utilisé dans le backend pour manipuler les données des bases de données et créer du contenu web dynamique qui peut être inclus dans du HTML simple. Les scripts PHP sont exécutés uniquement côté serveur, jamais côté client (dans les navigateurs).
- MariaDB\MySQL SGBDR où les données sont stockées en arrière-plan, tandis que le traitement dynamique est géré par PHP. Dans ce tutoriel, nous allons installer et utiliser le système de gestion de base de données relationnelle MariaDB, un fork communautaire de MySQL, en faveur de la base de données MySQL, qui appartient maintenant à Oracle.
EXIGENCES :
- Une installation minimale de FreeBSD 11.x.
- Une adresse IP statique configurée pour une interface réseau.
- Un compte régulier configuré avec des privilèges root ou un accès direct au système via le compte root.
- De préférence, un nom de domaine enregistré publiquement configuré avec les enregistrements DNS minimaux (enregistrements A et CNAME).
Étape 1 – Installer la base de données MariaDB
Dans la première étape, nous allons installer le système de base de données MariaDB, qui est le composant FEMP qui sera utilisé pour stocker et gérer les données dynamiques du site web. MariaDB/MySQL est l’une des bases de données relationnelles open source les plus utilisées au monde en conjonction avec le serveur web Nginx ou Apache. Les deux serveurs sont très utilisés pour créer et développer des applications web complexes ou des sites web dynamiques. MariaDB peut être installé sur FreeBSD directement à partir des binaires fournis par les dépôts PORTS. Cependant, une simple recherche utilisant la commande ls dans la section des bases de données FreeBSD Ports révèle plusieurs versions de MariaDB, comme le montre la sortie de la commande suivante. De plus, l’exécution de la commande du gestionnaire de paquets pkg affiche les mêmes résultats.
ls -al /usr/ports/databases/ | grep mariadbpkg search mariadb
Dans ce guide, nous allons installer la dernière version de la base de données et du client MariaDB en utilisant la commande pkg comme illustré dans l’extrait ci-dessous.
pkg install mariadb102-server mariadb102-clientAprès que MariaDB ait fini d’installer dans le système, émettez la commande suivante afin d’activer le serveur MySQL à l’échelle du système. Assurez-vous également de démarrer le démon MariaDB comme indiqué ci-dessous.
sysrc mysql_enable="YES"service mysql-server startEnsuite, nous devrons sécuriser la base de données MariaDB en exécutant le script mysql_secure_installation. Lors de l’exécution du script, une série de questions nous sera posée. Le but de ces questions est de fournir un niveau de sécurité pour le moteur MySQL, comme configurer un mot de passe root pour l’utilisateur root de MySQL, supprimer l’utilisateur anonyme, désactiver la connexion à distance pour l’utilisateur root et supprimer la base de données de test. Après avoir choisi un mot de passe fort pour l’utilisateur root de MySQL, répondez par oui à toutes les questions, comme illustré dans l’exemple ci-dessous du script. Ne confondez pas l’utilisateur root de la base de données MariaDB avec l’utilisateur root du système. Bien que ces comptes aient le même nom, root, ils ne sont pas équivalents et sont utilisés à des fins différentes, l’un pour l’administration système et l’autre pour l’administration de la base de données.
/usr/local/bin/mysql_secure_installationNOTE : L'EXÉCUTION DE TOUTES LES PARTIES DE CE SCRIPT EST RECOMMANDÉE POUR TOUS LES SERVEURS MariaDB EN UTILISATION EN PRODUCTION ! VEUILLEZ LIRE CHAQUE ÉTAPE ATTENTIVEMENT ! Pour se connecter à MariaDB afin de le sécuriser, nous aurons besoin du mot de passe actuelpour l'utilisateur root. Si vous venez d'installer MariaDB, etvous n'avez pas encore défini le mot de passe root, le mot de passe sera vide,vous devez donc simplement appuyer sur Entrée ici. Entrez le mot de passe actuel pour root (appuyez sur Entrée pour aucun) :OK, mot de passe utilisé avec succès, passage à la suite... Définir le mot de passe root garantit que personne ne peut se connecter à la base de données MariaDBsans l'autorisation appropriée.Définir le mot de passe root ? [Y/n]y
Nouveau mot de passe :Ressaisir le nouveau mot de passe :Mot de passe mis à jour avec succès !Rechargement des tables de privilèges.. ... Succès !Par défaut, une installation de MariaDB a un utilisateur anonyme, permettant à quiconquede se connecter à MariaDB sans avoir à avoir un compte utilisateur créé pourlui. Ceci est destiné uniquement à des fins de test, et pour rendre l'installationplus fluide. Vous devriez les supprimer avant de passer à unenvironnement de production.Supprimer les utilisateurs anonymes ? [Y/n]y
... Succès !Normalement, root ne devrait être autorisé à se connecter que depuis 'localhost'. Celaassure que quelqu'un ne peut pas deviner le mot de passe root depuis le réseau.Interdire la connexion root à distance ? [Y/n]y
... Succès !Par défaut, MariaDB est livré avec une base de données nommée 'test' à laquelle quiconque peutaccéder. Ceci est également destiné uniquement à des fins de test, et devrait être suppriméavant de passer à un environnement de production.Supprimer la base de données de test et l'accès à celle-ci ? [Y/n]y
- Suppression de la base de données de test... ... Succès ! - Suppression des privilèges sur la base de données de test... ... Succès !Recharger les tables de privilèges garantira que tous les changements effectués jusqu'à présentprendront effet immédiatement.Recharger les tables de privilèges maintenant ? [Y/n]y**
... Succès !Nettoyage...Tout est fait ! Si vous avez terminé toutes les étapes ci-dessus, votre installation de MariaDBdevrait maintenant être sécurisée.Merci d'utiliser MariaDB !Enfin, après avoir terminé de sécuriser la base de données MariaDB, testez si vous êtes autorisé à effectuer une connexion locale à la base de données depuis le compte root en exécutant la commande suivante. Une fois connecté à l’invite de la base de données, tapez simplement quit ou exit pour quitter la console de la base de données et revenir à l’invite de la console utilisateur système comme indiqué dans la capture d’écran ci-dessous.
mysql -u root -p*MariaDB> quit***
L’exécution de la commande sockstat dans FreeBSD révèle rapidement que MariaDB est ouvert aux connexions réseau externes et peut être accessible à distance depuis n’importe quel réseau via le port 3306/TCP.
sockstat -4 -6
Pour désactiver complètement les connexions réseau à distance vers MariaDB, vous devez forcer le socket réseau MySQL à se lier uniquement à l’interface loopback en ajoutant la ligne suivante au fichier /etc/rc.conf avec la commande ci-dessous.
sysrc mysql_args="--bind-address=127.0.0.1"Ensuite, redémarrez le démon MariaDB pour appliquer les modifications et exécutez à nouveau la commande sockstat pour afficher le socket réseau pour le service mysql. Cette fois, le service MariaDB devrait écouter les connexions réseau sur le socket localhost:3306 uniquement.
service mysql-server restartsockstat -4 -6|grep mysql
Si vous développez une application web distante qui a besoin d’accéder à la base de données sur cette machine, revenez sur les modifications du socket MySQL effectuées jusqu’à présent en supprimant ou en commentant la ligne mysql_args=”–bind-address=127.0.0.1” dans le fichier /etc/rc.conf et redémarrez la base de données pour refléter les changements. Dans ce cas, vous devriez prendre en considération d’autres alternatives pour limiter ou interdire l’accès à distance à MySQL, comme exécuter un pare-feu localement et filtrer les adresses IP des clients qui ont besoin d’une connexion à distance ou créer des utilisateurs MySQL avec les adresses IP appropriées pour se connecter au serveur.
Étape 2 – Installer le serveur web Nginx
Le prochain démon important que nous allons installer sur FreeBSD pour notre pile FEMP est le serveur web, représenté par le service Nginx. Le processus d’installation du serveur web Nginx sur FreeBSD est assez simple. Le serveur web Nginx peut être installé à partir des binaires fournis par FreeBSD 11.x Ports. Une simple recherche dans les dépôts Ports dans la section www peut montrer une liste des versions précompilées disponibles pour le logiciel Nginx, comme le montre l’extrait de commande ci-dessous.
ls /usr/ports/www/ | grep nginxL’émission de la commande de gestion des paquets peut afficher les mêmes résultats comme indiqué dans l’image ci-dessous.
pkg search –o nginx
Pour installer la version la plus courante de Nginx sur FreeBSD, exécutez la commande ci-dessous. Lors de l’installation du paquet binaire, le gestionnaire de paquets vous demandera si vous acceptez de télécharger et d’installer le paquet Nginx. En général, vous devez taper le mot oui ou y dans l’invite pour commencer le processus d’installation. Pour éviter l’invite, ajoutez le drapeau –y lors de l’émission de la commande : pkg –y install nginx.
pkg install nginx
Après que le logiciel du serveur web Nginx ait été installé sur votre système, vous devez activer et exécuter le service en émettant les commandes ci-dessous.
sysrc nginx_enable="yes"service nginx startVous pouvez exécuter la commande sockstat pour vérifier si le service Nginx est démarré sur votre système et sur quels sockets réseau il se lie. Normalement, il devrait se lier par défaut sur le socket TCP :80. Vous pouvez utiliser le filtre de ligne de commande grep pour afficher uniquement les sockets qui correspondent au serveur *nginx.
sockstat -4 -6 | grep nginxPour visiter la page web par défaut de Nginx, ouvrez un navigateur sur un ordinateur de votre réseau et naviguez vers l’adresse IP de votre serveur via le protocole HTTP. Dans le cas où vous avez enregistré un nom de domaine ou que vous utilisez un serveur DNS local dans vos locaux, vous pouvez écrire le nom de domaine entièrement qualifié de votre machine ou le nom de domaine dans le champ URI du navigateur. Un message de titre disant “Bienvenue sur nginx !” accompagné de quelques lignes HTML devrait s’afficher dans votre navigateur, comme le montre la capture d’écran suivante.

L’emplacement où les fichiers web sont stockés pour Nginx dans FreeBSD 11.x est le répertoire /usr/local/www/nginx/. Ce répertoire est un lien symbolique vers le répertoire nginx-dist. Pour déployer un site web, copiez les fichiers html ou php dans ce répertoire. Pour changer le répertoire webroot par défaut de Nginx, ouvrez le fichier de configuration de Nginx depuis le répertoire /usr/local/etc/nginx/ et mettez à jour la ligne de déclaration root comme illustré dans l’exemple ci-dessous.
nano /usr/local/etc/nginx/nginx.confCe sera le nouveau chemin webroot pour Nginx :
*root /usr/local/www/new_html_directory;*
Étape 3 – Installer le langage de programmation PHP
Par défaut, le serveur web Nginx ne peut pas directement analyser les scripts PHP, Nginx doit passer le code PHP par le passerelle FastCGI au démon PHP-FPM, qui interprète et exécute les scripts PHP. Pour installer le démon PHP-FPM sur FreeBSD, recherchez les paquets binaires PHP précompilés disponibles en émettant les commandes ci-dessous.
ls /usr/ports/lang/ | grep phppkg search –o phpParmi la multitude de versions PHP disponibles dans les dépôts Ports de FreeBSD, choisissez d’installer la dernière version de l’interpréteur PHP, actuellement la version PHP 7.1, en émettant la commande suivante.
pkg install php71Pour installer quelques extensions PHP supplémentaires, qui pourraient être nécessaires pour déployer des applications web complexes, émettez la commande ci-dessous. Une liste des extensions PHP officiellement prises en charge peut être trouvée en visitant le lien suivant : http://php.net/manual/en/extensions.alphabetical.php
Si vous prévoyez de créer un site web basé sur un système de gestion de contenu, consultez la documentation du CMS afin de découvrir les exigences pour votre système, en particulier quels modules ou extensions PHP sont nécessaires.
php71-mcrypt mod_php71 php71-mbstring php71-curl php71-zlib php71-gd php71-jsonParce que nous exécutons un serveur de base de données dans notre configuration, nous devrions également installer l’extension du pilote de base de données PHP, qui est utilisée par l’interpréteur PHP pour se connecter à la base de données MariaDB.
pkg install php71-mysqliEnsuite, mettez à jour l’utilisateur et le groupe PHP-FPM pour correspondre à l’utilisateur d’exécution Nginx en éditant le fichier de configuration PHP-FPM. Changez les variables de ligne utilisateur et groupe en www comme montré dans l’extrait ci-dessous.
cp /usr/local/etc/php-fpm.d/www.conf{,.backup}nano /usr/local/etc/php-fpm.d/www.confChangez les lignes suivantes pour qu’elles ressemblent à ceci.
user = www
group = www**
Par défaut, le démon Nginx s’exécute avec les privilèges de l’utilisateur système ‘nobody‘. Changez l’utilisateur d’exécution Nginx pour correspondre à l’utilisateur d’exécution PHP-FPM, en éditant le fichier /usr/local/etc/nginx/nginx.conf et en mettant à jour la ligne suivante :
user www;
Par défaut, le démon PHP-FPM sur FreeBSD ouvre un socket réseau sur le port TCP localhost:9000 en état d’écoute. Pour afficher ce socket, vous pouvez utiliser la commande sockstat comme montré dans l’exemple ci-dessous.
sockstat -4 -6| grep php-fpm
Pour que le serveur web Nginx échange des scripts PHP avec la passerelle PHP FastCGI sur le socket réseau 127.0.0.1:9000, ouvrez le fichier de configuration Nginx et mettez à jour le bloc PHP-FPM comme montré dans l’exemple ci-dessous.
Exemple de passerelle PHP FastCGI pour Nginx :
location ~ \.php$ {
root /usr/local/www/nginx;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
Après avoir effectué tous les changements ci-dessus, créez un fichier de configuration pour PHP basé sur le fichier de production par défaut en émettant la commande suivante. Vous pouvez changer les paramètres d’exécution PHP en éditant les variables présentes dans le fichier php.ini.
ln -s /usr/local/etc/php.ini-production /usr/local/etc/php.iniEnfin, pour appliquer tous les changements effectués jusqu’à présent, activez le démon PHP-FPM à l’échelle du système et redémarrez les services PHP-FPM et Nginx en émettant les commandes ci-dessous.
sysrc php_fpm_enable=yesservice php-fpm restartTestez les configurations nginx pour les erreurs de syntaxe :
nginx –t service nginx restart
Pour obtenir les informations PHP actuelles disponibles pour votre pile FEMP sur FreeBSD, créez un fichier phpinfo.php dans le répertoire racine de votre serveur en émettant la commande suivante.
echo "" | tee /usr/local/www/nginx/phpinfo.phpEnsuite, ouvrez un navigateur et naviguez vers la page phpinfo.php en visitant le nom de domaine ou l’adresse IP publique de votre serveur suivi du fichier /phpinfo.php, comme illustré dans la capture d’écran ci-dessous.

C’est tout ! Vous avez réussi à installer et configurer la pile FEMP sur FreeBSD 11. L’environnement est maintenant prêt et entièrement fonctionnel pour commencer à déployer des applications web dynamiques dans vos locaux.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.