So installieren Sie Nginx unter FreeBSD 11.2

Einführung

Nginx ist einer der beliebtesten Webserver der Welt und bekannt für seine häufige Verwendung als Load Balancer und Reverse Proxy. Es ist ressourcenschonender als Apache und viele der größten und am häufigsten frequentierten Websites im Internet hängen von Nginx ab, um ihre Inhalte bereitzustellen.

In diesem Handbuch wird gezeigt, wie Nginx auf einem FreeBSD 11.2-Server installiert wird.

Voraussetzungen

Bevor Sie mit dieser Anleitung beginnen, benötigen Sie Zugriff auf einen Server, auf dem FreeBSD ausgeführt wird. Dieses Handbuch wurde speziell für einen Server mit FreeBSD 11.2 geschrieben, obwohl es auch auf älteren, unterstützten Versionen des Betriebssystems funktionieren sollte.

Wenn Sie neu in der Arbeit mit FreeBSD sind, kann es hilfreich sein, diesen Server anzupassen, indem Sie diese Anweisungen befolgen. .

Wenn Sie vorhaben, einen Domänennamen für diesen Server einzurichten, benötigen Sie außerdem Folgendes:

  • Ein registrierter Domainname, den Sie besitzen und kontrollieren. Wenn Sie noch keinen registrierten Domainnamen haben, können Sie einen bei einem der vielen Domainnamen-Registrare registrieren (z. Namecheap, GoDaddy usw.).

  • Ein DNS * A Record *, der Ihre Domain auf die öffentliche IP-Adresse Ihres Servers verweist. Weitere Informationen zum Hinzufügen von Hostnamen finden Sie unter this hostname tutorial.

Schritt 1 - Nginx installieren

Zunächst installieren wir Nginx mit + pkg +, dem in FreeBSD integrierten Binärpaket-Management-Tool. Der folgende Befehl aktualisiert Ihre lokale Kopie der verfügbaren Pakete und installiert dann das Paket + nginx +:

sudo pkg install nginx

Wenn Sie + pkg + zum ersten Mal ausführen, werden Sie aufgefordert, zu bestätigen, dass Sie zulassen, dass es sich selbst booten kann. Drücken Sie dazu + y + und dann + ENTER +. Wenn Sie dazu aufgefordert werden, bestätigen Sie, dass Sie die Installation des Pakets "+ nginx " genehmigen, indem Sie " y " und dann " ENTER +" erneut drücken.

Wenn Sie die Shell + csh + oder + tcsh + verwenden, müssen Sie den Befehl + rehash + ausführen. Dies macht die Shell auf die neuen Anwendungen aufmerksam, die Sie installiert haben:

rehash

Nginx ist jetzt auf Ihrem Server installiert, läuft aber noch nicht. Im nächsten Schritt ermöglichen wir Nginx, bei jedem Start des Servers ausgeführt zu werden und ihn für diese Sitzung zu starten. Außerdem führen wir den Sicherungsprozess des Servers durch, indem wir eine Firewall mit IPFW einrichten.

Schritt 2 - Aktivieren des Nginx-Dienstes und Einrichten einer Firewall mit IPFW

Damit FreeBSD Nginx als herkömmlichen Dienst starten kann, müssen Sie FreeBSD mitteilen, dass Sie es aktivieren möchten. Auf diese Weise können Sie es wie jeden anderen Dienst anstatt als eigenständige Anwendung verwalten und FreeBSD so konfigurieren, dass es beim Booten automatisch gestartet wird.

Dazu müssen Sie zuerst den richtigen Parameter "+ rc " kennen, der für den Dienst " nginx " festgelegt werden soll. ` rc ` ist ein FreeBSD-Dienstprogramm, das die automatischen Boot-Prozesse des Systems steuert. Skripte für jeden auf dem System verfügbaren Dienst befinden sich im Verzeichnis " / usr / local / etc / rc.d ". Diese definieren die Parameter, die verwendet werden, um jeden Dienst mit der Variablen " rcvar " zu aktivieren. Wir können sehen, auf was das ` rcvar +` jedes Dienstes eingestellt ist, indem wir Folgendes eingeben:

