Comment installer Nginx sur FreeBSD 11.2

introduction

Nginx est l’un des serveurs Web les plus populaires au monde, connu pour son utilisation fréquente en tant qu’équilibreur de charge et proxy inverse. C’est plus respectueux des ressources qu’Apache, et bon nombre des sites Internet les plus importants et les plus soumis à la traite font de Nginx l’utilisation de leur contenu.

Dans ce guide, nous montrerons comment installer Nginx sur un serveur FreeBSD 11.2.

Conditions préalables

Avant de commencer ce guide, vous devez avoir accès à un serveur exécutant FreeBSD. Ce guide a été spécialement conçu pour un serveur exécutant FreeBSD 11.2, mais il devrait également fonctionner sur les anciennes versions prises en charge du système d’exploitation.

Si vous débutez avec FreeBSD, vous pouvez trouver utile de personnaliser ce serveur en suivant les instructions: https://www.digitalocean.com/community/tutorials/how-to-get-started-with-freebsd] .

De plus, si vous prévoyez de configurer un nom de domaine pour ce serveur, vous aurez besoin des éléments suivants:

  • Un nom de domaine enregistré que vous possédez et contrôlez. Si vous ne possédez pas déjà un nom de domaine enregistré, vous pouvez en enregistrer un auprès d’un des nombreux bureaux d’enregistrement de noms de domaine (par exemple, Namecheap, GoDaddy, etc.).

  • Un DNS * Un enregistrement * qui pointe votre domaine vers l’adresse IP publique de votre serveur. Vous pouvez suivre cien tutoriel sur les noms d’hôtes pour savoir comment les ajouter.

Étape 1 - Installation de Nginx

Pour commencer, nous allons installer Nginx en utilisant + pkg +, l’outil intégré de gestion des paquets binaires de FreeBSD. La commande suivante mettra à jour votre copie locale des packages disponibles, puis installera le package + nginx +:

sudo pkg install nginx

Si c’est la première fois que vous utilisez + pkg +, il vous sera demandé de confirmer que vous lui permettez de démarrer lui-même. Pour ce faire, appuyez sur + y + puis + ENTER +. Puis, lorsque vous y êtes invité, confirmez que vous approuvez l’installation du paquetage + nginx + en appuyant à nouveau sur les touches + y + puis + ENTER +.

Si vous utilisez le shell + csh + ou + + tcsh +, assurez-vous d’exécuter la commande + rehash +. Cela rend le shell conscient des nouvelles applications que vous avez installées:

rehash

Nginx est maintenant installé sur votre serveur, mais il n’est pas encore en cours d’exécution. Dans l’étape suivante, nous allons permettre à Nginx de commencer à s’exécuter à chaque démarrage du serveur et de le démarrer pour cette session, ainsi que de suivre le processus de sécurisation du serveur en configurant un pare-feu avec IPFW.

Étape 2 - Activer le service Nginx et configurer un pare-feu avec IPFW

Pour que FreeBSD lance Nginx en tant que service conventionnel, vous devez indiquer à FreeBSD que vous souhaitez l’activer. Cela vous permettra de le gérer comme n’importe quel autre service, plutôt que comme une application autonome, et configurera également FreeBSD pour le démarrer automatiquement au démarrage.

Pour ce faire, vous devez d’abord connaître le paramètre + rc + correct à définir pour le service + nginx +. + rc + est un utilitaire FreeBSD qui contrôle les processus d’amorçage automatique du système. Les scripts de chaque service disponible sur le système se trouvent dans le répertoire + / usr / local / etc / rc.d +. Celles-ci définissent les paramètres utilisés pour activer chaque service à l’aide de la variable + rcvar +. Nous pouvons voir ce que chaque service + rcvar + est défini en tapant:

