GNU/Linux >> Tutoriels Linux >  >> Fedora

Comment installer Nginx sur Fedora 35

NGINX est un logiciel serveur HTTP open-source et gratuit. En plus de ses capacités de serveur HTTP, NGINX peut également fonctionner comme un serveur proxy pour le courrier électronique (IMAP, POP3 et SMTP) et un proxy inverse et un équilibreur de charge pour les serveurs HTTP, TCP et UDP.

L'objectif derrière NGINX était de créer le serveur Web le plus rapide du marché, et le maintien de cette excellence est toujours un objectif central du projet Nginx. NGINX bat constamment Apache et d'autres serveurs dans les benchmarks mesurant les performances des serveurs Web et est désormais le serveur Web le plus utilisé selon W3Tech.

Dans le didacticiel, vous apprendrez comment installer et configurer Nginx sur Fedora 35 avec un certificat TLS/SSL gratuit de Let's Encrypt.

Prérequis

  • OS recommandé : Fedora Linux 35
  • Compte utilisateur : Un compte utilisateur avec un accès sudo ou root.

Mettre à jour le système d'exploitation

Mettez à jour votre Fedora système d'exploitation pour s'assurer que tous les packages existants sont à jour :

sudo dnf upgrade --refresh -y

Le tutoriel utilisera la commande sudo et en supposant que vous avez le statut sudo .

Pour vérifier le statut sudo sur votre compte :

sudo whoami

Exemple de sortie montrant l'état de sudo :

[joshua@fedora ~]$ sudo whoami
root

Pour configurer un compte sudo existant ou nouveau, visitez notre tutoriel sur Ajouter un utilisateur aux Sudoers sur Fedora .

Pour utiliser le compte racine , utilisez la commande suivante avec le mot de passe root pour vous connecter.

su

Installer Nginx Stable ou Mainline

L'installation de Nginx est très facile sur les distributions Fedora étant donné les versions semestrielles, et sa mise à jour constante des packages pendant son temps signifie que Nginx est, pour la plupart, toujours à jour.

Étant donné que Fedora a l'habitude d'avoir les packages les plus à jour, activez d'abord le référentiel principal, que Nginx recommande d'utiliser.

sudo dnf module enable nginx:mainline

Exemple de résultat :

Tapez Y , puis appuyez sur la TOUCHE ENTRÉE pour poursuivre l'installation.

Ensuite, ouvrez votre terminal et exécutez la commande suivante pour commencer le processus d'installation.

sudo dnf install nginx

Exemple de résultat :

Tapez Y , puis appuyez sur la TOUCHE ENTRÉE pour poursuivre l'installation.

Une fois installé, confirmez l'installation en vérifiant la version de build Nginx.

nginx -v

