So installieren Sie Nginx unter Debian 10

Einführung

Nginx ist einer der beliebtesten Webserver der Welt und für das Hosting einiger der meistbesuchten Websites im Internet verantwortlich. Es ist in den meisten Fällen ressourcenschonender als Apache und kann als Webserver oder Reverse-Proxy verwendet werden.

In diesem Handbuch wird erläutert, wie Sie Nginx auf Ihrem Debian 10-Server installieren.

Voraussetzungen

Bevor Sie mit diesem Handbuch beginnen, sollten Sie einen normalen Benutzer ohne Rootberechtigung mit Sudo-Berechtigungen auf Ihrem Server und einer aktiven Firewall haben. Sie können lernen, wie Sie diese einrichten, indem Sie unserem initial server setup guide for Debian 10 folgen.

Wenn Sie über ein Konto verfügen, melden Sie sich als Benutzer ohne Rootberechtigung an, um zu beginnen.

Schritt 1 - Nginx installieren

Da Nginx in den Standard-Repositorys von Debian verfügbar ist, ist es möglich, es aus diesen Repositorys mithilfe des Paketsystems "+ apt +" zu installieren.

Da dies unsere erste Interaktion mit dem "+ apt +" - Paketsystem in dieser Sitzung ist, aktualisieren wir zunächst unseren lokalen Paketindex, sodass wir auf die neuesten Paketlisten zugreifen können:

sudo apt update

Wir können jetzt + nginx installieren:

sudo apt install nginx

Wenn Sie aufgefordert werden, die Installation zu bestätigen, drücken Sie die Eingabetaste, um fortzufahren. Danach installiert + apt + Nginx und alle erforderlichen Abhängigkeiten zu Ihrem Server.

Schritt 2 - Anpassen der Firewall

Vor dem Testen von Nginx muss die Firewall-Software angepasst werden, um den Zugriff auf den Dienst zu ermöglichen.

Listen Sie die Anwendungskonfigurationen auf, mit denen "+ ufw +" umgehen kann, indem Sie Folgendes eingeben:

sudo ufw app list

Sie sollten eine Liste der Anwendungsprofile erhalten:

OutputAvailable applications:
...
 Nginx Full
 Nginx HTTP
 Nginx HTTPS
...

Wie Sie sehen können, gibt es drei Profile für Nginx:

  • * Nginx Full *: Dieses Profil öffnet sowohl den Port "+ 80 " (normaler, unverschlüsselter Web-Verkehr) als auch den Port " 443 +" (TLS / SSL-verschlüsselter Verkehr)

  • * Nginx HTTP *: Dieses Profil öffnet nur den 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 weiterhin zulässt. Da wir in diesem Handbuch noch kein SSL für unseren Server konfiguriert haben, müssen wir nur den Datenverkehr für HTTP auf Port "+ 80 +" zulassen.

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

sudo ufw allow 'Nginx HTTP'

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

sudo ufw status

In der angezeigten Ausgabe sollte HTTP-Verkehr zulässig sein:

OutputStatus: 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üfen Sie Ihren Webserver

Am Ende des Installationsprozesses startet Debian 10 Nginx. Der Webserver sollte bereits in Betrieb sein.

Wir können mit dem Init-System "+ systemd +" überprüfen, ob der Dienst ausgeführt wird, indem wir Folgendes eingeben:

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 Wed 2019-07-03 12:52:54 UTC; 4min 23s ago
    Docs: man:nginx(8)
Main PID: 3942 (nginx)
   Tasks: 3 (limit: 4719)
  Memory: 6.1M
  CGroup: /system.slice/nginx.service
          ├─3942 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
          ├─3943 nginx: worker process
          └─3944 nginx: worker process

Wie Sie oben sehen können, scheint der Dienst erfolgreich gestartet worden zu sein. Der beste Weg, dies zu testen, ist jedoch, eine Seite von Nginx anzufordern.

Sie können auf die Standard-Nginx-Startseite zugreifen, um zu überprüfen, ob die Software ordnungsgemäß ausgeführt wird, indem Sie zur IP-Adresse Ihres Servers navigieren. Wenn Sie die IP-Adresse Ihres Servers nicht kennen, geben Sie Folgendes an der Eingabeaufforderung Ihres Servers ein:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Sie erhalten einige Zeilen zurück. Sie können jeden in Ihrem Webbrowser ausprobieren, um zu sehen, ob er funktioniert.

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

http://

Sie sollten die Standard-Nginx-Zielseite sehen:

