Wie man Nginx unter Ubuntu 22.04 installiert

Einführung

Nginx ist einer der beliebtesten Webserver der Welt und ist für das Hosting einiger der größten und meistbesuchten Websites im Internet verantwortlich. 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 22.04 Server installiert, die Firewall anpasst, den Nginx-Prozess verwaltet und Server-Blöcke für das Hosting mehrerer Domänen von einem einzigen Server einrichtet.

Deployen Sie Ihre Anwendungen von GitHub mit DigitalOcean App Platform. Lassen Sie DigitalOcean sich darauf konzentrieren, Ihre App zu skalieren.

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 man ein reguläres Benutzerkonto konfiguriert, indem Sie unserem Anleitung zum Initialisieren des Servers für Ubuntu 22.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 das DigitalOcean-DNS.

Wenn Sie über ein verfügbares Konto verfügen, melden Sie sich als Ihr nicht-root-Benutzerkonto an, um zu beginnen.

Schritt 1 – Installation von Nginx

Weil Nginx in den Standard-Repositories von Ubuntu verfügbar ist, ist es möglich, es aus diesen Repositories mithilfe des apt-Paketierungssystems zu installieren.

Da dies unsere erste Interaktion mit dem apt-Paketierungssystem 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

Drücken Sie Y, wenn Sie zur Bestätigung der Installation aufgefordert werden. Wenn Sie aufgefordert werden, einen Dienst neu zu starten, drücken Sie ENTER, um die Standardeinstellungen zu akzeptieren und fortzufahren. apt wird Nginx und alle erforderlichen Abhängigkeiten auf Ihrem Server installieren.

Schritt 2 – Anpassen der Firewall

Bevor Sie Nginx testen, muss die Firewall-Software konfiguriert werden, um den Zugriff auf den Dienst zu ermöglichen. Nginx registriert sich bei der Installation als Dienst bei ufw, was es einfach macht, Nginx-Zugriff zu erlauben.

Listen Sie die Anwendungs-Konfigurationen auf, die ufw verarbeiten kann, indem Sie Folgendes eingeben:

  1. sudo ufw app list

Sie sollten eine Auflistung 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 Full: 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 konfigurierten Verkehr noch zulässt. Derzeit müssen wir nur den Verkehr auf Port 80 erlauben.

Sie können dies aktivieren, indem Sie Folgendes eingeben:

  1. sudo ufw allow 'Nginx HTTP'

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

  1. sudo ufw status

Die Ausgabe zeigt an, 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 22.04 Nginx. Der Webserver sollte bereits aktiv und einsatzbereit 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 2022-03-01 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 aus dieser Ausgabe bestätigt wurde, wurde der Dienst erfolgreich gestartet. Der beste Weg, 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äß funktioniert, indem Sie zur IP-Adresse Ihres Servers navigieren. Wenn Sie die IP-Adresse Ihres Servers nicht kennen, können Sie diese mithilfe des icanhazip.com-Tools herausfinden, das Ihnen Ihre öffentliche IP-Adresse liefert, 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 sich auf dieser Seite befinden, läuft Ihr Server korrekt und ist bereit, verwaltet zu werden.

Schritt 4 – Verwaltung 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. Geben Sie dazu ein:

  1. sudo systemctl reload nginx

Standardmäßig ist Nginx so konfiguriert, dass es automatisch startet, wenn der Server hochfährt. 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 hostet.

Bei Verwendung des Nginx-Webservers können Server-Blö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 werden eine Domain namens deine_domain einrichten, aber Sie sollten dies durch Ihren eigenen Domainnamen ersetzen.

Nginx auf Ubuntu 22.04 hat standardmäßig einen Server-Block aktiviert, der so konfiguriert ist, dass er Dokumente aus einem Verzeichnis unter /var/www/html serviert. Dies funktioniert gut für eine einzelne Website, kann jedoch unhandlich werden, wenn mehrere Websites gehostet werden. Anstatt /var/www/html zu ändern, erstellen wir eine Verzeichnisstruktur innerhalb von /var/www für unsere deine_domain-Website und lassen /var/www/html als Standardverzeichnis bestehen, das bedient wird, wenn eine Client-Anfrage keiner anderen Website entspricht.

Erstellen Sie das Verzeichnis für deine_domain wie folgt, unter Verwendung der -p-Option, 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 nur Lese- und Ausführungsberechtigungen für Gruppen und andere gewährt werden, können Sie den folgenden Befehl eingeben:

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

Als Nächstes erstellen Sie eine Beispieldatei index.html mit nano oder Ihrem bevorzugten Editor:

  1. 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 durch Drücken von Strg + X zum Beenden und dann, wenn zur Speicherung aufgefordert wird, Y und dann Eingabetaste.

Um sicherzustellen, dass Nginx diesen Inhalt bereitstellt, 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/deine_domain:

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

Fügen Sie den folgenden Konfigurationsblock ein, der dem Standard ähnelt, aber für unser neues Verzeichnis und unsere Domain aktualisiert ist:

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

Bemerkenswert ist, 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/

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

Zwei Serverblöcke sind nun 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):

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

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

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

Finden Sie die Direktive server_names_hash_bucket_size und entfernen Sie das #-Symbol, um die Zeile zu kommentieren. 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 Einfü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 überprüfen Sie, ob 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 jetzt Ihren Domainnamen bedienen. Sie können dies testen, indem Sie zu http://your_domain navigieren, wo Sie etwas ähnliches wie folgt sehen sollten:

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

Jetzt, da Sie wissen, wie Sie den Nginx-Dienst selbst verwalten können, 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 pro-Website-Serverblöcke gespeichert werden können. Nginx verwendet die Konfigurationsdateien in diesem Verzeichnis nicht, es sei denn, sie sind mit dem Verzeichnis sites-enabled verknüpft. Typischerweise wird die gesamte Serverblockkonfiguration in diesem Verzeichnis durchgeführt und dann durch Verknüpfen mit dem anderen Verzeichnis aktiviert.
  • /etc/nginx/sites-enabled/: Das Verzeichnis, in dem aktivierte pro-Website-Serverblöcke gespeichert sind. Diese werden typischerweise 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 eingefügt werden können. Potenziell wiederholbare Konfigurationssegmente eignen sich gut für die Umstrukturierung in Snippets.

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 erfasst.

Abschluss

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

Wenn Sie einen umfassenderen Anwendungsstapel erstellen möchten, schauen Sie sich den Artikel So installieren Sie Linux, Nginx, MySQL, PHP (LEMP-Stack) auf Ubuntu 22.04 an.

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

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