GNU/Linux >> LINUX-Kenntnisse >  >> Fedora

So installieren Sie Nginx auf Fedora 35

NGINX ist eine kostenlose Open-Source-HTTP-Server-Software. Zusätzlich zu seinen HTTP-Serverfunktionen kann NGINX auch als Proxy-Server für E-Mail (IMAP, POP3 und SMTP) und als Reverse-Proxy und Load Balancer für HTTP-, TCP- und UDP-Server fungieren.

Das Ziel hinter NGINX war es, den schnellsten Webserver zu schaffen, und die Aufrechterhaltung dieser Exzellenz ist nach wie vor ein zentrales Ziel des Nginx-Projekts. NGINX schlägt Apache und andere Server in Benchmarks, die die Leistung von Webservern messen, und ist laut W3Tech jetzt der am häufigsten verwendete Webserver.

Im Tutorial erfahren Sie, wie Sie Nginx auf Fedora 35 mit einem kostenlosen TLS/SSL-Zertifikat von Let’s Encrypt installieren und konfigurieren.

Voraussetzungen

  • Empfohlenes Betriebssystem: Fedora Linux 35
  • Benutzerkonto: Ein Benutzerkonto mit Sudo- oder Root-Zugriff.

Betriebssystem aktualisieren

Aktualisieren Sie Ihren Fedora Betriebssystem, um sicherzustellen, dass alle vorhandenen Pakete auf dem neuesten Stand sind:

sudo dnf upgrade --refresh -y

Das Tutorial verwendet den sudo-Befehl und vorausgesetzt, Sie haben den Sudo-Status .

So überprüfen Sie den Sudo-Status Ihres Kontos:

sudo whoami

Beispielausgabe, die den Sudo-Status zeigt:

[joshua@fedora ~]$ sudo whoami
root

Um ein bestehendes oder neues Sudo-Konto einzurichten, besuchen Sie unser Tutorial zum Hinzufügen eines Benutzers zu Sudoern auf Fedora .

So verwenden Sie das Root-Konto verwenden Sie den folgenden Befehl mit dem Root-Passwort, um sich anzumelden.

su

Installieren Sie Nginx Stable oder Mainline

Die Installation von Nginx ist bei Fedora-Distributionen angesichts der halbjährlichen Veröffentlichungen sehr einfach, und die ständige Aktualisierung der Pakete während ihrer Zeit bedeutet, dass Nginx größtenteils immer auf dem neuesten Stand ist.

Da Fedora daran gewöhnt ist, die aktuellsten Pakete zu haben, aktivieren Sie zuerst das Mainline-Repository, dessen Verwendung Nginx empfiehlt.

sudo dnf module enable nginx:mainline

Beispielausgabe:

Geben Sie Y ein , und drücken Sie dann die EINGABETASTE um mit der Installation fortzufahren.

Öffnen Sie als Nächstes Ihr Terminal und führen Sie den folgenden Befehl aus, um den Installationsvorgang zu starten.

sudo dnf install nginx

Beispielausgabe:

Geben Sie Y ein , und drücken Sie dann die EINGABETASTE um mit der Installation fortzufahren.

Bestätigen Sie nach der Installation die Installation, indem Sie die Nginx-Build-Version überprüfen.

nginx -v

Beispielausgabe (unter Verwendung eines Mainline-Beispiels):

nginx version: nginx/1.21.3

Standardmäßig ist der Nginx-Dienst nach der Installation nicht aktiviert oder aktiv. Um Nginx zu aktivieren, verwenden Sie den folgenden Befehl.

sudo systemctl enable nginx --now

Überprüfen Sie nun den Dienststatus, um zu bestätigen, dass Nginx fehlerfrei ausgeführt wird.

systemctl status nginx

Beispielausgabe:

Wie oben sollte der Status aktiv (wird ausgeführt) sein . An diesem Punkt haben Sie die Nginx-Anwendung installiert.

Firewall-Regeln konfigurieren

Standardmäßig fügt die Installation Firewall-Regeln nicht automatisch zum standardmäßigen Port 80 oder Port 443 hinzu bei der Installation von Nginx. Bevor Sie fortfahren, sollten Sie die folgenden Regeln festlegen, dies hängt davon ab, welche Ports Sie verwenden werden, aber alle Optionen sind aufgelistet.

Port 80 oder HTTP öffnen:

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

Port 443 oder HTTPS öffnen:

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

Firewall neu laden, damit die Änderungen wirksam werden

sudo firewall-cmd --reload

Nginx konfigurieren

