Wie man Nginx unter Ubuntu 20.04 installiert

Einführung

Nginx ist einer der beliebtesten Webserver der Welt und ist verantwortlich für das Hosting einiger der größten und am meisten frequentierten Websites im Internet. Es ist eine leichte Wahl, die sowohl als Webserver als auch als Reverse-Proxy verwendet werden kann.

In diesem Leitfaden werden wir besprechen, wie man Nginx auf Ihrem Ubuntu 20.04-Server installiert, die Firewall anpasst, den Nginx-Prozess verwaltet und Serverblöcke einrichtet, um mehr als eine Domain von einem einzigen Server aus zu hosten.

Vereinfachen Sie das Bereitstellen von Anwendungen mit DigitalOcean App Platform . Bereitstellen direkt von GitHub in Minuten.

Voraussetzungen

Bevor Sie mit diesem Leitfaden beginnen, sollten Sie über einen regulären, nicht-root Benutzer mit sudo-Berechtigungen auf Ihrem Server verfügen. Sie können lernen, wie Sie ein reguläres Benutzerkonto einrichten, indem Sie unserem Anleitung zum Einrichten des Servers für Ubuntu 20.04 folgen.

Sie möchten möglicherweise auch optional einen Domainnamen registriert haben, bevor Sie die letzten Schritte dieses Tutorials abschließen. Um mehr über die Einrichtung eines Domainnamens mit DigitalOcean zu erfahren, lesen Sie bitte unsere Einführung in DigitalOcean DNS.

Wenn Sie über ein verfügbares Konto verfügen, melden Sie sich als Ihr Nicht-Root-Benutzer an, um zu beginnen.

Schritt 1 – Installation von Nginx

Da Nginx in den Standard-Repositorys von Ubuntu verfügbar ist, ist es möglich, es aus diesen Repositorys mit dem apt-Paketverwaltungssystem zu installieren.

Da dies unsere erste Interaktion mit dem apt-Paketverwaltungssystem in dieser Sitzung ist, aktualisieren wir unseren lokalen Paketindex, damit wir Zugriff auf die aktuellsten Paketlisten haben. Danach können wir nginx installieren:

  1. sudo apt update
  2. sudo apt install nginx

Nachdem Sie den Vorgang akzeptiert haben, installiert apt Nginx und alle erforderlichen Abhängigkeiten auf Ihrem Server.

Schritt 2 – Anpassen der Firewall

Vor dem Testen von Nginx muss die Firewall-Software so angepasst werden, dass der Zugriff auf den Dienst erlaubt ist. Nginx registriert sich bei der Installation selbst als Dienst bei ufw, was es einfach macht, den Zugriff auf Nginx zu ermöglichen.

Auflisten der Anwendungs konfigurationen, die ufw verarbeiten kann, indem Sie eingeben:

  1. sudo ufw app list

Sie sollten eine Liste der Anwendungsprofile erhalten:

Output
Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH

Wie aus der Ausgabe ersichtlich, gibt es drei Profile für Nginx:

  • Nginx Vollständig: Dieses Profil öffnet sowohl Port 80 (normaler, unverschlüsselter Webverkehr) als auch Port 443 (TLS/SSL-verschlüsselter Verkehr)
  • Nginx HTTP: Dieses Profil öffnet nur Port 80 (normaler, unverschlüsselter Webverkehr)
  • Nginx HTTPS: Dieses Profil öffnet nur Port 443 (TLS/SSL-verschlüsselter Verkehr)

Es wird empfohlen, das restriktivste Profil zu aktivieren, das den von Ihnen konfigurierten Datenverkehr noch zulässt. Derzeit müssen wir nur den Verkehr auf Port 80 zulassen.

Dies können Sie aktivieren, indem Sie eingeben:

  1. sudo ufw allow 'Nginx HTTP'

Sie können die Änderung überprüfen, indem Sie eingeben:

  1. sudo ufw status

Die Ausgabe wird anzeigen, welcher HTTP-Verkehr erlaubt ist:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

Schritt 3 – Überprüfung Ihres Web-Servers

