Nginx LogoDepuis ma première expérience professionnelle en matière d’hébergement web, j’ai toujours utilisé le serveur Apache pour cette tâche. En 2006, j’ai hébergé une plateforme PMB pour mettre en réseau les onze médiathèques de notre communauté de communes, et Apache sous Debian s’acquittait parfaitement de cette tâche. Depuis cette date, je suis passé par d’autres distributions sur les serveurs dédiés, notamment Slackware et CentOS, mais je n’ai jamais vraiment réfléchi à une alternative au serveur Apache, que je connais aussi bien que ma vieille 750 BMW qui a déjà fait plusieurs fois le tour de la terre.

BMW K75

Ces deux dernières semaines, je me suis intéressé de plus près à l’alternative Nginx, qui promet de meilleures performances. Étant donné que j’héberge un tas d’applications web comme WordPress, Dolibarr, GEPI et OwnCloud sur des serveurs dédiés qui ne sont pas toujours des foudres de guerre, j’étais tout simplement curieux de savoir si le jeu en valait la chandelle et si j’allais pouvoir mieux profiter de mon matériel aux performances relativement modestes. Dans un coin de ma tête, j’ai vaguement l’impression de passer d’une vieille BMW à un 1000 GSX-R ou une R1.

Je me suis donc plongé dans la documentation, j’ai fait un tas de tests sur un serveur bac à sable, et j’ai pris des notes. J’en suis au point où je commence à être passablement familiarisé avec Nginx, et ce n’est peut-être pas une mauvaise idée de tout reprendre depuis le début en réfléchissant à voix haute.

RTFM

La documentation de Nginx est disponible en anglais et en russe sur les deux sites officiels nginx.org et nginx.com.

  • Le Beginner’s Guide s’adresse aux nouveaux venus et fournit une bonne introduction en la matière.
  • Le Admin Guide constitue une documentation complète qui répond à toutes les questions que les administrateurs peuvent se poser.
  • Pour compléter cette documentation, j’ai également suivi l’excellent tutoriel vidéo de Ray Viljoen sur la plateforme de formation Udemy. C’est plutôt bien fait, et je ne peux que vous le recommander. Non, je ne suis pas affilié à Udemy.

Un peu de méthodologie

Lorsque j’expérimente avec une nouvelle technologie, j’aime bien me retrouver avec « quelque chose qui marche ». Il n’y a rien de plus désolant qu’une documentation technique qui se contente d’égrener les listes de variables et les options de configuration sans offrir la moindre application concrète. Pour garder une approche pratique et pragmatique, je vais donc me fixer une série d’objectifs pour cette série d’articles sur Nginx.

Installation

Nginx fait partie des applications officiellement supportées par Red Hat Enterprise Linux et CentOS depuis la version 8.

Si vous en êtes encore à la version 7, vous aurez néanmoins l’embarras du choix pour les dépôts de paquets tiers. Les paquets binaires de Nginx sont fournis par…

Pour l’anecdote, je me suis également amusé à construire Nginx depuis les sources, avec intégration à systemd et tout. Même si c’est très instructif, ça reste quand-même d’un intérêt  académique, étant donné que les paquets binaires permettent d’obtenir exactement le même résultat avec beaucoup moins de prise de tête. Je ne vais donc pas détailler cette opération ici.

J’opte pour le paquet en provenance du dépôt EPEL, étant donné qu’il est maintenu par des gens rodés aux spécificités de la distribution.

$ sudo yum install nginx

L’installation du paquet crée un utilisateur système nginx et un groupe système correspondant.

$ grep nginx /etc/passwd
nginx:x:995:992:Nginx web server:/var/lib/nginx:/sbin/nologin
$ grep nginx /etc/group
nginx:x:992:
$ sudo grep nginx /etc/shadow
nginx:!!:18256::::::

Mise en service

J’active et je démarre le service.

$ sudo systemctl enable nginx
$ sudo systemctl start nginx

Je vérifie s’il tourne correctement.

$ systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2019-12-28 08:32:25 CET; 34s ago
  Process: 19510 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 19507 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 19504 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 19511 (nginx)
   CGroup: /system.slice/nginx.service
           ├─19511 nginx: master process /usr/sbin/nginx
           ├─19512 nginx: worker process
           └─19513 nginx: worker process

Les mainteneurs du paquet fourni par EPEL ont modifié la page par défaut affichée par Nginx. Dans la configuration par défaut, c’est le contenu de /usr/share/nginx/html qui s’affiche, avec un lien symbolique index.html qui pointe vers /usr/share/doc/HTML/index.html.

J’édite ce fichier aux alentours de la ligne 135.

<div id="content">
  <h1>Welcome to CentOS</h1>
  <h2>Hosted on sd-100246.dedibox.fr</h2>

Je vérifie si le port 80 est bien ouvert, et j’affiche la page par défaut du serveur dans un navigateur web.

Nginx CentOS

La suite au prochain numéro, où nous allons nous intéresser à la configuration de Nginx en vue de l’hébergement d’un site statique.


La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.

 


0 commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.