grep rcvar /usr/local/etc/rc.d/*

Nach der Installation gibt dieser Befehl eine Liste aus, die der folgenden ähnelt:

Output/usr/local/etc/rc.d/cloudconfig:rcvar="cloudinit_enable"
/usr/local/etc/rc.d/cloudfinal:rcvar="cloudinit_enable"
/usr/local/etc/rc.d/cloudinit:rcvar="cloudinit_enable"
/usr/local/etc/rc.d/cloudinitlocal:rcvar="cloudinit_enable"
/usr/local/etc/rc.d/nginx:rcvar=
/usr/local/etc/rc.d/rsyncd:rcvar=rsyncd_enable

Der Parameter, den Sie für den Dienst "+ nginx +" festlegen müssen, wird hier in dieser Ausgabe hervorgehoben. Der Name des Skripts selbst - die letzte Komponente des Pfads vor dem Doppelpunkt - ist ebenfalls hilfreich, da FreeBSD diesen Namen verwendet, um auf den Dienst zu verweisen.

Um den "+ nginx " - Dienst zu aktivieren, müssen Sie seine " rcvar " zur " rc.conf " - Datei hinzufügen, die die globalen Systemkonfigurationsinformationen enthält, auf die von den Startskripten verwiesen wird. Verwenden Sie Ihren bevorzugten Editor, um die Datei " / etc / rc.conf " mit den Rechten " sudo " zu öffnen. Hier verwenden wir " ee +":

sudo ee /etc/rc.conf

Am Anfang der Datei befinden sich bereits einige + rcvar + - Parameter. Fügen Sie den Parameter + nginx_enable + + rcvar + darunter ein und setzen Sie ihn auf " YES ":

/etc/rc.conf

. . .
sshd_enable="YES"


. . .

Während wir uns noch in der Datei "+ rc.conf +" befinden, werden wir ein paar weitere Anweisungen hinzufügen, um eine IPFW-Firewall zu aktivieren und zu konfigurieren. IPFW ist eine Stateful-Firewall für FreeBSD. Es bietet eine leistungsstarke Syntax, mit der Sie Sicherheitsregeln für die meisten Anwendungsfälle anpassen können.

Fügen Sie direkt unter dem soeben hinzugefügten Parameter "+ nginx_enable +" die folgenden hervorgehobenen Zeilen hinzu:

/etc/rc.conf

. . .
nginx_enable="YES"

Die einzelnen Anweisungen und ihre Einstellungen haben folgende Funktionen:

  • + firewall_enable =" YES "+ - Wenn Sie diese Anweisung auf " YES " setzen, wird die Firewall beim Starten des Servers gestartet.

  • + firewall_type =" workstation "+ - FreeBSD bietet verschiedene Standardtypen von Firewalls mit jeweils leicht unterschiedlichen Konfigurationen. Wenn Sie den Typ "+ Workstation +" deklarieren, schützt die Firewall diesen Server nur mit Stateful-Regeln.

  • + firewall_myservices =" 22 / tcp 80 / tcp "+ - In der Anweisung + firewall_myservices + können Sie die TCP-Ports auflisten, die Sie durch die Firewall zulassen möchten. In diesem Beispiel geben wir die Ports "+ 22 " und " 80 +" an, um SSH- bzw. HTTP-Zugriff auf den Server zu ermöglichen.

  • + firewall_allowservices =" any "+ - Damit kann ein Computer von einer beliebigen IP-Adresse über die in der Anweisung + firewall_myservices + angegebenen Ports kommunizieren.

Speichern Sie nach dem Hinzufügen dieser Zeilen die Datei und schließen Sie den Editor, indem Sie die Tastenkombination STRG + C + drücken, "+ exit " eingeben und dann " ENTER +" drücken.

Starten Sie dann den Firewall-Dienst "+ ipfw ". Da Sie die Firewall auf diesem Server zum ersten Mal starten, kann dies dazu führen, dass der Server blockiert und über SSH nicht mehr erreichbar ist. Mit dem folgenden Befehl " nohup +", der für "no hangups" steht, wird die Firewall gestartet, wobei ein Abwürgen verhindert wird. Außerdem werden die Standardausgabe und der Fehler in eine temporäre Protokolldatei umgeleitet:

sudo nohup service ipfw start >/tmp/ipfw.log 2>&1

Wenn Sie jedoch die Shells "+ csh " oder " tcsh " verwenden, führt diese Umleitung dazu, dass " Ambiguous Output Redirect. " In Ihrer Ausgabe angezeigt wird. Wenn Sie eine dieser Shells verwenden, führen Sie stattdessen Folgendes aus, um " ipfw +" zu starten:

sudo nohup service ipfw start >&/tmp/ipfw.log

Starten Sie als nächstes den Dienst "+ nginx"

sudo service nginx start

Um zu testen, ob Nginx Inhalte korrekt bereitstellen kann, geben Sie die öffentliche IP-Adresse Ihres Servers in die URL-Leiste Ihres bevorzugten Webbrowsers ein:

http://

Wenn alles korrekt funktioniert, wird die Standard-Nginx-Landingpage angezeigt:

image: https: //assets.digitalocean.com/freebsd/nginx/nginx_default_page.png [Nginx-Standardseite]

Dies zeigt, dass Nginx installiert ist und ordnungsgemäß ausgeführt wird und wie erwartet die Firewall passieren kann. Es sind jedoch noch einige Konfigurationsänderungen erforderlich, damit nicht standardmäßige Einstellungen verwendet oder Inhalte unter Verwendung eines Domänennamens bereitgestellt werden können.

Schritt 3 - Einrichten eines Serverblocks

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 FreeBSD 11.2 ist standardmäßig ein Serverblock aktiviert, der so konfiguriert ist, dass Dokumente aus einem Verzeichnis unter + / usr / local / www / nginx + bereitgestellt werden. Dies funktioniert zwar gut für eine einzelne Site, kann jedoch unhandlich werden, wenn Sie mehrere Sites hosten. Anstatt "+ / usr / local / www / nginx " zu ändern, erstellen wir eine Verzeichnisstruktur in " / usr / local / www +" für unsere * example.com * -Site.

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 /usr/local/www//html

Weisen Sie als Nächstes dem Benutzer * www *, dem standardmäßigen Nginx-Laufzeitbenutzerprofil, den Besitz des Verzeichnisses zu:

sudo chown -R www:www /usr/local/www/

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 /usr/local/www/

Als nächstes erstellen Sie eine Beispielseite "+ index.html" mit "+ ee +":

sudo ee /usr/local/www//html/index.html

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

/usr/local/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. Öffnen Sie die Hauptkonfigurationsdatei von Nginx. Standardmäßig befindet sich dies im Verzeichnis + / usr / local / etc / nginx / +:

sudo ee /usr/local/etc/nginx/nginx.conf

Wenn Sie die Datei zum ersten Mal öffnen, wird ganz oben Folgendes angezeigt:

/usr/local/etc/nginx/nginx.conf

#user  nobody;
worker_processes  1;

. . .

Entfernen Sie das Kommentarzeichen "+ user ", indem Sie das Nummernzeichen (" # ") entfernen, und ändern Sie den Benutzer von "nobody" in "www". Aktualisieren Sie anschließend die Direktive " worker_processes ", mit der Sie auswählen können, wie viele Worker-Prozesse Nginx verwenden soll. Der optimale Wert für die Eingabe ist nicht immer offensichtlich oder leicht zu finden. Wenn Sie " auto +" festlegen, setzt Nginx den Wert auf einen Worker pro CPU-Kern, was in den meisten Fällen ausreicht:

/usr/local/etc/nginx/nginx.conf

user  ;
worker_processes  ;
. . .

Scrolle dann runter zum + server + Block. Wenn alle Kommentare entfernt sind, sieht es folgendermaßen aus:

/usr/local/etc/nginx/nginx.conf

. . .
   server {
       listen       80;
       server_name  localhost;

       location / {
           root   /usr/local/www/nginx;
           index  index.html index.htm;
       }

       error_page   500 502 503 504  /50x.html;

       location = /50x.html {
           root   /usr/local/www/nginx-dist;
       }
   }

Löschen Sie diesen gesamten Serverblock, einschließlich aller auskommentierten Zeilen, und ersetzen Sie ihn durch den folgenden Inhalt:

/usr/local/etc/nginx/nginx.conf

. . .
   server {
       access_log /var/log/nginx/.access.log;
       error_log /var/log/nginx/.error.log;
       listen       80;
       server_name   www.;

       location / {
           root   /usr/local/www//html;
           index  index.html index.htm;
       }
   }
. . .

Die Anweisungen in diesem Serverblock bewirken Folgendes:

  • + access_log +: Diese Anweisung definiert den Speicherort der Zugriffsprotokolle des Servers.

  • + error_log +: Dies definiert die Datei, in die Nginx seine Fehlerprotokolle schreibt.

  • + listen +: Die Anweisung + listen + legt fest, auf welchem ​​Port Nginx empfangsbereit sein soll. In diesem Fall setzen wir es auf den Port "+ 80 +", damit es auf HTTP-Verkehr lauschen kann.

  • + Servername +: Zeigen Sie hier mit Nginx auf Ihren Domainnamen und alle Aliase, die Sie dafür haben. Wenn Sie keinen Domainnamen haben, verweisen Sie Nginx auf die öffentliche IP-Adresse Ihres Servers.

  • + root +: Definiert das Website-Dokument-Stammverzeichnis, das Sie zuvor in diesem Schritt erstellt haben.

  • + index +: Diese Direktive definiert die Dateien, die als Index verwendet werden und in welcher Reihenfolge sie überprüft werden sollen.

Wenn alle Kommentare entfernt sind, sieht die Datei folgendermaßen aus:

/usr/local/letc/nginx/nginx.conf

user  www;
worker_processes  ;

events {
   worker_connections  1024;
}

http {
   include       mime.types;
   default_type  application/octet-stream;
   sendfile        on;
   keepalive_timeout  65;

   server {
       access_log /var/log/nginx/.access.log;
       error_log /var/log/nginx/.error.log;
       listen       80;
       server_name   www.;

       location / {
           root   /usr/local/www/;
           index  index.html index.htm;
       }

   }

}

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Testen Sie dann Ihre Konfigurationsdatei auf Syntaxfehler, indem Sie Folgendes eingeben:

sudo nginx -t

Wenn Ihre Konfigurationsdatei keine feststellbaren Syntaxfehler aufweist, wird die folgende Ausgabe angezeigt:

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

Wenn der obige Befehl mit Fehlern zurückgegeben wird, öffnen Sie die Nginx-Konfigurationsdatei erneut an dem Ort, an dem der Fehler gefunden wurde, und versuchen Sie, das Problem zu beheben.

Wenn Ihre Konfiguration korrekt ausgecheckt wurde, laden Sie den Dienst "+ nginx +" erneut, um Ihre Änderungen zu aktivieren:

sudo service nginx reload

Nginx sollte nun den Inhalt bereitstellen, den Sie in der Datei "+ index.html " eingerichtet haben. Testen Sie dies, indem Sie zu " http: // +" navigieren, wo Sie ungefähr Folgendes sehen sollten:

Als letzten Schritt gehen wir einige Befehle durch, mit denen Sie den Nginx-Dienst verwalten können.

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 service nginx stop

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

sudo service nginx start

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

sudo service nginx restart

Wenn Sie lediglich Konfigurationsänderungen vornehmen, können Sie Nginx neu laden, ohne dass Verbindungen unterbrochen werden müssen. Geben Sie dazu Folgendes ein:

sudo service nginx reload

Denken Sie zuletzt daran, wie wir in Schritt 2 den Dienst "+ nginx " aktiviert haben, indem wir der Datei " rc.conf " die Direktive " nginx_enable =" YES "" hinzugefügt haben. Wenn Sie den " nginx +" - Dienst deaktivieren möchten, um zu verhindern, dass er beim Starten des Servers gestartet wird, müssen Sie diese Datei erneut öffnen und diese Zeile entfernen.

Fazit

Sie haben jetzt einen voll funktionsfähigen Nginx-Webserver auf Ihrem Computer installiert. Von hier aus können Sie den Webdatenverkehr Ihres Servers verschlüsseln, indem Sie HTTPS aktivieren. Informationen dazu finden Sie unter So sichern Sie Nginx mit Let’s Encrypt unter FreeBSD. Sie können auch installieren und MySQL und konfigurieren PHP, mit dem Sie zusammen mit Nginx einen vollständigen FEMP-Stack erhalten.