Am Ende des Installationsprozesses startet Ubuntu 20.04 Nginx. Der Webserver sollte bereits aktiv und betriebsbereit sein.

Wir können mit dem systemd-Init-System überprüfen, ob der Dienst läuft, indem wir Folgendes eingeben:

  1. 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 2020-04-20 16:08:19 UTC; 3 days ago Docs: man:nginx(8) Main PID: 2369 (nginx) Tasks: 2 (limit: 1153) Memory: 3.5M CGroup: /system.slice/nginx.service ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2380 nginx: worker process

Wie durch diese Ausgabe bestätigt wurde, wurde der Dienst erfolgreich gestartet. Die beste Möglichkeit, dies zu überprüfen, besteht jedoch darin, tatsächlich eine Seite von Nginx anzufordern.

Sie können auf die Standard-Nginx-Startseite zugreifen, um zu bestätigen, dass die Software ordnungsgemäß ausgeführt wird, indem Sie zur IP-Adresse Ihres Servers navigieren. Wenn Sie Ihre Server-IP-Adresse nicht kennen, können Sie sie mithilfe des Tools icanhazip.com herausfinden, das Ihnen Ihre öffentliche IP-Adresse gibt, wie sie von einem anderen Ort im Internet empfangen wurde:

  1. curl -4 icanhazip.com

Wenn Sie die IP-Adresse Ihres Servers haben, geben Sie sie in die Adressleiste Ihres Browsers ein:

http://your_server_ip

Sie sollten die Standard-Nginx-Startseite erhalten:

Wenn Sie diese Seite sehen, läuft Ihr Server ordnungsgemäß und ist bereit, verwaltet zu werden.

Schritt 4 – Verwalten des Nginx-Prozesses

Jetzt, da Ihr Webserver läuft, lassen Sie uns einige grundlegende Verwaltungsbefehle überprüfen.

Um Ihren Webserver zu stoppen, geben Sie Folgendes ein:

  1. sudo systemctl stop nginx

Um den Webserver zu starten, wenn er gestoppt ist, geben Sie Folgendes ein:

  1. sudo systemctl start nginx

Um den Dienst zu stoppen und dann wieder zu starten, geben Sie Folgendes ein:

  1. sudo systemctl restart nginx

Wenn Sie nur Konfigurationsänderungen vornehmen, kann Nginx oft neu geladen werden, ohne Verbindungen zu trennen. Um dies zu tun, geben Sie ein:

  1. sudo systemctl reload nginx

Standardmäßig ist Nginx so konfiguriert, dass es automatisch startet, wenn der Server hochgefahren wird. Wenn dies nicht gewünscht ist, können Sie dieses Verhalten deaktivieren, indem Sie Folgendes eingeben:

  1. sudo systemctl disable nginx

Um den Dienst wieder so einzurichten, dass er beim Booten startet, können Sie Folgendes eingeben:

  1. sudo systemctl enable nginx

Sie haben nun grundlegende Verwaltungsbefehle gelernt und sollten bereit sein, die Website so zu konfigurieren, dass sie mehr als eine Domain hosten kann.

Bei Verwendung des Nginx-Webservers können Serverblöcke (ähnlich wie virtuelle Hosts in Apache) verwendet werden, um Konfigurationsdetails zu kapseln und mehr als eine Domain von einem einzigen Server zu hosten. Wir richten eine Domain namens Ihre_Domain ein, aber Sie sollten diese durch Ihren eigenen Domainnamen ersetzen.

Auf Ubuntu 20.04 hat Nginx standardmäßig einen Serverblock aktiviert, der so konfiguriert ist, dass er Dokumente aus einem Verzeichnis unter /var/www/html bereitstellt. Obwohl dies gut für eine einzelne Website funktioniert, kann es umständlich werden, wenn Sie mehrere Websites hosten. Anstatt /var/www/html zu ändern, erstellen wir eine Verzeichnisstruktur innerhalb von /var/www für unsere Ihre_Domain-Website und belassen /var/www/html als Standardverzeichnis, das bereitgestellt wird, wenn eine Clientanforderung keiner anderen Website entspricht.

