Comment installer Nginx sur Debian 10

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 achalandés sur Internet. Il est plus convivial que Apache dans la plupart des cas et peut être utilisé comme serveur Web ou proxy inverse.

Dans ce guide, nous expliquerons comment installer Nginx sur votre serveur Debian 10.

Conditions préalables

Avant de commencer ce guide, vous devez avoir un utilisateur régulier non root avec des privilèges sudo configurés sur votre serveur et un pare-feu actif. Vous pouvez apprendre à les configurer en suivant notre initial guide de configuration du serveur pour Debian 10.

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

Étape 1 - Installation de Nginx

Comme Nginx est disponible dans les dépôts par défaut de Debian, il est possible de l’installer à partir de ces dépôts en utilisant le système de conditionnement + apt +.

Comme il s’agit de notre première interaction avec le système de conditionnement + apt + de cette session, commençons par mettre à jour notre index de paquetage local afin que nous ayons accès aux listes de paquetages les plus récentes:

sudo apt update

Nous pouvons maintenant installer + nginx:

sudo apt install nginx

Lorsque vous êtes invité à confirmer l’installation, appuyez sur + Entrée pour continuer. Après cela, + apt + installera Nginx et toutes les dépendances requises sur votre serveur.

Étape 2 - Réglage du pare-feu

Avant de tester Nginx, le logiciel de pare-feu doit être ajusté pour permettre l’accès au service.

Répertoriez les configurations d’application que + ufw + sait utiliser en tapant:

sudo ufw app list

Vous devriez obtenir une liste des profils d’application:

OutputAvailable applications:
...
 Nginx Full
 Nginx HTTP
 Nginx HTTPS
...

Comme vous pouvez le constater, trois profils sont disponibles pour Nginx:

  • * Nginx Full *: ce profil ouvre à la fois le port + 80 + (trafic Web normal et non chiffré) et le port + 443 + (trafic chiffré TLS / SSL)

  • * Nginx HTTP *: Ce profil n’ouvre que le port + 80 + (trafic Web normal et non crypté)

  • * Nginx HTTPS *: Ce profil n’ouvre que le port + 443 + (trafic crypté TLS / SSL)

Il est recommandé d’activer le profil le plus restrictif qui autorisera le trafic que vous avez configuré. Comme nous n’avons pas encore configuré SSL pour notre serveur dans ce guide, nous n’aurons besoin que d’autoriser le trafic pour HTTP sur le port + 80 +.

Vous pouvez l’activer en tapant:

sudo ufw allow 'Nginx HTTP'

Vous pouvez vérifier le changement en tapant:

sudo ufw status

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

OutputStatus: 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, Debian 10 démarre Nginx. Le serveur Web devrait déjà être opérationnel.

Nous pouvons vérifier avec le système + systemd + init pour nous assurer que le service est en cours d’exécution en tapant:

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 Wed 2019-07-03 12:52:54 UTC; 4min 23s ago
    Docs: man:nginx(8)
Main PID: 3942 (nginx)
   Tasks: 3 (limit: 4719)
  Memory: 6.1M
  CGroup: /system.slice/nginx.service
          ├─3942 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
          ├─3943 nginx: worker process
          └─3944 nginx: worker process

Comme vous pouvez le voir ci-dessus, le service semble avoir démarré avec succès. Cependant, le meilleur moyen de tester cela consiste à demander une page à Nginx.

Vous pouvez accéder à la page de destination Nginx par défaut pour vérifier que le logiciel fonctionne correctement en accédant à l’adresse IP de votre serveur. Si vous ne connaissez pas l’adresse IP de votre serveur, essayez de la saisir à l’invite de commande de votre serveur:

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

Vous recevrez quelques lignes. Vous pouvez essayer chacun dans votre navigateur Web pour voir s’ils fonctionnent.

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

http://

Vous devriez voir la page d’arrivée par défaut de Nginx:

image: https: //assets.digitalocean.com/articles/nginx_1604/default_page.png [page par défaut de Nginx]

Cette page est fournie avec Nginx pour vous montrer que le serveur fonctionne correctement.

É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 systemctl stop nginx

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

sudo systemctl start nginx

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

sudo systemctl restart nginx

Si vous apportez simplement des modifications à la configuration, Nginx peut souvent recharger sans perdre de connexions. Pour ce faire, tapez:

sudo systemctl reload nginx

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

sudo systemctl disable nginx

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

sudo systemctl enable nginx

Étape 5 - Configuration des blocs 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 sur un seul serveur. Nous allons créer un domaine appelé * votre_domaine *. Pour en savoir plus sur la configuration d’un nom de domaine avec DigitalOcean, consultez notre introduction à DigitalOcean DNS.

