Comment installer Nginx sur Ubuntu 20.04

Introduction

Nginx est l’un des serveurs web les plus populaires au monde et est responsable de l’hébergement de certains des sites les plus importants et les plus fréquentés sur Internet. C’est un choix léger qui peut être utilisé soit comme serveur web, soit comme proxy inverse.

Dans ce guide, nous discuterons de la manière d’installer Nginx sur votre serveur Ubuntu 20.04, d’ajuster le pare-feu, de gérer le processus Nginx et de configurer des blocs serveurs pour héberger plusieurs domaines à partir d’un seul serveur.

Simplifiez le déploiement d’applications avec la plateforme d’application DigitalOcean. Déployez directement depuis GitHub en quelques minutes.

Prérequis

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

Vous voudrez également facultativement avoir enregistré un nom de domaine avant de terminer les dernières étapes de ce tutoriel. Pour en savoir plus sur la configuration d’un nom de domaine avec DigitalOcean, veuillez vous référer à notre Introduction à DigitalOcean DNS.

Lorsque vous avez un compte disponible, connectez-vous en tant qu’utilisateur non-root pour commencer.

Étape 1 – Installation de Nginx

Étant donné que Nginx est disponible dans les dépôts par défaut d’Ubuntu, il est possible de l’installer à partir de ces dépôts en utilisant le système de paquetage apt.

Comme c’est notre première interaction avec le système de paquetage apt lors de cette session, nous mettrons à jour notre index de paquets local afin d’avoir accès aux listes de paquets les plus récentes. Ensuite, nous pouvons installer nginx:

  1. sudo apt update
  2. sudo apt install nginx

Après avoir accepté la procédure, apt installera Nginx et toutes les dépendances nécessaires sur votre serveur.

Étape 2 – Ajustement du pare-feu

Avant de tester Nginx, le logiciel pare-feu doit être ajusté pour permettre l’accès au service. Nginx se registre en tant que service avec ufw lors de l’installation, ce qui rend simple l’autorisation d’accès à Nginx.

Listez les configurations d’application avec lesquelles ufw sait travailler en tapant :

  1. sudo ufw app list

Vous devriez obtenir une liste des profils d’application :

Output
Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH

Comme le montre la sortie, il existe trois profils disponibles pour Nginx :

  • Nginx complet : Ce profil ouvre à la fois le port 80 (trafic web normal non chiffré) et le port 443 (trafic chiffré TLS/SSL)
  • Nginx HTTP : Ce profil ouvre uniquement le port 80 (trafic web normal non chiffré)
  • Nginx HTTPS : Ce profil ouvre uniquement le port 443 (trafic chiffré TLS/SSL)

Il est recommandé d’activer le profil le plus restrictif qui permettra toujours le trafic que vous avez configuré. Pour l’instant, nous devrons seulement autoriser le trafic sur le port 80.

Vous pouvez activer ceci en tapant :

  1. sudo ufw allow 'Nginx HTTP'

Vous pouvez vérifier le changement en tapant :

  1. sudo ufw status

La sortie indiquera quel trafic HTTP est 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 en marche.

Nous pouvons vérifier avec le système d’initialisation systemd pour s’assurer que le service fonctionne en tapant:

  1. 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 confirmé par cette sortie, le service a démarré avec succès. Cependant, la meilleure façon de le tester est de demander réellement une page à Nginx.

Vous pouvez accéder à la page d’accueil par défaut de Nginx pour confirmer que le logiciel fonctionne correctement en naviguant vers l’adresse IP de votre serveur. 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 telle que reçue d’un autre endroit sur Internet:

  1. curl -4 icanhazip.com

Lorsque vous avez l’adresse IP de votre serveur, saisissez-la dans la barre d’adresse de votre navigateur:

http://your_server_ip

Vous devriez recevoir la page d’accueil par défaut de Nginx:

Si vous êtes sur cette page, votre serveur fonctionne correctement et est prêt à être géré.

Étape 4 – Gestion du Processus Nginx

Maintenant que votre serveur web est opérationnel, examinons quelques commandes de gestion de base.

Pour arrêter votre serveur web, tapez:

  1. sudo systemctl stop nginx

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

  1. sudo systemctl start nginx

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

  1. sudo systemctl restart nginx

Si vous ne faites que des modifications de configuration, Nginx peut souvent être rechargé sans interrompre les connexions. Pour ce faire, tapez:

  1. sudo systemctl reload nginx

Par défaut, Nginx est configuré pour démarrer automatiquement lorsque le serveur démarre. Si ce n’est pas ce que vous voulez, vous pouvez désactiver ce comportement en tapant :

  1. sudo systemctl disable nginx

Pour réactiver le service pour qu’il démarre au démarrage, vous pouvez taper :

  1. sudo systemctl enable nginx

Vous avez maintenant appris les commandes de gestion de base et devriez être prêt à configurer le site pour héberger plus d’un domaine.

Lors de l’utilisation du serveur web Nginx, les blocs de serveurs (similaires aux hôtes virtuels dans Apache) peuvent être utilisés pour encapsuler les détails de configuration et héberger plus d’un domaine à partir d’un seul serveur. Nous allons configurer un domaine appelé votre_domaine, mais vous devriez le remplacer par votre propre nom de domaine.

