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 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, vous apprendrez à installer Nginx sur votre serveur Ubuntu 18.04 et à connaître les fichiers et répertoires Nginx importants.
Conditions préalables
Avant de commencer ce guide, vous devez avoir un utilisateur régulier non root avec des privilèges sudo et un pare-feu de base configuré sur votre serveur. Vous pouvez apprendre à configurer un compte d'utilisateur standard en suivant notre guide de configuration initiale du 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
Puisque 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 de packaging apt
.
Étant donné qu'il s'agit peut-être de votre première interaction avec le système de conditionnement apt
dans cette session, mettez à jour l'index local des packages afin d'avoir accès aux listes de packages les plus récentes. Ensuite, vous pouvez installer nginx
:
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.
Étape 2 - Réglage du pare-feu
Avant de tester Nginx, le logiciel pare-feu doit être ajusté pour permettre l'accès au service. Nginx s'enregistre en tant que service avec ufw
lors de l'installation, ce qui facilite l'accès à Nginx.
Répertoriez les configurations d'application avec lesquelles ufw
sait travailler en saisissant ce qui suit :
sudo ufw app list
Votre sortie doit être une liste des profils d'application :
OutputAvailable applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH
Cette liste affiche trois profils disponibles pour Nginx :
- Nginx Full : ce profil ouvre à la fois le port
80
(trafic Web normal non chiffré) et le port443
(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 toujours le trafic que vous avez configuré. Étant donné que vous n'avez pas encore configuré SSL pour votre serveur dans ce guide, vous n'aurez qu'à autoriser le trafic sur le port 80
.
Vous pouvez l'activer en tapant ce qui suit :
sudo ufw allow 'Nginx HTTP'
Ensuite, vérifiez le changement :
sudo ufw status
Vous devriez recevoir une liste du trafic HTTP autorisé dans le résultat :
OutputStatus: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)
Maintenant que vous avez ajouté la règle de pare-feu appropriée, vous pouvez vérifier que votre serveur Web est en cours d'exécution et capable de diffuser correctement le contenu.
É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.
Vérifiez auprès du système d'initialisation systemd
pour vous assurer que le service est en cours d'exécution :
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: en Active: active (running) since Fri 2021-10-01 21:36:15 UTC; 35s ago Docs: man:nginx(8) Main PID: 9039 (nginx) Tasks: 2 (limit: 1151) CGroup: /system.slice/nginx.service ├─9039 nginx: master process /usr/sbin/nginx -g daemon on; master_pro └─9041 nginx: worker process
Cette sortie indique que le service a démarré avec succès. Cependant, la meilleure façon de tester cela est de demander une page à Nginx.
Vous pouvez accéder à la page d'accueil par défaut de Nginx pour confirmer 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 saisir ce qui suit à 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 d'entre eux dans votre navigateur Web pour vérifier s'ils fonctionnent.
Une alternative consiste à exécuter la commande suivante, qui devrait générer votre adresse IP publique telle qu'identifiée à partir d'un autre emplacement sur Internet :
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 de destination Nginx par défaut :
Cette page est incluse avec Nginx pour vérifier 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 ce qui suit :
sudo systemctl stop nginx
Pour démarrer le serveur Web lorsqu'il est arrêté, tapez ce qui suit :
sudo systemctl start nginx
Pour arrêter puis redémarrer le service, tapez ce qui suit :
sudo systemctl restart nginx
Si vous apportez simplement des modifications de configuration, vous pouvez souvent recharger Nginx sans interrompre les connexions au lieu de le redémarrer. Pour ce faire, tapez ce qui suit :
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 ce qui suit :
sudo systemctl disable nginx
Pour réactiver le service afin qu'il démarre au démarrage, vous pouvez saisir ce qui suit :
sudo systemctl enable nginx
Nginx devrait maintenant démarrer automatiquement lorsque le serveur redémarre.
Étape 5 - Configuration des blocs de serveur (recommandé)
Lors de l'utilisation du serveur Web Nginx, les blocs de serveur (similaires aux hôtes virtuels dans Apache) peuvent être utilisés pour encapsuler les détails de configuration et héberger plusieurs domaines à partir d'un seul serveur. Nous allons configurer un domaine appelé votre_domaine, mais vous devez le remplacer par votre propre nom de domaine. Pour en savoir plus sur la configuration d'un nom de domaine avec DigitalOcean, consultez notre Introduction au DNS DigitalOcean.
Nginx sur Ubuntu 18.04 a un bloc de serveur activé par défaut qui est configuré pour servir des documents à partir d'un répertoire sur /var/www/html
. Bien que cela fonctionne bien pour un seul site, cela peut devenir compliqué 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 l'indicateur -p
pour créer les répertoires parents nécessaires :
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 vos racines Web doivent être correctes si vous n'avez pas modifié votre valeur umask
, mais vous pouvez vous en assurer en saisissant ce qui suit :
sudo chmod -R 755 /var/www/your_domain
Ensuite, créez un exemple de page index.html
en utilisant nano
ou votre éditeur préféré :
nano /var/www/your_domain/html/index.html
À l'intérieur, ajoutez l'exemple de code HTML suivant :
/var/www/votre_domaine/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 lorsque vous avez terminé. Si vous avez utilisé nano
, vous pouvez quitter en appuyant sur CTRL + X
puis Y
et ENTER
.
Pour que Nginx serve ce contenu, il est nécessaire de créer un bloc serveur avec les bonnes directives. Au lieu de modifier directement le fichier de configuration par défaut, créez-en un nouveau dans /etc/nginx/sites-available/your_domain
:
sudo nano /etc/nginx/sites-available/your_domain
Ajoutez le bloc de configuration suivant, similaire au bloc par défaut, mais mis à jour pour votre nouvel annuaire et nom de domaine :
/etc/nginx/sites-available/votre_domaine
server { listen 80; listen [::]:80; root /var/www/your_domain/html; index index.html index.htm index.nginx-debian.html; server_name your_domain.com www.your_domain; location / { try_files $uri $uri/ =404; } }
Notez que nous avons mis à jour la configuration root
vers le nouveau répertoire et server_name
vers le nom de domaine. Enregistrez et fermez le fichier lorsque vous avez terminé.
Ensuite, activez le fichier en créant un lien vers le répertoire sites-enabled
, que Nginx lit au démarrage :
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
Deux blocs de serveur sont désormais activés et configurés pour répondre aux requêtes en fonction de leurs directives listen
et server_name
(vous pouvez en savoir plus sur la façon dont Nginx traite ces directives ici) :
your_domain
: répondra aux demandes deyour_domain
etwww.your_domain
.default
: répondra à toutes les requêtes sur le port80
qui ne correspondent pas aux deux autres blocs.
Pour éviter un éventuel problème de mémoire de compartiment de hachage pouvant survenir lors de l'ajout de noms de serveur supplémentaires, il est nécessaire d'ajuster une seule valeur 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'y a pas d'erreurs de syntaxe dans l'un 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 servir votre nom de domaine. Vous pouvez tester cela en naviguant vers 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, vous devriez prendre quelques minutes pour vous familiariser avec quelques répertoires et fichiers importants.
Teneur
/var/www/html
: le contenu Web réel, qui par défaut se compose uniquement de 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 modifié en modifiant les fichiers de configuration 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. Cela peut être modifié pour apporter des modifications à la configuration globale de Nginx./etc/nginx/sites-available/
: le 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, toute la configuration du bloc de serveur est effectuée dans ce répertoire, puis activée en établissant un lien vers l'autre répertoire./etc/nginx/sites-enabled/
: le répertoire dans lequel les blocs de serveur par site activés sont stockés. Généralement, ceux-ci sont créés en créant un lien vers les 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 reproductibles sont de bons candidats pour la refactorisation en 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 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 à diffuser 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 sur comment configurer une pile LEMP sur Ubuntu 18.04.