Comment installer Nginx sur Ubuntu 18.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 achalandés d'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 Ubuntu 18.04.

Conditions préalables

Avant de commencer ce guide, vous devez avoir un utilisateur régulier, non root, doté des privilèges sudo et configuré sur votre serveur. Vous pouvez apprendre à configurer un compte utilisateur régulier en suivant nosinitial server setup guide for Ubuntu 18.04.

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

[[step-1 -–- Installing-nginx]] == Étape 1 - Installation de Nginx

Comme Nginx est disponible dans les référentiels par défaut d'Ubuntu, il est possible de l'installer à partir de ces référentiels en utilisant le système d'empaquetageapt.

Comme il s'agit de notre première interaction avec le système d'empaquetage deapt dans 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 installernginx:

sudo apt update
sudo apt install nginx

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

[[step-2 -–- Adjusting-the-firewall]] == É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. Nginx s'enregistre en tant que service avecufw lors de l'installation, ce qui facilite l'accès à Nginx.

Répertoriez les configurations d'application avec lesquellesufw sait travailler en tapant:

sudo ufw app list

Vous devriez obtenir une liste des profils d’application:

OutputAvailable applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

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

  • Nginx Full: ce profil ouvre 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 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 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)

[[step-3 -–- checking-your-web-server]] == Étape 3 - Vérification de votre serveur Web

À la fin du processus d'installation, Ubuntu 18.04 lance Nginx. Le serveur Web devrait déjà être opérationnel.

Nous pouvons vérifier avec le système d'initialisation desystemd pour nous assurer que le service fonctionne 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 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, 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, vous pouvez l’obtenir de différentes manières.

Essayez de taper ceci à 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.

Une alternative est de taper ceci, ce qui devrait vous donner votre adresse IP publique telle que vue depuis un autre emplacement sur Internet:

curl -4 icanhazip.com

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

http://your_server_ip

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

Nginx default page

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

[[step-4 -–- manage-the-nginx-process]] == É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

[[step-5 -–- setting-up-server-blocks-recommended]] == Étape 5 - Configuration des blocs de serveur (recommandé)

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 configuration et héberger plus d'un domaine à partir d'un seul serveur. Nous allons configurer un domaine appeléexample.com, mais vous devriezreplace this with your own domain name. Pour en savoir plus sur la configuration d'un nom de domaine avec DigitalOcean, consultez nosIntroduction to DigitalOcean DNS.

Nginx sur Ubuntu 18.04 a un bloc serveur activé par défaut qui est configuré pour servir les documents d'un répertoire à/var/www/html. Bien que cela fonctionne bien pour un seul site, cela peut devenir lourd si vous hébergez plusieurs sites. Au lieu de modifier/var/www/html, créons une structure de répertoire dans/var/www pour notre siteexample.com, en laissant/var/www/html en place comme répertoire par défaut à servir si une demande client ne le fait pas ' ne correspond à aucun autre site.

Créez le répertoire pourexample.com comme suit, en utilisant l'indicateur-p pour créer tous les répertoires parents nécessaires:

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é la valeur de votreumask, mais vous pouvez vous en assurer en tapant:

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

Ensuite, créez un exemple de pageindex.html en utilisantnano ou votre éditeur préféré:

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

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

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


    
        Welcome to Example.com!
    
    
        

Success! The example.com server block is working!

Enregistrez et fermez le fichier lorsque vous avez terminé.

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

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

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/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 deroot vers notre nouveau répertoire et lesserver_name vers notre nom de domaine.

Ensuite, activons le fichier en créant un lien à partir de celui-ci vers le répertoiresites-enabled, dans lequel Nginx lit au démarrage:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Deux blocs de serveur sont maintenant activés et configurés pour répondre aux requêtes en fonction de leurs directiveslisten etserver_name (vous pouvez en savoir plus sur la façon dont Nginx traite ces directiveshere):

  • example.com: répondra aux demandes deexample.com etwww.example.com.

  • default: 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 du compartiment de hachage qui peut résulter de l'ajout de noms de serveur supplémentaires, 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

Trouvez la directiveserver_names_hash_bucket_size et supprimez le symbole# pour décommenter la ligne:

/etc/nginx/nginx.conf

...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

Ensuite, testez pour vous assurer qu’il n’ya aucune erreur de syntaxe dans l’un de vos fichiers Nginx:

sudo nginx -t

Enregistrez et fermez le fichier lorsque vous avez terminé.

En cas de problème, redémarrez Nginx pour activer vos modifications:

sudo systemctl restart nginx

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

Nginx first server block

[[step-6 -–- se familiariser-avec-important-nginx-files-and-directory]] == Étape 6 - Se familiariser avec les fichiers et 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, par défaut, ne comprend que la page Nginx par défaut que vous avez vue précédemment, est diffusé à partir du 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 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 trouvés dans ce répertoire à moins qu'ils ne soient liés au répertoiresites-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/: Le 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 établissant des liens vers des fichiers de configuration trouvés dans le répertoiresites-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 répétables sont de bons candidats pour la refactorisation dans des extraits.

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é pour faire 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 à servir 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 cet article surhow to configure a LEMP stack on Ubuntu 18.04.