Nginx sur Debian 10 possède un bloc de serveur activé par défaut, configuré pour servir les documents à partir d’un répertoire situé sur + / var / www / html +. Bien que 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épertoires dans + / var / www + pour le site Web * votre_domaine *, en laissant + / var / www / html + à la place être servi si une demande du client ne correspond à aucun autre site.

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

sudo mkdir -p /var/www//html

Ensuite, assignez la propriété du répertoire avec la variable d’environnement + $ USER +, qui devrait référencer votre utilisateur système actuel:

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

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 /var/www/

Ensuite, créez un exemple de page + index.html en utilisant` + nano + `ou votre éditeur favori:

nano /var/www//html/index.html

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

/var/www/votre_domaine/html/index.html

<html>
   <head>
       <title>Welcome to </title>
   </head>
   <body>
       <h1>Success! Your Nginx server is successfully configured for <em></em>. </h1>
<p>This is a sample page.</p>
   </body>
</html>

Enregistrez et fermez le fichier lorsque vous avez terminé.

Pour que Nginx puisse diffuser ce contenu, nous devons créer un bloc de serveur avec les directives correctes qui pointent vers notre racine Web personnalisée. Au lieu de modifier directement le fichier de configuration par défaut, créez-en un nouveau à partir de + / etc / nginx / sites-available / +:

sudo nano /etc/nginx/sites-available/

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

/ etc / nginx / sites-available / votre_domaine

server {
       listen 80;
       listen [::]:80;

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

       server_name  www.;

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

Notez que nous avons mis à jour la configuration + root + dans notre nouveau répertoire et les + nom_serveur + dans notre nom de domaine.

Ensuite, activons ce bloc serveur en créant un lien symbolique vers notre fichier de configuration personnalisé dans le répertoire + sites-enabled +, que Nginx lit au démarrage:

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

Deux blocs de serveur sont maintenant activés et configurés pour répondre aux demandes en fonction de leurs directives + listen + et + nom_serveur + (vous pouvez en savoir plus sur la façon dont Nginx traite ces directives https://www.digitalocean.com/community/tutorials/ algorithmes de sélection de blocs compréhension-nginx-serveur-et-emplacement [ici]):

  • `: Répondra aux demandes de ` et + www. +.

  • ++: 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 compartiment de hachage pouvant découler de l’ajout de noms de serveur à votre configuration, il est nécessaire d’ajuster 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, testez pour vous assurer qu’il n’ya aucune erreur de syntaxe dans l’un de vos fichiers Nginx:

sudo nginx -t

S’il n’y a pas de problème, vous verrez le résultat suivant:

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

Une fois votre test de configuration réussi, redémarrez Nginx pour activer vos modifications:

sudo systemctl restart nginx

Nginx devrait maintenant servir votre nom de domaine. Vous pouvez tester cela en naviguant dans + http: // +, où vous devriez voir quelque chose comme ceci:

image: https: //assets.digitalocean.com/articles/nginx_debian10/nginx_serverblock.png [Bloc serveur Nginx]

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

Maintenant que vous savez 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 ne comprend par défaut que la page Nginx par défaut que vous avez vue précédemment, est diffusé dans le répertoire` + / var / www / html`. Cela peut être changé 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 Nginx résident ici.

  • + / etc / nginx / nginx.conf +: Le fichier de configuration principal de Nginx. Ceci peut être modifié pour apporter des modifications à la configuration globale de Nginx.

  • + / etc / nginx / sites-available / +: répertoire dans lequel les blocs de serveur par site peuvent être stockés. Nginx n’utilisera pas les fichiers de configuration présents dans ce répertoire, à moins qu’ils ne soient liés au répertoire + sites-enabled +. En règle générale, toutes les configurations de bloc de serveur sont effectuées dans ce répertoire, puis activées en se connectant à l’autre répertoire.

  • + / etc / nginx / sites-enabled / +: répertoire dans lequel les blocs de serveur par site activés sont stockés. Celles-ci sont généralement créées en liant des fichiers de configuration situé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 la refactorisation dans des extraits.

Journaux du serveur

  • + / var / log / nginx / access.log +: chaque demande 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 +: Toutes les erreurs Nginx seront enregistrées dans ce journal.

Conclusion

Maintenant que votre serveur Web est installé, vous disposez de nombreuses options pour le type de contenu que vous pouvez servir et les technologies que vous pouvez utiliser pour créer une expérience plus riche pour vos utilisateurs.