Exemple de sortie (utilisant l'exemple principal) :

nginx version: nginx/1.21.3

Par défaut, le service Nginx n'est pas activé ou actif une fois installé. Pour activer Nginx, utilisez la commande suivante.

sudo systemctl enable nginx --now

Vérifiez maintenant l'état du service pour confirmer que Nginx fonctionne sans aucune erreur.

systemctl status nginx

Exemple de résultat :

Comme ci-dessus, le statut doit être actif (en cours d'exécution) . À ce stade, vous avez installé l'application Nginx.

Configurer les règles de pare-feu

Par défaut, l'installation n'ajoute pas automatiquement de règles de pare-feu au port 80 ou 443 standard lors de l'installation de Nginx. Avant de continuer, vous devez définir les règles suivantes, cela dépendra des ports que vous utiliserez, mais toutes les options sont répertoriées.

Ouvrez le port 80 ou HTTP :

sudo firewall-cmd --permanent --zone=public --add-service=http

Ouvrez le port 443 ou HTTPS :

sudo firewall-cmd --permanent --zone=public --add-service=https

Recharger le pare-feu pour appliquer les modifications

sudo firewall-cmd --reload

Configurer Nginx

Vous aurez besoin d'avoir l'adresse IP du serveur prête pour la configuration. La façon la plus simple de le faire est avec ce qui suit.

Rechercher l'adresse IP du serveur

Vous devrez préparer l'adresse IP du serveur pour la configuration. La façon la plus simple de le faire est avec ce qui suit.

curl -4 icanhazip.com

Exemple de résultat :

XXX.XXX.XXX.XXX IP address

Si les commandes ne fonctionnent pas, vous n'avez probablement pas installé le package curl. Exécutez la commande suivante :

sudo dnf install curl -y

Une fois que vous avez l'adresse IP de votre serveur, ouvrez votre navigateur Internet préféré et vérifiez que la page de destination par défaut fonctionne.

http://your_server_ip

Vous devriez obtenir la page suivante dans votre navigateur Internet.

Exemple :

Configurer le répertoire source du site

Dans le didacticiel, vous configurerez un domaine appelé example.com , mais vous devez remplacer ceci par votre nom de domaine . Le didacticiel créera les répertoires Web et configurera les fichiers du site dans le répertoire parent /var/www/ .

Tout d'abord, créez le répertoire, pour example.com , comme suit, en utilisant le "-p" flag pour créer tous les répertoires parents nécessaires :

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

Deuxièmement, vous devrez attribuer le propriétaire du répertoire.

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

Troisièmement, attribuez les autorisations du répertoire, afin que le propriétaire lise, écrive et exécute les fichiers tout en accordant uniquement des autorisations de lecture et d'exécution aux groupes et autres. Vous pouvez saisir la commande suivante :

sudo chmod -R 755 /var/www/your_domain

Alternativement, vous pouvez utiliser le /usr/share/nginx/html à la place, mais le répertoire /var/www la méthode du répertoire est recommandée pour les nouveaux utilisateurs.

Configurer la page HTML de test

Quatrièmement, créez une page de test que vous utiliserez pour confirmer que votre serveur Nginx est opérationnel.

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

À l'intérieur de l'éditeur nano et du nouveau fichier, vous avez créé. Entrez ce qui suit.

<html>
 <head>
  <title>Welcome to your_domain!</title>
 </head>
 <body>
   <h1>Success!  The your_domain server block is working!</h1>
 </body>
</html>

Enregistrez le fichier (CTRL+O), puis quittez (CTRL+X) .

Créer un bloc de serveur Nginx

Par défaut, le bloc serveur Nginx, similaire aux hôtes virtuels Apache, est traité dans le /etc/nginx/conf.d annuaire. Cependant, l'installation de Nginx varie selon les différentes versions et distributions utilisant soit le conf.d ou sites disponibles/sites activés par défaut. Pour le tutoriel, les répertoires du site seront utilisés pour garder un standard.

Tout d'abord, rendez les répertoires nécessaires pour les sites disponibles et sites activés.

sudo mkdir /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-enabled

Ensuite, ouvrez votre fichier nginx.conf et supprimez ou commentez le "include /etc/nginx/default.d/*.conf;" .

sudo nano /etc/nginx/nginx.conf

Ensuite, directement en dessous, ajoutez include "/etc/nginx/sites-enabled/*.conf;" .

Exemple uniquement :

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

###EDIT HERE###
#  include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*.conf;
}

Comme ci-dessus, un "#" le commentaire a été ajouté à inclure conf.d et incluez les sites activés a été ajouté.

Enregistrez le fichier (CTRL+O) et quittez (CTRL+X) .

Ensuite, créez votre fichier de configuration de bloc de serveur. Le nom votre_domaine.conf sera utilisé pour le didacticiel, mais vous pouvez le nommer comme vous le souhaitez.

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

Vous pouvez coller l'exemple de code suivant dans le bloc. Ceci n'est qu'un exemple HTTP uniquement pour les tests de base.

server {

 listen 80;
 listen [::]:80;

 server_name your_domain www.your_domain;
 root /var/www/your_domain/html;

  index index.html index.htm;

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

L'exemple montre que votre serveur écoute deux noms de serveur, "votre_domaine" sur le port 80.

Vous devrez remplacer le répertoire racine par le nom/l'emplacement du répertoire racine que vous créez.

Activé le bloc serveur Nginx

Vous devez lier les fichiers de configuration de sites-available à sites-enabled dans votre répertoire Nginx pour activer les blocs de serveur Nginx. Cela peut être fait avec la commande ln -s comme suit.

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

Configuration finale et test de fonctionnement

Dans la dernière étape, vous devrez ouvrir votre fichier nginx.conf par défaut fichier.

sudo nano /etc/nginx/nginx.conf

Et décommentez la ligne suivante.

server_names_hash_bucket_size 64;

La taille du compartiment de hachage du nom du serveur est modifiée, car des problèmes surviennent parfois lors de l'ajout de serveurs supplémentaires.

Ensuite, testez votre Nginx pour vous assurer qu'il fonctionne avant de redémarrer correctement.

sudo nginx -t

Le résultat devrait être s'il n'y a pas d'erreurs dans la syntaxe :

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

Si vous obtenez la sortie ok suivante, redémarrez le serveur Nginx pour que les modifications aient lieu.

sudo systemctl restart nginx

Ouvrez maintenant votre navigateur Internet et saisissez le nom de domaine du serveur. Vous devriez voir que votre bloc de serveur est en ligne.

Sécuriser Nginx avec le certificat gratuit Let's Encrypt SSL

Idéalement, vous voudriez exécuter votre Nginx sur HTTPS en utilisant un certificat SSL . La meilleure façon de le faire est d'utiliser Let's Encrypt, une autorité de certification gratuite, automatisée et ouverte gérée par le Groupe de recherche sur la sécurité Internet (ISRG) à but non lucratif .

Installez le package certbot comme suit :

sudo dnf install python3-certbot-nginx -y

Une fois installé, exécutez la commande suivante pour lancer la création de votre certificat :

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d www.example.com

Cette configuration idéale comprend forcer les redirections HTTPS 301, un en-tête Strict-Transport-Security et l'agrafage OCSP. Assurez-vous simplement d'adapter l'adresse e-mail et le nom de domaine à vos besoins.

Maintenant, votre URL sera HTTPS://www.example.com au lieu de HTTP://www.example.com .

Si vous utilisez l'ancienne URL HTTP , il redirigera automatiquement vers HTTPS .

En option, vous pouvez définir une tâche cron pour renouveler automatiquement les certificats. Certbot propose un script qui le fait automatiquement, et vous pouvez d'abord tester pour vous assurer que tout fonctionne en effectuant une simulation.

sudo certbot renew --dry-run

Si tout fonctionne, ouvrez votre fenêtre crontab à l'aide de la commande de terminal suivante.

sudo crontab -e

Par défaut, la plupart des systèmes Fedora ne sont pas livrés avec Cron installé. Pour l'installer, utilisez la commande suivante.

sudo dnf install cronie -y

Ouvrez la crontab avec la commande suivante.

sudo crontab -e

Ensuite, spécifiez l'heure à laquelle il doit se renouveler automatiquement. Cela doit être vérifié quotidiennement au minimum, et si le certificat doit être renouvelé, le script ne mettra pas à jour le certificat. Si vous avez besoin d'aide pour trouver le bon moment, utilisez l'outil gratuit crontab.guru.

00 00 */1 * * /usr/sbin/certbot-auto renew

Enregistrez maintenant le fichier en appuyant sur (SHIFT) et (:) puis en tapant (wa), qui enregistre le fichier, puis quittez avec la même méthode en utilisant (qa) .

Vous devriez voir la sortie suivante dans le terminal pour voir si l'ajout de la nouvelle tâche a réussi.

crontab: installing new crontab

Gérer le service Nginx

Maintenant que Nginx s'exécute avec succès sur votre serveur, voici quelques notes clés de gestion.

Pour arrêter le serveur Web Nginx :

sudo systemctl stop nginx

Pour démarrer le serveur Web Nginx :

sudo systemctl start nginx

Pour redémarrer le serveur Web Nginx :

sudo systemctl restart nginx

Pour recharger le serveur Web Nginx (Pour des modifications plus mineures ne nécessitant pas de redémarrage) :

sudo systemctl reload nginx

Pour désactiver Nginx au démarrage du serveur :

sudo systemctl disable nginx

Pour démarrer Nginx au démarrage du serveur (automatiquement activé à l'installation) :

sudo systemctl enable nginx

Comment accéder aux journaux du serveur Nginx

Répertoire des journaux Nginx

Par défaut, tous les journaux d'accès/d'erreurs NGINX, sauf si vous les avez modifiés, se trouvent dans le répertoire des journaux, que la commande suivante peut afficher.

Tout d'abord, accédez au répertoire des journaux et répertoriez les fichiers :

cd /var/log/nginx && ls -l

Vous devriez trouver les fichiers d'accès et d'erreur suivants :

Journal d'accès :

/var/log/nginx/access.log

Journal des erreurs :

/var/log/nginx/error.log

Pour afficher les journaux en temps réel dans votre terminal à l'aide de la commande sudo tail -f /location/of/log path.

Exemple :

sudo tail -f /var/log/nginx/access.log

Une autre option consiste à imprimer le dernier nombre X de lignes. Par exemple, X est remplacé par 30 pour imprimer 30 lignes en ajoutant le drapeau -n 30 .

sudo tail -f /var/log/nginx/access.log -n 30

Ce ne sont là que quelques exemples de lecture de journaux, et grep peut également être utile.

Comment configurer la rotation des journaux Nginx

Nginx installe automatiquement la rotation des journaux et la configure par défaut, qui consiste à effectuer une rotation quotidienne. Vous pouvez modifier ces paramètres en accédant au fichier comme indiqué ci-dessous.

sudo nano /etc/logrotate.d/nginx

Ensuite, vous verrez la même structure de fichiers sinon similaire. Vous pouvez modifier le contenu ici. La plupart du temps, vous pouvez modifier le nombre de journaux à conserver ou passer de quotidien à hebdomadaire. Cela devrait être laissé par défaut, sauf si vous avez des besoins spécifiques en matière de journalisation pour des logiciels tels que la surveillance fail2ban ou similaire.

/var/log/nginx/*.log {
  daily
  missingok
  rotate 14
  compress
  delaycompress
  notifempty
  create 0640 www-data adm
  sharedscripts
  prerotate
  if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
  run-parts /etc/logrotate.d/httpd-prerotate; \
  fi \
  endscript
  postrotate
  invoke-rc.d nginx rotate >/dev/null 2>&1
  endscript
}

Les principaux paramètres que vous souhaiterez probablement modifier sont les suivants :

  • Tous les jours – Cela peut être changé en Hebdomadaire, Mensuel. Cela doit être conservé quotidiennement, sinon il sera difficile de parcourir le fichier journal.
  • Rotation 14 – C'est le nombre de journaux à conserver et à supprimer, donc au maximum il n'y a que 14 journaux, si vous ne voulez conserver que 7 jours de journaux, changez-le en 7.

Il est recommandé de ne toucher à aucun autre paramètre à moins que vous ne sachiez ce que vous faites.

Comment mettre à jour Nginx

Nginx sera mis à jour par défaut lorsqu'une nouvelle version arrivera dans les référentiels. Avant la mise à niveau, il est toujours conseillé de sauvegarder votre répertoire Nginx ou, à tout le moins, le nginx.conf dossier. Vous pouvez faire l'un ou l'autre avec la commande suivante.

Sauvegarder nginx.conf (fortement recommandé) :

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf

Sauvegardez l'intégralité de votre dossier Nginx si vous préférez :

sudo cp /etc/nginx/ /etc/nginx-bkup

Ensuite, exécutez la commande de mise à jour standard.

sudo dnf upgrade --refresh

Si une mise à niveau est disponible, exécutez la mise à niveau.

Vous pouvez être invité à le faire lors d'une mise à niveau ou d'une installation, mais il est essentiel de le faire manuellement au préalable. Pour les grandes configurations Nginx de plusieurs sites, la sauvegarde sur quelque chose comme Github ou Gitlab serait encore plus bénéfique.

Comment supprimer (désinstaller) Nginx

Pour supprimer Nginx si vous ne l'utilisez plus, cela peut être fait à l'aide de la commande suivante :

sudo dnf autoremove nginx

Cette commande supprimera également toutes les dépendances inutilisées fournies avec l'installation.

Pour réinitialiser le module nginx de la ligne principale à sa valeur par défaut, utilisez la commande suivante.

sudo dnf modules reset nginx

Fedora
  1. Comment installer Spotify sur Fedora 35

  2. Comment installer Slack sur Fedora 35

  3. Comment installer CMake sur Fedora 35

  4. Comment installer Grafana sur Fedora 35

  5. Comment installer PHP 8 sur Fedora 35

Comment installer MongoDB sur Fedora 35

Comment installer Jenkins sur Fedora 35

Comment installer Wine sur Fedora 35

Comment installer Python sur Fedora 35

Comment installer PostgreSQL sur Fedora 35

Comment installer Docker sur Fedora 35