Erstellen Sie das Verzeichnis für Ihre_Domain wie folgt, wobei die Option -p verwendet wird, um alle erforderlichen übergeordneten Verzeichnisse zu erstellen:

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

Als nächstes weisen Sie das Verzeichnis mit der Umgebungsvariable $USER zu:

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

Die Berechtigungen Ihrer Web-Roots sollten korrekt sein, wenn Sie Ihren umask-Wert nicht geändert haben, der die Standarddateiberechtigungen festlegt. Um sicherzustellen, dass Ihre Berechtigungen korrekt sind und dem Besitzer das Lesen, Schreiben und Ausführen der Dateien ermöglichen, während Gruppen und andere nur Lese- und Ausführungsberechtigungen gewährt werden, können Sie den folgenden Befehl eingeben:

  1. sudo chmod -R 755 /var/www/your_domain

Erstellen Sie als nächstes eine Beispieldatei index.html mit nano oder Ihrem bevorzugten Editor:

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

Fügen Sie folgendes Beispiel-HTML ein:

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

Speichern und schließen Sie die Datei, indem Sie Strg+X drücken, um zu beenden, dann wenn zur Speicherung aufgefordert, Y und dann Enter.

Damit Nginx diesen Inhalt serviert, ist es notwendig, einen Serverblock mit den richtigen Direktiven zu erstellen. Anstatt die Standardkonfigurationsdatei direkt zu ändern, erstellen wir eine neue unter /etc/nginx/sites-available/Ihre_Domain:

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

Fügen Sie den folgenden Konfigurationsblock ein, der ähnlich wie der Standard ist, aber für unser neues Verzeichnis und unseren Domainnamen aktualisiert wurde:

/etc/nginx/sites-available/your_domain
server {
        listen 80;
        listen [::]:80;

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

        server_name your_domain www.your_domain;

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

Beachten Sie, dass wir die root-Konfiguration auf unser neues Verzeichnis und den server_name auf unseren Domainnamen aktualisiert haben.

Als nächstes aktivieren wir die Datei, indem wir einen Link von ihr zum Verzeichnis sites-enabled erstellen, das Nginx beim Start liest:

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

Nginx verwendet eine gängige Praxis namens symbolische Verknüpfungen oder Symlinks, um zu verfolgen, welche Ihrer Serverblöcke aktiviert sind. Das Erstellen eines Symlinks ist ähnlich wie das Erstellen einer Verknüpfung auf der Festplatte, sodass Sie später die Verknüpfung aus dem sites-enabled-Verzeichnis löschen könnten, während der Serverblock im sites-available-Verzeichnis verbleibt, wenn Sie ihn aktivieren möchten.

Zwei Serverblöcke sind jetzt aktiviert und konfiguriert, um auf Anfragen basierend auf ihren listen– und server_name-Direktiven zu antworten (Sie können mehr darüber lesen, wie Nginx diese Direktiven verarbeitet hier):

  • Ihre_Domain: Wird auf Anfragen für Ihre_Domain und www.Ihre_Domain antworten.
  • Standard: Wird auf alle Anfragen auf Port 80 antworten, die nicht zu den anderen beiden Blöcken passen.

Um ein mögliches Problem mit dem Speicher für Hash-Buckets zu vermeiden, das durch das Hinzufügen zusätzlicher Servernamen entstehen kann, ist es notwendig, einen einzelnen Wert in der Datei /etc/nginx/nginx.conf anzupassen. Öffnen Sie die Datei:

  1. sudo nano /etc/nginx/nginx.conf

Suchen Sie die Direktive server_names_hash_bucket_size und entfernen Sie das #-Symbol, um die Zeile auszukommentieren. Wenn Sie Nano verwenden, können Sie schnell nach Wörtern in der Datei suchen, indem Sie STRG und w drücken.

Hinweis: Das Auskommentieren von Codezeilen – normalerweise durch Hinzufügen von # am Anfang einer Zeile – ist eine weitere Möglichkeit, sie zu deaktivieren, ohne sie tatsächlich löschen zu müssen. Viele Konfigurationsdateien werden mit mehreren auskommentierten Optionen ausgeliefert, damit sie aktiviert oder deaktiviert werden können, indem sie zwischen aktivem Code und Dokumentation umgeschaltet werden.

/etc/nginx/nginx.conf
...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

Speichern Sie die Datei und schließen Sie sie, wenn Sie fertig sind.

Als nächstes testen Sie, um sicherzustellen, dass es keine Syntaxfehler in Ihren Nginx-Dateien gibt:

  1. sudo nginx -t

Wenn es keine Probleme gibt, starten Sie Nginx neu, um Ihre Änderungen zu aktivieren:

  1. sudo systemctl restart nginx

Nginx sollte nun Ihren Domainnamen bedienen. Sie können dies testen, indem Sie zu http://your_domain navigieren, wo Sie etwas Ähnliches sehen sollten:

Schritt 6 – Vertraut werden mit wichtigen Nginx-Dateien und -Verzeichnissen

Jetzt, da Sie wissen, wie Sie den Nginx-Dienst selbst verwalten, sollten Sie sich ein paar Minuten Zeit nehmen, um sich mit einigen wichtigen Verzeichnissen und Dateien vertraut zu machen.

Inhalt

  • /var/www/html: Der tatsächliche Webinhalt, der standardmäßig nur aus der Standard-Nginx-Seite besteht, die Sie zuvor gesehen haben, wird aus dem Verzeichnis /var/www/html bereitgestellt. Dies kann durch Ändern von Nginx-Konfigurationsdateien geändert werden.

Serverkonfiguration

  • /etc/nginx: Das Nginx-Konfigurationsverzeichnis. Alle Nginx-Konfigurationsdateien befinden sich hier.
  • /etc/nginx/nginx.conf: Die Haupt-Nginx-Konfigurationsdatei. Diese kann geändert werden, um Änderungen an der globalen Nginx-Konfiguration vorzunehmen.
  • /etc/nginx/sites-available/: Das Verzeichnis, in dem serverbezogene Serverblöcke gespeichert werden können. Nginx wird die in diesem Verzeichnis gefundenen Konfigurationsdateien nicht verwenden, es sei denn, sie sind mit dem Verzeichnis sites-enabled verknüpft. Typischerweise erfolgt die gesamte Serverblockkonfiguration in diesem Verzeichnis und wird dann durch Verknüpfen mit dem anderen Verzeichnis aktiviert.
  • /etc/nginx/sites-enabled/: Das Verzeichnis, in dem aktivierte serverbezogene Serverblöcke gespeichert werden. Typischerweise werden diese durch Verknüpfen mit Konfigurationsdateien im Verzeichnis sites-available erstellt.
  • /etc/nginx/snippets: Dieses Verzeichnis enthält Konfigurationsfragmente, die an anderer Stelle in der Nginx-Konfiguration eingebunden werden können. Potenziell wiederholbare Konfigurationssegmente sind gute Kandidaten für Refactorings in Schnipsel.

Serverprotokolle

  • /var/log/nginx/access.log: Jede Anfrage an Ihren Webserver wird in dieser Protokolldatei aufgezeichnet, es sei denn, Nginx ist anders konfiguriert.
  • /var/log/nginx/error.log: Alle Nginx-Fehler werden in diesem Protokoll aufgezeichnet.

Abschluss

Jetzt, da Sie Ihren Webserver installiert haben, haben Sie viele Möglichkeiten für den Typ des zu bedienenden Inhalts und die Technologien, die Sie verwenden möchten, um eine reichhaltigere Erfahrung zu schaffen.

Wenn Sie einen umfassenderen Anwendungsstapel erstellen möchten, werfen Sie einen Blick auf den Artikel Wie man Linux, Nginx, MySQL, PHP (LEMP-Stack) unter Ubuntu 20.04 installiert.

Um HTTPS für Ihren Domainnamen mit einem kostenlosen SSL-Zertifikat von Let’s Encrypt einzurichten, sollten Sie zu So sichern Sie Nginx mit Let’s Encrypt unter Ubuntu 20.04 übergehen.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-20-04