Tutorial

Comment installer Nginx sur Ubuntu 20.04

NginxUbuntuUbuntu 20.04

Introduction

Nginx est l'un des serveurs web les plus populaires au monde et se charge de l'hébergement de certains des sites les plus importants et les plus fréquentés sur Internet. C'est une option légère qui peut être utilisée comme serveur web ou proxy inverse.

Dans ce guide, nous verrons comment installer Nginx sur votre serveur Ubuntu 20.04, ajuster le pare-feu, gérer le processus Nginx et configurer des blocs de serveur pour héberger plus d'un domaine à partir d'un seul serveur.

Conditions préalables

Avant de commencer ce guide, vous devez avoir un non-root user normal avec des privilèges sudo configurés sur votre serveur. Vous pouvez apprendre à configurer un compte utilisateur normal en suivant notre guide de configuration initiale du serveur pour Ubuntu 20.04.

Une fois que vous disposez d'un compte, connectez-vous en tant que non-root user pour commencer.

Étape 1 – Installation de Nginx

Étant donné que Nginx est disponible dans les référentiels d'Ubuntu par défaut, il est possible de l'installer à partir de ces référentiels en utilisant le gestionnaire de packages apt.

Etant donné qu'il s'agit de notre première interaction avec le gestionnaire de packages apt au cours de cette session, nous mettrons à jour notre index de package local afin d'avoir accès aux listes de packages les plus récentes. Ensuite, nous pouvons installer nginx :

  • sudo apt update
  • sudo apt install nginx

Après avoir accepté la procédure, apt installera Nginx et toute dépendances requise sur votre serveur.

Étape 2 – Réglage du pare-feu

Avant de tester Nginx, vous devez régler votre logiciel de pare-feu pour autoriser l'accès au service. Lors de l'installation, Nginx s'enregistre en tant que service avec ufw afin d'en faciliter l'accès.

Énumérez les configurations d'application avec lesquelles ufw sait travailler en saisissant :

  • sudo ufw app list

Vous devriez obtenir une liste des profils de l'application :

Output
Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH

Comme le montre le résultat, il existe trois profils pour Nginx :

  • Nginx Full​​​ : Ce profil ouvre à la fois le port 80 (trafic web normal, non crypté) et le port 443 (trafic crypté TLS/SSL).
  • Nginx HTTP : Ce profil n'ouvre que le port 80 (trafic web normal, non crypté).
  • Nginx HTTPS : Ce profil n'ouvre que le port 443 (trafic crypté TLS/SSL).

Nous vous recommandons d'activer le profil le plus restrictif qui autorisera tout de même le trafic que vous avez configuré. Maintenant, nous avons uniquement besoin d'autoriser le trafic sur le port 80.

Vous pouvez l'activer en tapant :

  • sudo ufw allow 'Nginx HTTP'

Vous pouvez vérifier le changement en saisissant :

  • sudo ufw status

Le résultat indiquera le trafic HTTP autorisé :

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

Étape 3 – Vérification de votre serveur Web

À la fin du processus d'installation, Ubuntu 20.04 démarre Nginx. Le serveur web devrait déjà être opérationnel.

Nous pouvons vérifier grâce au système init systemd que le service fonctionne bien en saisissant :

  • systemctl status nginx
Output
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-04-20 16:08:19 UTC; 3 days ago Docs: man:nginx(8) Main PID: 2369 (nginx) Tasks: 2 (limit: 1153) Memory: 3.5M CGroup: /system.slice/nginx.service ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2380 nginx: worker process

Comme cela le confirme, le service a bien démarré. Cependant, la meilleure façon de le vérifier sonsiste à demander une page à partir de Nginx.