Nginx sur Ubuntu 20.04 a un bloc de serveur activé par défaut qui est configuré pour servir des documents à partir d’un répertoire à /var/www/html. Bien que cela fonctionne bien pour un seul site, cela peut devenir fastidieux si vous hébergez plusieurs sites. Au lieu de modifier /var/www/html, créons une structure de répertoires dans /var/www pour notre site votre_domaine, en laissant /var/www/html en place comme répertoire par défaut à servir si une demande client ne correspond à aucun autre site.

Créez le répertoire pour votre_domaine comme suit, en utilisant le drapeau -p pour créer les répertoires parent nécessaires :

  1. sudo mkdir -p /var/www/your_domain/html

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

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

Les autorisations de vos racines web 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 permettent 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 :

  1. sudo chmod -R 755 /var/www/your_domain

Ensuite, créez une page index.html d’exemple en utilisant nano ou votre éditeur préféré :

  1. sudo nano /var/www/your_domain/html/index.html

À l’intérieur, ajoutez le HTML d’exemple 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 appuyant sur Ctrl+X pour sortir, puis lorsqu’on vous demande de sauvegarder, appuyez sur Y puis sur Entrée.

Pour que Nginx puisse servir ce contenu, il est nécessaire de créer un bloc serveur avec les directives correctes. Au lieu de modifier directement le fichier de configuration par défaut, créons-en un nouveau à /etc/nginx/sites-available/your_domain :

  1. sudo nano /etc/nginx/sites-available/your_domain

Collez le bloc de configuration suivant, similaire au fichier 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;
        }
}

Remarquez que nous avons mis à jour la configuration root vers 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 au démarrage :

  1. sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

Remarque: Nginx utilise une pratique courante appelée liens symboliques, ou symlinks, pour suivre quels blocs serveur sont activés. Créer un symlink revient à créer un raccourci sur le disque, de sorte que vous puissiez ensuite supprimer le raccourci du répertoire sites-enabled tout en conservant le bloc serveur dans sites-available si vous souhaitez l’activer.

Désormais, deux blocs serveur sont 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 ici):

  • votre_domaine: Répondra aux demandes pour votre_domaine et www.votre_domaine.
  • par_défaut: Répondra à toutes les demandes sur le port 80 qui ne correspondent pas aux deux autres blocs.

Pour éviter un éventuel problème de mémoire de hachage qui peut survenir en ajoutant des noms de serveur supplémentaires, il est nécessaire d’ajuster une seule valeur dans le fichier /etc/nginx/nginx.conf. Ouvrez le fichier:

  1. sudo nano /etc/nginx/nginx.conf

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

Note: Commenter des lignes de code – généralement en mettant # au début d’une ligne – est un autre moyen de les désactiver sans avoir besoin de les supprimer réellement. De nombreux fichiers de configuration sont livrés avec plusieurs options commentées afin qu’elles puissent être activées ou désactivées, en les basculant entre le code actif et la documentation.

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

Enregistrez et fermez le fichier lorsque vous avez terminé.

Ensuite, testez pour vous assurer qu’il n’y a pas d’erreurs de syntaxe dans vos fichiers Nginx :

  1. sudo nginx -t

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

  1. sudo systemctl restart nginx

Nginx devrait maintenant servir votre nom de domaine. Vous pouvez tester cela en accédant à http://your_domain, où vous devriez voir quelque chose comme ceci :

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

Maintenant que vous savez comment gérer le service Nginx lui-même, prenez 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 servi à partir du répertoire /var/www/html. Cela peut être modifié en modifiant les fichiers de configuration de Nginx.

Configuration du serveur

  • /etc/nginx: Le répertoire de configuration de Nginx. Tous les fichiers de configuration de Nginx résident ici.
  • /etc/nginx/nginx.conf: Le fichier de configuration principal de Nginx. Celui-ci peut être modifié pour apporter des modifications à la configuration globale de Nginx.
  • /etc/nginx/sites-available/: Le répertoire où les blocs serveur par site peuvent être stockés. 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. Typiquement, toute la configuration du bloc serveur est effectuée dans ce répertoire, puis activée en liant vers l’autre répertoire.
  • /etc/nginx/sites-enabled/: Le répertoire où les blocs serveur par site activés sont stockés. Typiquement, ceux-ci sont créés en liant vers des fichiers de configuration trouvés dans le répertoire sites-available.
  • /etc/nginx/snippets: Ce répertoire contient des fragments de configuration pouvant être inclus ailleurs dans la configuration de Nginx. Les segments de configuration potentiellement répétables sont de bons candidats pour être refactorisés en fragments.

Journaux du serveur

  • /var/log/nginx/access.log: Chaque demande à votre serveur web est enregistrée dans ce fichier journal à moins que Nginx ne soit configuré autrement.
  • /var/log/nginx/error.log: Toutes les erreurs Nginx seront enregistrées dans ce journal.

Conclusion

Maintenant que vous avez installé votre serveur web, vous avez de nombreuses options pour le type de contenu à servir et les technologies que vous souhaitez utiliser pour créer une expérience plus riche.

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

Pour configurer HTTPS pour votre nom de domaine avec un certificat SSL gratuit en utilisant Let’s Encrypt, vous devriez passer à Comment sécuriser Nginx avec Let’s Encrypt sur Ubuntu 20.04.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-20-04