Sie müssen die IP-Adresse des Servers für die Einrichtung bereithalten. Der einfachste Weg, dies zu tun, ist wie folgt.

Server-IP-Adresse finden

Sie müssen die IP-Adresse des Servers für die Einrichtung vorbereiten. Der einfachste Weg, dies zu tun, ist wie folgt.

curl -4 icanhazip.com

Beispielausgabe:

XXX.XXX.XXX.XXX IP address

Wenn die Befehle nicht funktionieren, haben Sie höchstwahrscheinlich das Curl-Paket nicht installiert. Führen Sie den folgenden Befehl aus:

sudo dnf install curl -y

Sobald Sie die IP-Adresse Ihres Servers haben, öffnen Sie Ihren bevorzugten Internetbrowser und prüfen Sie, ob die Standard-Zielseite funktioniert.

http://your_server_ip

Sie sollten die folgende Seite in Ihrem Internetbrowser sehen.

Beispiel:

Site-Quellverzeichnis einrichten

In der Anleitung richten Sie eine Domain namens example.com ein , aber Sie sollten dies durch Ihren Domainnamen ersetzen . Das Tutorial erstellt die Webverzeichnisse und konfiguriert die Site-Dateien im übergeordneten Verzeichnis /var/www/ .

Erstellen Sie zuerst das Verzeichnis für example.com , wie folgt, mit dem "-p" Flag, um alle erforderlichen übergeordneten Verzeichnisse zu erstellen:

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

Zweitens müssen Sie den Eigentümer des Verzeichnisses zuweisen.

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

Weisen Sie drittens die Berechtigungen des Verzeichnisses zu, damit der Eigentümer die Dateien liest, schreibt und ausführt, während er Gruppen und anderen nur Lese- und Ausführungsberechtigungen gewährt. Sie können den folgenden Befehl eingeben:

sudo chmod -R 755 /var/www/your_domain

Alternativ können Sie /usr/share/nginx/html verwenden stattdessen das Verzeichnis /var/www Verzeichnismethode wird neuen Benutzern empfohlen.

Test-HTML-Seite einrichten

Erstellen Sie viertens eine Testseite, mit der Sie bestätigen, dass Ihr Nginx-Server betriebsbereit ist.

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

Innerhalb des Nano-Editors und der neuen Datei, die Sie erstellt haben. Geben Sie Folgendes ein.

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

Speichern Sie die Datei (STRG+O), Beenden Sie dann (STRG+X) .

Nginx-Serverblock erstellen

Standardmäßig wird der Nginx-Serverblock, ähnlich wie Apache Virtual Hosts, in der /etc/nginx/conf.d behandelt Verzeichnis. Die Nginx-Installation unterscheidet sich jedoch von verschiedenen Versionen und Distributionen, die entweder die conf.d verwenden oder Websites verfügbar/Websites aktiviert standardmäßig. Für das Tutorial werden die Verzeichnisse der Site verwendet, um einen Standard einzuhalten.

Machen Sie zunächst die für Sites erforderlichen Verzeichnisse verfügbar und sites-enabled.

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

