Tutorial

Comment installer Nginx sur Ubuntu 18.04

NginxUbuntu 18.04DigitalOcean Droplets

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. Il est plus respectueux des ressources qu'Apache dans la plupart des cas, et peut être utilisé comme serveur web ou proxy inverse.

Dans ce guide, nous allons voir comment installer Nginx sur votre serveur Ubuntu 18.04.

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 de serveur pour Ubuntu 18.04.

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 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 vous pouvez le voir, 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é. Étant donné que nous n'avons pas configuré SSL pour notre serveur pour l'instant, nous allons 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

Vous devriez voir le trafic HTTP autorisé dans la sortie affichée :

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 18.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 2018-04-20 16:08:19 UTC; 3 days ago Docs: man:nginx(8) Main PID: 2369 (nginx) Tasks: 2 (limit: 1153) CGroup: /system.slice/nginx.service ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2380 nginx: worker process

Comme vous pouvez le voir ci-dessus, le service semble avoir démarré avec succès. 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 l'obtenir de plusieurs façons différentes.

Essayez de taper ceci à l'invite de commande de votre serveur :

  • ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Vous récupérerez quelques lignes. Vous pouvez essayer chacune d'elles dans votre navigateur web pour voir si elles fonctionnent.

Sinon, vous pouvez également saisir la commande qui vous donnera votre adresse IP publique comme elle apparaît à 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 voir la page de destination par défaut de Nginx :

Page par défaut de Nginx

Cette page est incluse dans Nginx pour vous montrer que le serveur fonctionne correctement.

É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 simplement à 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

É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é example.com, mais vous devez le remplacer par le nom propre à votre domaine. Pour en savoir plus sur la mise en place d'un nom de domaine avec DigitalOcean, voir notre Introduction à DigitalOcean DNS. 

Nginx sur Ubuntu 18.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 example.com, 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 example.com, en utilisant l'indicateur -p pour créer tout répertoire parent nécessaire :

  • sudo mkdir -p /var/www/example.com/html

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

  • sudo chown -R $USER:$USER /var/www/example.com/html

Les autorisations de vos racines web devraient être correctes si vous n'avez pas modifié votre valeur umask, mais vous pouvez vous en assurer en tapant :

  • sudo chmod -R 755 /var/www/example.com

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

  • nano /var/www/example.com/html/index.html

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

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

Enregistrez et fermez le fichier lorsque 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/example.com :

  • sudo nano /etc/nginx/sites-available/example.com

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/example.com
server {
        listen 80;
        listen [::]:80;

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

        server_name example.com www.example.com;

        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/example.com /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) :

  • example.com : répondra aux requêtes pour example.com et www.example.com.
  • 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

Recherchez la directive server_names_hash_bucket_size et supprimez le symbole # pour décommenter la ligne :

/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://example.com où vous devriez voir quelque chose 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 afin de créer une expérience plus riche.

Si vous souhaitez construire une pile d'applications plus complète, consultez cet article sur Comment configurer une pile LEMP sur Ubuntu 18.04.

Creative Commons License