grep rcvar /usr/local/etc/rc.d/*

Une fois installée, cette commande affichera une liste similaire à celle-ci:

Output/usr/local/etc/rc.d/cloudconfig:rcvar="cloudinit_enable"
/usr/local/etc/rc.d/cloudfinal:rcvar="cloudinit_enable"
/usr/local/etc/rc.d/cloudinit:rcvar="cloudinit_enable"
/usr/local/etc/rc.d/cloudinitlocal:rcvar="cloudinit_enable"
/usr/local/etc/rc.d/nginx:rcvar=
/usr/local/etc/rc.d/rsyncd:rcvar=rsyncd_enable

Le paramètre que vous devez définir pour le service + nginx + est mis en surbrillance ici dans cette sortie. Le nom du script lui-même - le dernier composant du chemin avant les deux points - est également utile à connaître, car c’est le nom que FreeBSD utilise pour faire référence au service.

Pour activer le service + nginx +, vous devez ajouter son + rcvar + au fichier + rc.conf +, qui contient les informations de configuration système globale référencées par les scripts de démarrage. Utilisez votre éditeur préféré pour ouvrir le fichier + / etc / rc.conf avec les privilèges` + sudo`. Ici, nous allons utiliser + ee +:

sudo ee /etc/rc.conf

En haut du fichier, quelques paramètres + rcvar + sont déjà en place. Ajoutez le paramètre + nginx_enable + + + rcvar + sous ceux-ci et réglez-le sur " YES ":

/etc/rc.conf

. . .
sshd_enable="YES"


. . .

Toujours dans le fichier + rc.conf +, nous ajouterons quelques directives supplémentaires pour activer et configurer un pare-feu IPFW. IPFW est un pare-feu dynamique écrit pour FreeBSD. Il fournit une syntaxe puissante qui vous permet de personnaliser les règles de sécurité pour la plupart des cas d’utilisation.

Directement sous le paramètre + nginx_enable + que vous venez d’ajouter, ajoutez les lignes en surbrillance suivantes:

/etc/rc.conf

. . .
nginx_enable="YES"

Voici ce que chacune de ces directives et leurs paramètres font:

  • + firewall_enable =" YES "+ - La définition de cette directive sur " YES " permet au pare-feu de démarrer à chaque démarrage du serveur.

  • + firewall_type =" workstation "+ - FreeBSD fournit plusieurs types de pare-feu par défaut, chacun ayant une configuration légèrement différente. En déclarant le type + workstation +, le pare-feu ne protégera ce serveur qu’à l’aide de règles avec état.

  • + firewall_myservices =" 22 / tcp 80 / tcp "+ - La directive + firewall_myservices + vous permet de répertorier les ports TCP que vous souhaitez autoriser à travers le pare-feu. Dans cet exemple, nous spécifions les ports + 22 + et + 80 + pour permettre l’accès SSH et HTTP au serveur, respectivement.

  • + firewall_allowservices =" any "+ - Ceci permet à une machine depuis n’importe quelle adresse IP de communiquer via les ports spécifiés dans la directive + firewall_myservices +.

Après avoir ajouté ces lignes, enregistrez le fichier et fermez l’éditeur en appuyant sur + CTRL + C +, en tapant + exit +, puis en appuyant sur + ENTER +.

Ensuite, démarrez le service de pare-feu + ipfw +. Étant donné que c’est la première fois que vous démarrez le pare-feu sur ce serveur, il est possible que cela provoque le blocage de votre serveur, le rendant inaccessible via SSH. La commande + nohup + suivante - qui signifie «pas de blocage» - lancera le pare-feu tout en empêchant le blocage et redirigera également la sortie standard et l’erreur vers un fichier journal temporaire:

sudo nohup service ipfw start >/tmp/ipfw.log 2>&1

Si vous utilisez les shells + csh + ou + tcsh +, cependant, cette redirection entraînera une redirection de sortie + ambiguë. + Dans votre sortie. Si vous utilisez l’un de ces shells, exécutez ce qui suit pour lancer + ipfw +:

sudo nohup service ipfw start >&/tmp/ipfw.log

Ensuite, démarrez le service + nginx

sudo service nginx start

Ensuite, pour vérifier que Nginx est capable de servir le contenu correctement, entrez l’adresse IP publique de votre serveur dans la barre d’URL de votre navigateur Web préféré:

http://

Si tout fonctionne correctement, vous verrez la page de destination par défaut de Nginx:

image: https: //assets.digitalocean.com/freebsd/nginx/nginx_default_page.png [Page par défaut de Nginx]

Cela montre que Nginx est installé et fonctionne correctement et qu’il est autorisé à passer à travers le pare-feu comme prévu. Toutefois, il reste quelques modifications à apporter à la configuration pour que cette dernière fonctionne avec des paramètres autres que ceux par défaut ou serve le contenu en utilisant un nom de domaine.

Étape 3 - Configuration d’un bloc de serveur

Lors de l’utilisation du serveur Web Nginx, server blocks (similaire aux hôtes virtuels dans Apache) peut être utilisé pour encapsuler les détails de la configuration et héberger plusieurs domaines à partir d’un seul serveur. Nous allons configurer un domaine appelé * exemple.com *, mais vous devez * le remplacer par votre propre nom de domaine *. Pour en savoir plus sur la configuration d’un nom de domaine avec DigitalOcean, consultez notre Introduction to DigitalOcean DNS.

Nginx sur FreeBSD 11.2 a un bloc de serveur activé par défaut qui est configuré pour servir les documents à partir d’un répertoire situé dans + / usr / local / www / nginx +. Bien que cela fonctionne bien pour un seul site, cela peut devenir lourd si vous hébergez plusieurs sites. Au lieu de modifier + / usr / local / www / nginx +, créons une structure de répertoire dans + / usr / local / www + pour notre site * example.com *.

Créez le répertoire pour * exemple.com * comme suit, en utilisant l’indicateur + -p + pour créer les répertoires parents nécessaires:

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

Ensuite, attribuez la propriété du répertoire à l’utilisateur * www *, le profil utilisateur d’exécution par défaut de Nginx:

sudo chown -R www:www /usr/local/www/

Les permissions de votre racine web doivent être correctes si vous n’avez pas modifié votre valeur + umask +, mais vous pouvez en être sûr en tapant:

sudo chmod -R 755 /usr/local/www/

Ensuite, créez un exemple de page + index.html en utilisant` + ee + `:

sudo ee /usr/local/www//html/index.html

À l’intérieur, ajoutez l’exemple HTML suivant:

/usr/local/www/example.com/html/index.html

<html>
   <head>
       <title>Welcome to !</title>
   </head>
   <body>
       <h1>Success!  The  server block is working!</h1>
   </body>
</html>

Enregistrez et fermez le fichier lorsque vous avez terminé.

Pour que Nginx puisse diffuser ce contenu, il est nécessaire de créer un bloc de serveur avec les directives appropriées. Ouvrez le fichier de configuration principal de Nginx. Par défaut, cela se trouve dans le répertoire + / usr / local / etc / nginx / +:

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

Lorsque vous ouvrez le fichier pour la première fois, les éléments suivants s’affichent tout en haut:

/usr/local/etc/nginx/nginx.conf

#user  nobody;
worker_processes  1;

. . .

Décommentez la directive + utilisateur + en supprimant le signe dièse (+ # +) puis changez l’utilisateur de * nobody * en * www *. Puis mettez à jour la directive + worker_processes + qui vous permet de sélectionner le nombre de processus de travail que Nginx utilisera. La valeur optimale à entrer ici n’est pas toujours évidente ni facile à trouver. Si vous le définissez sur + auto +, Nginx le configurera à un ouvrier par cœur de processeur, ce qui sera suffisant dans la plupart des cas:

/usr/local/etc/nginx/nginx.conf

user  ;
worker_processes  ;
. . .

Ensuite, faites défiler jusqu’au bloc + serveur +. Avec tous les commentaires supprimés, cela ressemblera à ceci:

/usr/local/etc/nginx/nginx.conf

. . .
   server {
       listen       80;
       server_name  localhost;

       location / {
           root   /usr/local/www/nginx;
           index  index.html index.htm;
       }

       error_page   500 502 503 504  /50x.html;

       location = /50x.html {
           root   /usr/local/www/nginx-dist;
       }
   }

Supprimez tout le bloc de serveur, y compris toutes les lignes commentées, et remplacez-le par le contenu suivant:

/usr/local/etc/nginx/nginx.conf

. . .
   server {
       access_log /var/log/nginx/.access.log;
       error_log /var/log/nginx/.error.log;
       listen       80;
       server_name   www.;

       location / {
           root   /usr/local/www//html;
           index  index.html index.htm;
       }
   }
. . .

Voici ce que font les directives de ce bloc serveur:

  • + access_log +: Cette directive définit l’emplacement des journaux d’accès du serveur.

  • + error_log +: Ceci définit le fichier où Nginx écrira ses journaux d’erreur.

  • + listen +: La directive + listen + déclare le port sur lequel Nginx doit écouter. Dans ce cas, nous le configurons sur le port + 80 + afin qu’il puisse écouter le trafic HTTP.

  • + nom_serveur +: Ici, pointez Nginx sur votre nom de domaine et sur les alias que vous avez pour cela. Si vous n’avez pas de nom de domaine, pointez Nginx sur l’adresse IP publique de votre serveur.

  • + root +: Ceci définit la racine du document de site Web, que vous avez créée précédemment dans cette étape.

  • + index +: Cette directive définit les fichiers qui seront utilisés comme index et dans quel ordre ils doivent être vérifiés.

Tous ensemble, avec les commentaires supprimés, le fichier ressemblera à ceci:

/usr/local/letc/nginx/nginx.conf

user  www;
worker_processes  ;

events {
   worker_connections  1024;
}

http {
   include       mime.types;
   default_type  application/octet-stream;
   sendfile        on;
   keepalive_timeout  65;

   server {
       access_log /var/log/nginx/.access.log;
       error_log /var/log/nginx/.error.log;
       listen       80;
       server_name   www.;

       location / {
           root   /usr/local/www/;
           index  index.html index.htm;
       }

   }

}

Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, testez les erreurs de syntaxe dans votre fichier de configuration en tapant:

sudo nginx -t

Si votre fichier de configuration ne contient aucune erreur de syntaxe détectable, le résultat suivant s’affiche:

Outputnginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful

Si la commande ci-dessus renvoie des erreurs, rouvrez le fichier de configuration Nginx à l’emplacement où l’erreur a été détectée et essayez de résoudre le problème.

Lorsque votre configuration est correctement vérifiée, rechargez le service + nginx + pour activer vos modifications:

sudo service nginx reload

Nginx devrait maintenant servir le contenu que vous avez configuré dans le fichier + index.html +. Testez ceci en naviguant sur + http: // +, où vous devriez voir quelque chose comme ça:

image: https: //assets.digitalocean.com/articles/nginx_server_block_1404/first_block.png [Premier bloc de serveur Nginx]

Enfin, nous passerons en revue quelques commandes vous permettant de gérer le service Nginx.

Étape 4 - Gestion du processus Nginx

Maintenant que votre serveur Web est opérationnel, passons en revue certaines commandes de gestion de base.

Pour arrêter votre serveur Web, tapez:

sudo service nginx stop

Pour démarrer le serveur Web quand il est arrêté, tapez:

sudo service nginx start

Pour arrêter puis redémarrer le service, tapez:

sudo service nginx restart

Si vous effectuez simplement des modifications de configuration, vous pouvez recharger Nginx sans interrompre aucune connexion. Pour ce faire, tapez:

sudo service nginx reload

Enfin, rappelez-vous qu’à l’étape 2 nous avons activé le service + nginx + en ajoutant la directive + nginx_enable =" YES "+ au fichier + rc.conf +. Si vous souhaitez désactiver le service + nginx + pour l’empêcher de démarrer au démarrage du serveur, vous devez rouvrir ce fichier et supprimer cette ligne.

Conclusion

Vous avez maintenant un serveur Web Nginx entièrement fonctionnel installé sur votre ordinateur. À partir de là, vous pouvez chiffrer le trafic Web de votre serveur en activant HTTPS. Pour savoir comment faire cela, consultez Comment sécuriser Nginx avec Let Encrypt sur FreeBSD. Vous pouvez également installez et configurez MySQL et PHP qui, avec Nginx, vous donnerait une pile FEMP complète.