Diese Seite ist in Nginx enthalten, um anzuzeigen, dass der Server ordnungsgemäß ausgeführt wird.

Schritt 4 - Verwalten des Nginx-Prozesses

Nachdem Sie Ihren Webserver in Betrieb genommen haben, sehen wir uns einige grundlegende Verwaltungsbefehle an.

Geben Sie Folgendes ein, um Ihren Webserver zu stoppen:

sudo systemctl stop nginx

Geben Sie Folgendes ein, um den Webserver nach dem Stoppen zu starten:

sudo systemctl start nginx

Geben Sie Folgendes ein, um den Dienst zu beenden und erneut zu starten:

sudo systemctl restart nginx

Wenn Sie lediglich Konfigurationsänderungen vornehmen, kann Nginx häufig neu geladen werden, ohne dass Verbindungen unterbrochen werden. Geben Sie dazu Folgendes ein:

sudo systemctl reload nginx

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

sudo systemctl disable nginx

Um den Dienst wieder für den Start beim Start zu aktivieren, können Sie Folgendes eingeben:

sudo systemctl enable nginx

Schritt 5 - Serverblöcke einrichten

Bei Verwendung des Nginx-Webservers können server blocks (ähnlich wie bei virtuellen Hosts in Apache) verwendet werden, um Konfigurationsdetails zu kapseln und mehr als eine Domäne auf einem einzelnen Server zu hosten. Wir werden eine Domain namens * your_domain * einrichten. Weitere Informationen zum Einrichten eines Domainnamens mit DigitalOcean finden Sie unter Einführung in DigitalOcean DNS.

In Nginx unter Debian 10 ist standardmäßig ein Serverblock aktiviert, der so konfiguriert ist, dass Dokumente aus einem Verzeichnis unter + / var / www / html + bereitgestellt werden. Dies funktioniert zwar gut für eine einzelne Site, ist jedoch möglicherweise nicht mehr zu handhaben, wenn Sie mehrere Sites hosten. Anstatt "+ / var / www / html " zu ändern, erstellen wir eine Verzeichnisstruktur in " / var / www " für die Website "* your_domain *" und belassen " / var / www / html +" als Standardverzeichnis für " wird bedient, wenn eine Client-Anfrage mit keiner anderen Site übereinstimmt.

Erstellen Sie das Verzeichnis für * Ihre_Domäne * wie folgt, indem Sie das Flag "+ -p +" verwenden, um alle erforderlichen übergeordneten Verzeichnisse zu erstellen:

sudo mkdir -p /var/www//html

Weisen Sie als Nächstes den Besitz des Verzeichnisses mit der Umgebungsvariablen "+ $ USER +" zu, die auf Ihren aktuellen Systembenutzer verweisen soll:

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

Die Berechtigungen Ihres Webstamms sollten korrekt sein, wenn Sie Ihren "+ umask +" - Wert nicht geändert haben. Sie können dies jedoch sicherstellen, indem Sie Folgendes eingeben:

sudo chmod -R 755 /var/www/

Als nächstes erstellen Sie eine Beispielseite "+ index.html" mit "+ nano +" oder Ihrem bevorzugten Editor:

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

Fügen Sie im Inneren den folgenden Beispiel-HTML-Code hinzu:

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

<html>
   <head>
       <title>Welcome to </title>
   </head>
   <body>
       <h1>Success! Your Nginx server is successfully configured for <em></em>. </h1>
<p>This is a sample page.</p>
   </body>
</html>

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

Damit Nginx diesen Inhalt bereitstellen kann, müssen wir einen Serverblock mit den richtigen Anweisungen erstellen, die auf unser benutzerdefiniertes Webstammverzeichnis verweisen. Anstatt die Standardkonfigurationsdatei direkt zu ändern, erstellen wir eine neue unter "+ / etc / nginx / sites-available / +":

sudo nano /etc/nginx/sites-available/

Fügen Sie den folgenden Konfigurationsblock ein, der dem Standardblock ähnelt, jedoch für unser neues Verzeichnis und unseren neuen Domänennamen aktualisiert wurde:

/ etc / nginx / sites-available / your_domain