Öffnen Sie als Nächstes Ihre nginx.conf-Datei und entfernen oder kommentieren Sie die „include /etc/nginx/default.d/*.conf;“ .

sudo nano /etc/nginx/nginx.conf

Fügen Sie dann direkt darunter include „/etc/nginx/sites-enabled/*.conf;“ hinzu .

Nur Beispiel:

# 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;
}

Wie oben ein “#” Kommentar wurde zu include conf.d hinzugefügt line und sites-enabled einschließen wurde hinzugefügt.

Speichern Sie die Datei (STRG+O) und beenden (STRG+X) .

Erstellen Sie als Nächstes Ihre Serverblock-Konfigurationsdatei. Der Name your_domain.conf wird für das Tutorial verwendet, kann aber beliebig benannt werden.

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

Sie können den folgenden Beispielcode in den Block einfügen. Dies ist nur ein nur-HTTP-Beispiel für grundlegende Tests.

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;
 }
}

Das Beispiel zeigt, dass Ihr Server auf zwei Servernamen wartet, "Ihre_Domäne" auf Port 80.

Sie müssen das Stammverzeichnis in den Namen/Speicherort des von Ihnen erstellten Stammverzeichnisses ändern.

Aktivierter Nginx-Serverblock

Sie müssen die Konfigurationsdateien von „sites-available“ zu „sites-enabled“ in Ihrem Nginx-Verzeichnis verknüpfen, um Nginx-Serverblöcke zu aktivieren. Dies kann mit dem Befehl ln -s wie folgt erfolgen.

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

Endgültige Konfiguration &Testlauf

Im letzten Schritt müssen Sie Ihre standardmäßige nginx.conf öffnen Datei.

sudo nano /etc/nginx/nginx.conf

Und kommentieren Sie die folgende Zeile aus.

server_names_hash_bucket_size 64;

Die Hash-Bucket-Größe des Servernamens wird geändert, da manchmal Probleme beim Hinzufügen zusätzlicher Server auftreten.

Testen Sie als Nächstes Ihr Nginx, um sicherzustellen, dass es funktioniert, bevor Sie es ordnungsgemäß neu starten.

sudo nginx -t

Die Ausgabe sollte lauten, wenn keine Fehler in der Syntax:

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

Wenn Sie die folgende ok-Ausgabe haben, starten Sie den Nginx-Server neu, damit die Änderungen stattfinden.

sudo systemctl restart nginx

Öffnen Sie nun Ihren Internetbrowser und geben Sie den Domänennamen des Servers ein. Sie sollten sehen, dass Ihr Serverblock aktiv ist.

Nginx mit Let’s Encrypt SSL Free Certificate sichern

Idealerweise möchten Sie Ihr Nginx auf HTTPS mit einem SSL-Zertifikat ausführen . Verwenden Sie dazu am besten Let’s Encrypt eine kostenlose, automatisierte und offene Zertifizierungsstelle, die von der gemeinnützigen Internet Security Research Group (ISRG) betrieben wird .

Installieren Sie das certbot-Paket wie folgt:

sudo dnf install python3-certbot-nginx -y

Führen Sie nach der Installation den folgenden Befehl aus, um die Erstellung Ihres Zertifikats zu starten:

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

Dieses ideale Setup umfasst erzwungene HTTPS-301-Umleitungen, einen Strict-Transport-Security-Header und OCSP-Stapling. Passen Sie einfach E-Mail und Domainnamen an Ihre Anforderungen an.

Jetzt lautet Ihre URL HTTPS://www.example.com statt HTTP://www.example.com .

Wenn Sie die alte HTTP-URL verwenden , wird automatisch auf HTTPS umgeleitet .

Optional können Sie einen Cronjob einrichten, um die Zertifikate automatisch zu erneuern. Certbot bietet ein Skript an, das dies automatisch durchführt, und Sie können zuerst testen, ob alles funktioniert, indem Sie einen Probelauf durchführen.

sudo certbot renew --dry-run

Wenn alles funktioniert, öffnen Sie Ihr Crontab-Fenster mit dem folgenden Terminalbefehl.

sudo crontab -e

Standardmäßig ist auf den meisten Fedora-Systemen Cron nicht installiert. Um es zu installieren, verwenden Sie den folgenden Befehl.

sudo dnf install cronie -y

Öffnen Sie die Crontab mit dem folgenden Befehl.

sudo crontab -e

Geben Sie als Nächstes die Zeit an, zu der es automatisch verlängert werden soll. Dies sollte mindestens täglich überprüft werden, und wenn das Zertifikat erneuert werden muss, aktualisiert das Skript das Zertifikat nicht. Wenn Sie Hilfe benötigen, um einen guten Zeitpunkt zum Einstellen zu finden, verwenden Sie das kostenlose Tool crontab.guru.

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

Speichern Sie nun die Datei durch Drücken von (SHIFT) und (:) Geben Sie dann (wa), ein wodurch die Datei gespeichert wird, und beenden Sie dann mit der gleichen Methode mit (qa) .

Sie sollten die folgende Ausgabe im Terminal sehen, um zu sehen, ob das Hinzufügen der neuen Aufgabe erfolgreich war.

crontab: installing new crontab

Verwalten des Nginx-Dienstes

Nachdem Sie Nginx erfolgreich auf Ihrem Server ausgeführt haben, lauten einige Management-Keynotes wie folgt.

So stoppen Sie den Nginx-Webserver:

sudo systemctl stop nginx

So starten Sie den Nginx-Webserver:

sudo systemctl start nginx

So starten Sie den Nginx-Webserver neu:

sudo systemctl restart nginx

So laden Sie den Nginx-Webserver neu (Für kleinere Änderungen, die keinen Neustart erfordern) :

sudo systemctl reload nginx

So deaktivieren Sie Nginx beim Serverstart:

sudo systemctl disable nginx

So starten Sie Nginx beim Serverstart (wird bei der Installation automatisch aktiviert) :

sudo systemctl enable nginx

Zugriff auf Nginx-Serverprotokolle

Nginx-Protokollverzeichnis

Standardmäßig befinden sich alle NGINX-Zugriffs-/Fehlerprotokolle, sofern Sie sie nicht geändert haben, im Protokollverzeichnis, das der folgende Befehl anzeigen kann.

Navigieren Sie zuerst zum Protokollverzeichnis und listen Sie die Dateien auf:

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

Sie sollten die folgenden Zugriffs- und Fehlerdateien finden:

Zugriffsprotokoll:

/var/log/nginx/access.log

Fehlerprotokoll:

/var/log/nginx/error.log

Um Protokolle in Echtzeit in Ihrem Terminal anzuzeigen, verwenden Sie den Befehl sudo tail -f /location/of/log path.

Beispiel:

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

Eine andere Option besteht darin, die letzten X Zeilen zu drucken. Beispielsweise wird X durch 30 ersetzt, um 30 Zeilen zu drucken, indem das Flag -n 30 hinzugefügt wird .

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

Dies sind nur einige Beispiele für das Lesen von Protokollen, und grep kann ebenfalls hilfreich sein.

So konfigurieren Sie Nginx Log Rotate

Nginx installiert automatisch die Protokollrotation und konfiguriert sie auf die Standardeinstellung, die täglich rotieren soll. Sie können diese Einstellungen ändern, indem Sie wie unten gezeigt auf die Datei zugreifen.

sudo nano /etc/logrotate.d/nginx

Als nächstes sehen Sie die gleiche, wenn nicht ähnliche Dateistruktur. Hier können Sie den Inhalt ändern. Meistens können Sie ändern, wie viele Protokolle aufbewahrt werden sollen, oder von täglich auf wöchentlich wechseln. Dies sollte standardmäßig beibehalten werden, es sei denn, Sie haben spezielle Protokollanforderungen für Software wie fail2ban-Überwachung oder ähnliches.

/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
}

Die wichtigsten Einstellungen, die Sie wahrscheinlich ändern möchten, sind die folgenden:

  • Täglich – Dies kann in Wöchentlich, Monatlich geändert werden. Dies sollte täglich eingehalten werden, da sonst das Durchsuchen der Protokolldatei schwierig wird.
  • Um 14 drehen – So viele Protokolle müssen aufbewahrt und entfernt werden, also gibt es maximal 14 Protokolle, wenn Sie nur Protokolle im Wert von 7 Tagen aufbewahren möchten, ändern Sie dies auf 7.

Es wird empfohlen, keine anderen Einstellungen zu ändern, es sei denn, Sie wissen, was Sie tun.

So aktualisieren Sie Nginx

Nginx wird standardmäßig aktualisiert, wenn eine neue Version in die Repositories gelangt. Vor dem Upgrade ist es immer ratsam, Ihr Nginx-Verzeichnis oder zumindest die nginx.conf zu sichern Datei. Sie können beides mit dem folgenden Befehl tun.

Nginx.conf sichern (dringend empfohlen):

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

Sichern Sie Ihren gesamten Nginx-Ordner, wenn Sie möchten:

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

Führen Sie als Nächstes den Standard-Update-Befehl aus.

sudo dnf upgrade --refresh

Wenn ein Upgrade verfügbar ist, führen Sie das Upgrade aus.

Möglicherweise werden Sie während eines Upgrades oder einer Installation dazu aufgefordert, aber dies vorher manuell zu tun, ist ziemlich wichtig. Bei großen Nginx-Konfigurationen mit mehreren Sites wäre eine Sicherung auf etwas wie Github oder Gitlab sogar noch vorteilhafter.

So entfernen (deinstallieren) Sie Nginx

Um Nginx zu entfernen, wenn Sie es nicht mehr verwenden, können Sie dies mit dem folgenden Befehl tun:

sudo dnf autoremove nginx

Dieser Befehl entfernt auch alle ungenutzten Abhängigkeiten, die mit der Installation geliefert wurden.

Verwenden Sie den folgenden Befehl, um das nginx-Modul von Mainline auf die Standardeinstellungen zurückzusetzen.

sudo dnf modules reset nginx

Fedora
  1. So installieren Sie Spotify auf Fedora 35

  2. So installieren Sie Slack auf Fedora 35

  3. So installieren Sie CMake auf Fedora 35

  4. So installieren Sie Grafana auf Fedora 35

  5. So installieren Sie PHP 8 auf Fedora 35

So installieren Sie MongoDB auf Fedora 35

So installieren Sie Jenkins auf Fedora 35

So installieren Sie Wine auf Fedora 35

So installieren Sie Python auf Fedora 35

So installieren Sie PostgreSQL auf Fedora 35

So installieren Sie Docker auf Fedora 35