So installieren Sie Nginx unter Ubuntu 18.04

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 Ubuntu 18.04-Server installieren.

Voraussetzungen

Bevor Sie mit diesem Handbuch beginnen, sollten Sie einen normalen Benutzer ohne Rootberechtigung mit Sudo-Berechtigungen auf Ihrem Server haben. Sie erfahren, wie Sie ein normales Benutzerkonto konfigurieren, indem Sie unserem initial server setup guide for Ubuntu 18.04 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 Ubuntus Standard-Repositorys verfügbar ist, ist es möglich, es mithilfe des Paketsystems "+ apt +" aus diesen Repositorys zu installieren.

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

sudo apt update
sudo apt install nginx

Nachdem Sie die Prozedur akzeptiert haben, 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. Nginx registriert sich bei der Installation als Dienst mit + ufw +, so dass der Zugriff auf Nginx problemlos möglich ist.

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
 OpenSSH

Wie Sie sehen können, 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 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 Datenverkehr 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 Ubuntu 18.04 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:  since Fri 2018-04-20 16:08:19 UTC; 3 days ago
    Docs: man:nginx(8)
Main PID: 2369 (nginx)
   Tasks: 2 (limit: 1153)
  CGroup: /system.slice/nginx.service
          ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
          └─2380 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, haben Sie verschiedene Möglichkeiten, sie abzurufen.

Geben Sie dies 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.

Eine Alternative besteht darin, Folgendes einzugeben:

curl -4 icanhazip.com

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

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 von einem einzelnen Server aus zu hosten. Wir werden eine Domain mit dem Namen * example.com * einrichten, aber Sie sollten * diese durch Ihren eigenen Domainnamen ersetzen *. Weitere Informationen zum Einrichten eines Domainnamens mit DigitalOcean finden Sie unter Introduction to DigitalOcean DNS.

In Nginx unter Ubuntu 18.04 ist standardmäßig ein Serverblock aktiviert, der zum Bereitstellen von Dokumenten aus einem Verzeichnis unter + / var / www / html + konfiguriert ist. Dies funktioniert zwar gut für eine einzelne Site, kann jedoch unhandlich werden, wenn Sie mehrere Sites hosten. Anstatt "+ / var / www / html " zu ändern, erstellen wir eine Verzeichnisstruktur in " / var / www " für unsere * example.com * -Site, wobei " / var / www / html +" als Standard beibehalten wird Verzeichnis, das bedient werden soll, wenn eine Client-Anfrage mit keiner anderen Site übereinstimmt.

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

sudo mkdir -p /var/www//html

Ordnen Sie als Nächstes den Besitz des Verzeichnisses mit der Umgebungsvariablen + $ USER + zu:

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

Die Berechtigungen Ihrer Webstammverzeichnisse 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 das folgende HTML-Beispiel hinzu:

/var/www/example.com/html/index.html

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

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

Damit Nginx diesen Inhalt bereitstellen kann, muss ein Serverblock mit den richtigen Anweisungen erstellt werden. 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/example.com

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 die Datei, indem wir einen Link von ihr zu dem "+ sites-enabled" -Verzeichnis 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]):

  • + example.com +: Reagiert auf Anfragen nach + example.com + und + www.example.com +.

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

Um ein mögliches Problem mit dem Hash-Bucket-Speicher zu vermeiden, das durch das Hinzufügen zusätzlicher Servernamen entstehen kann, muss ein einzelner Wert in der Datei "+ / etc / nginx / nginx.conf +" angepasst werden. Ö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;
   ...
}
...

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

sudo nginx -t

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

Wenn es keine Probleme gibt, starten Sie Nginx neu, um Ihre Ä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 des Inhalts und die Technologien, die Sie verwenden möchten, um eine umfassendere Erfahrung zu erzielen.

Wenn Sie einen vollständigeren Anwendungsstapel erstellen möchten, lesen Sie diesen Artikel unter https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack -ubuntu-18-04 [Konfigurieren eines LEMP-Stacks unter Ubuntu 18.04].