server {
       listen 80;
       listen [::]:80;

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

       server_name  www.;

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

Beachten Sie, dass wir die "+ root " - Konfiguration in unser neues Verzeichnis und die " server_name +" in unseren Domainnamen aktualisiert haben.

Als nächstes aktivieren wir diesen Serverblock, indem wir einen symbolischen Link zu unserer benutzerdefinierten Konfigurationsdatei im Verzeichnis "+ sites-enabled +" erstellen, aus dem Nginx während des Startvorgangs liest:

sudo ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/

Zwei Serverblöcke sind jetzt aktiviert und konfiguriert, um auf Anforderungen zu reagieren, die auf den Anweisungen "+ listen " und " server_name +" basieren. Weitere Informationen zur Verarbeitung dieser Anweisungen durch Nginx finden Sie unter https://www.digitalocean.com/community/tutorials/. Verständnis-Nginx-Server-und-Standort-Block-Auswahl-Algorithmen [hier]):

  • `: Reagiert auf Anfragen nach ` und + www. +.

  • ++: Reagiert auf alle Anfragen an Port + 80 +, die nicht mit den beiden anderen Blöcken übereinstimmen.

Um ein mögliches Hash-Bucket-Speicherproblem zu vermeiden, das durch das Hinzufügen zusätzlicher Servernamen zu Ihrer Konfiguration entstehen kann, ist es erforderlich, einen einzelnen Wert in der Datei "+ / etc / nginx / nginx.conf +" anzupassen. Öffne die Datei:

sudo nano /etc/nginx/nginx.conf

Suchen Sie die Direktive "+ server_names_hash_bucket_size " und entfernen Sie das Symbol " # +", um das Kommentarzeichen zu entfernen:

/etc/nginx/nginx.conf

...
http {
   ...
   server_names_hash_bucket_size 64;
   ...
}
...

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

Stellen Sie als Nächstes sicher, dass in keiner Ihrer Nginx-Dateien Syntaxfehler enthalten sind:

sudo nginx -t

Wenn es keine Probleme gibt, wird die folgende Ausgabe angezeigt:

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

Starten Sie Nginx nach erfolgreichem Konfigurationstest neu, um die Änderungen zu aktivieren:

sudo systemctl restart nginx

Nginx sollte nun Ihren Domainnamen bedienen. Sie können dies testen, indem Sie zu "+ http: // +" navigieren, wo Sie ungefähr Folgendes sehen sollten:

Schritt 6 - Machen Sie sich mit wichtigen Nginx-Dateien und -Verzeichnissen vertraut

Nachdem Sie nun wissen, wie der Nginx-Dienst selbst verwaltet wird, sollten Sie sich einige 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 zuvor angezeigten Standard-Nginx-Seite besteht, wird aus dem Verzeichnis + / var / www / html + bereitgestellt. Dies kann durch Ändern der Nginx-Konfigurationsdateien geändert werden.

Serverkonfiguration

  • + / etc / nginx +: Das Nginx-Konfigurationsverzeichnis. Alle Nginx-Konfigurationsdateien befinden sich hier.

  • + / etc / nginx / nginx.conf +: Die Hauptkonfigurationsdatei von Nginx. Dies kann geändert werden, um Änderungen an der globalen Nginx-Konfiguration vorzunehmen.

  • + / etc / nginx / sites-available / +: Das Verzeichnis, in dem Serverblöcke pro Site gespeichert werden können. Nginx verwendet die Konfigurationsdateien in diesem Verzeichnis nur, wenn sie mit dem Verzeichnis "+ sites-enabled +" verknüpft sind. In der Regel wird die gesamte Serverblockkonfiguration in diesem Verzeichnis ausgeführt und anschließend durch Verknüpfen mit dem anderen Verzeichnis aktiviert.

  • + / etc / nginx / sites-enabled / +: Das Verzeichnis, in dem aktivierte Serverblöcke pro Site gespeichert werden. In der Regel werden diese durch Verknüpfen mit Konfigurationsdateien erstellt, die sich im Verzeichnis "+ sites-available +" befinden.

  • + / etc / nginx / snippets +: Dieses Verzeichnis enthält Konfigurationsfragmente, die an anderer Stelle in der Nginx-Konfiguration enthalten sein können. Potenziell wiederholbare Konfigurationssegmente sind gute Kandidaten für das Refactoring in Snippets.

Server-Protokolle

  • + / var / log / nginx / access.log +: Jede Anfrage an Ihren Webserver wird in dieser Protokolldatei aufgezeichnet, sofern Nginx nicht anders konfiguriert ist.

  • + / var / log / nginx / error.log +: Alle Nginx-Fehler werden in diesem Protokoll aufgezeichnet.

Fazit

Nachdem Sie Ihren Webserver installiert haben, haben Sie viele Optionen für die Art der Inhalte, die Sie bereitstellen können, und für die Technologien, die Sie verwenden können, um Ihren Benutzern eine umfassendere Erfahrung zu bieten.