Naviguez sur l'adresse IP de votre serveur pour accéder à la page d'accueil par défaut de Nginx et confirmer que le logiciel fonctionne correctement. Si vous ne connaissez pas l'adresse IP de votre serveur, vous pouvez la trouver en utilisant l'outil icanhazip.com, qui vous donnera votre adresse IP publique (il la recevra à partir d'un autre emplacement sur Internet) :

  • curl -4 icanhazip.com

Une fois que vous avez l'adresse IP de votre serveur, saisissez-la dans la barre d'adresse de votre navigateur :

http://your_server_ip

Vous devriez obtenir la page d'accueil par défaut de Nginx :

Page par défaut de Nginx

Si vous arrivez sur cette page, cela signifie que votre serveur fonctionne correctement et que vous pouvez désormais le gérer.

Étape 4 - Gestion du processus Nginx

Maintenant que votre serveur web fonctionne, examinons certaines commandes de base de gestion.

Pour arrêter votre serveur Web, tapez :

  • sudo systemctl stop nginx

Pour démarrer le serveur web lorsqu'il est arrêté, tapez :

  • sudo systemctl start nginx

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

  • sudo systemctl restart nginx

Si vous procédez uniquement à des modifications de configuration, il se peut que Nginx se recharge souvent sans interrompre les connexions. Pour ce faire, tapez :

  • sudo systemctl reload nginx

Par défaut, Nginx est configuré pour un lancement automatique au démarrage du serveur. Si ce n'est pas ce que vous souhaitez, vous pouvez désactiver ce comportement en tapant :

  • sudo systemctl disable nginx

Pour réactiver le service de lancement automatique au démarrage, vous pouvez taper :

  • sudo systemctl enable nginx

Désormais vous connaissez les commandes de gestion de base et devriez être prêt à configurer le site pour héberger plusieurs domaines.

Étape 6 - Mise en place des blocs de serveur (recommandé)

Avec le serveur Web Nginx, vous pouvez utiliser des blocs de serveur (similaires aux hôtes virtuels dans Apache) pour encapsuler les détails de configuration et héberger plusieurs domaines à partir d'un seul serveur. Nous allons configurer un domaine appelé your_domain, mais vous devez le remplacer par le nom propre à votre domaine. Pour en savoir plus sur la configuration d'un nom de domaine avec DigitalOcean, veuillez vous reporter à notre Introduction au DNS DigitalOcean.

Nginx sur Ubuntu 20.04 dispose d'un bloc serveur activé par défaut qui est configuré pour servir des documents à partir d'un répertoire à /var/www/html. Même si cela fonctionne bien pour un seul site, cela peut devenir ingérable si vous hébergez plusieurs sites. Au lieu de modifier /var/www/html, créons une structure de répertoire au sein de /var/www pour votre your_domain, en laissant /var/www/html en place comme répertoire par défaut qui sera utilisé si une demande du client ne correspond à aucun autre site.

Créez le répertoire pour votre_domaine comme suit en utilisant le drapeau -p pour créer tout répertoire parent nécessaire :

  • sudo mkdir -p /var/www/your_domain/html

Ensuite, attribuez la propriété du répertoire avec la variable d'environnement $USER

  • sudo chown -R $USER:$USER /var/www/your_domain/html

Les autorisations de la racine de votre site internet devraient être correctes si vous n'avez pas modifié votre valeur umask, qui définit les autorisations de fichier par défaut. Pour vous assurer que vos autorisations sont correctes et permettre au propriétaire de lire, écrire et exécuter les fichiers tout en accordant uniquement des autorisations de lecture et d'exécution aux groupes et aux autres, vous pouvez saisir la commande suivante :

  • sudo chmod -R 755 /var/www/your_domain

Ensuite, créez une page index.html à l'aide de nano ou de votre éditeur favori :

  • nano /var/www/your_domain/html/index.html

À l'intérieur, ajoutez l'exemple de HTML suivant :

/var/www/your_domain/html/index.html
<html>
    <head>
        <title>Welcome to your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain server block is working!</h1>
    </body>
</html>

Enregistrez et fermez le fichier en tapant CTRL et X puis Y et ENTER une fois que vous avez terminé.

Pour que Nginx puisse offrir ce contenu, vous devez créer un bloc serveur en utilisant les directives correctes. Au lieu de directement modifier le fichier de configuration par défaut, créons-en un nouveau dans /etc/nginx/sites-available/your_domain:

  • sudo nano /etc/nginx/sites-available/your_domain

Collez le bloc de configuration suivant, qui est similaire à celui par défaut, mais mis à jour pour notre nouveau répertoire et notre nom de domaine :

/etc/nginx/sites-available/your_domain
server {
        listen 80;
        listen [::]:80;

        root /var/www/your_domain/html;
        index index.html index.htm index.nginx-debian.html;

        server_name your_domain www.your_domain;

        location / {
                try_files $uri $uri/ =404;
        }
}

Notez que nous avons mis à jour la configuration root de notre nouveau répertoire et le server_name vers notre nom de domaine.

Ensuite, activons le fichier en créant un lien depuis celui-ci vers le répertoire sites-enabled, que Nginx lit lors du démarrage :

  • sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

Deux blocs serveur sont désormais activés et configurés pour répondre aux demandes en fonction de leurs directives listen et server_name (vous pouvez en savoir plus sur la façon dont Nginx traite ces directives en cliquant ici) :

  • your_domain : répondra aux demandes de your_domain et www.your_domain.
  • default : répondra à toutes les demandes provenant du port 80 qui ne correspondent pas aux deux autres blocs.

Pour éviter un éventuel problème de mémoire de compartiment de hachage pouvant résulter de l'ajout de noms de serveur supplémentaires, vous devez configurer une valeur unique dans le fichier /etc/nginx/nginx.conf. Ouvrez le fichier :

  • sudo nano /etc/nginx/nginx.conf

Trouvez la directive server_names_hash_bucket_size et supprimez le symbole # pour décommenter la ligne. Si vous utilisez nano, appuyez sur CTRL et w pour rechercher des mots rapidement dans le fichier.

/etc/nginx/nginx.conf
...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

Enregistrez et fermez le fichier lorsque vous avez terminé.

Ensuite, procédez à un test pour vous assurer qu'il n'y a aucune erreur de syntaxe dans aucun de vos fichiers Nginx :

  • sudo nginx -t

S'il n'y a pas de problème, redémarrez Nginx pour activer vos modifications :

  • sudo systemctl restart nginx

Nginx devrait maintenant vous présenter votre nom de domaine. Vous pouvez le vérifer en allant sur http://your_domain, où vous devriez voir quelque chose de similaire à ceci :

Nginx first server block

Étape 6 - Se familiariser avec les fichiers et répertoires Nginx importants

Maintenant que vous savez comment gérer le service Nginx en lui-même, vous devriez prendre quelques minutes pour vous familiariser avec quelques répertoires et fichiers importants.

Contenu

  • /var/www/html : le contenu web réel (qui par défaut ne consiste qu'en la page Nginx par défaut que vous avez vue précédemment), est présenté à partir du répertoire /var/www/html. Cela peut être modifié en changeant les fichiers de configuration Nginx.

Configuration du serveur

  • /etc/nginx : répertoire de configuration Nginx. Tous les fichiers de configuration Nginx se trouvent ici.
  • /etc/nginx/nginx.conf : fichier de configuration principal de Nginx. Celui-ci peut être modifié pour apporter des changements à la configuration globale de Nginx.
  • /etc/nginx/sites-available/: répertoire dans lequel vous pouvez stocker les blocs de serveur par site. Nginx n'utilisera pas les fichiers de configuration trouvés dans ce répertoire à moins qu'ils ne soient liés au répertoire sites-enabled. En règle générale, la configuration de tous les blocs de serveur se fait dans ce répertoire, puis s'active en établissant une liaison avec l'autre répertoire.
  • /etc/nginx/sites-enabled/: répertoire dans lequel les blocs de serveur par site activés sont stockés. En règle générale, ils sont créés en reliant les fichiers de configuration trouvés dans le répertoire sites-available.
  • /etc/nginx/snippets: ce répertoire contient des fragments de configuration qui peuvent être inclus ailleurs dans la configuration Nginx. Les segments de configuration potentiellement reproductibles sont de bons candidats pour la refactorisation en fragments.

Journaux du serveur

  • /var/log/nginx/access.log : chaque requête adressée à votre serveur web est enregistrée dans ce fichier journal, sauf si Nginx est configuré pour procéder autrement.
  • /var/log/nginx/error.log : toute erreur Nginx sera enregistrée dans ce journal. 

Conclusion

Maintenant que votre serveur Web est installé, vous disposez de nombreuses options pour le type de contenu que vous voulez présenter et les technologies que vous souhaitez utiliser pour créer une expérience plus riche.

Si vous souhaitez créer une pile d'applications plus complète, consultez l'article Comment installer Linux, Nginx, MySQL, PHP (pile LEMP) sur Ubuntu 20.04.

Creative Commons License