So installieren Sie Lighttpd mit MySQL und PHP unter FreeBSD 11.0

Einführung

https://www.lighttpd.net [Lighttpd] ist ein leichter Open-Source-Webserver, der für Hochgeschwindigkeitsumgebungen optimiert ist und gleichzeitig den Ressourcenverbrauch niedrig hält. Es ist eine hervorragende Alternative zu den gängigen Webservern Nginx und Apache. In diesem Tutorial installieren und konfigurieren Sie Lighttpd auf einem Server mit FreeBSD 11.0. Sie fügen Ihrem neuen Lighttpd-Webserver auch MySQL und PHP hinzu, damit Sie sowohl Webanwendungen als auch statische Inhalte bereitstellen können.

Voraussetzungen

Um dieses Tutorial abzuschließen, benötigen Sie:

  • Ein Server mit FreeBSD 11.0.

  • Ein Benutzerkonto, das zum Ausführen von Befehlen mit + sudo + konfiguriert ist. Das Standardkonto * freebsd *, das mit einem Digital Ocean FreeBSD-Droplet geliefert wird, ist für dieses Tutorial in Ordnung. Weitere Informationen zum Konfigurieren von FreeBSD finden Sie in der Getting Started with FreeBSD -Anleitungsreihe.

Schritt 1 - Installieren von Lighttpd

Es gibt einige Optionen für die Installation von Lighttpd. In diesem Lernprogramm werden Sie jedoch Pakete für die Installation verwenden. Diese Methode ist schneller als die Installation von der Quelle oder über Ports, und die Software ist installiert Mit dieser Methode ist leicht zu aktualisieren.

Um Lighttpd mit seinem Paket zu installieren, aktualisieren Sie zuerst die Repository-Informationen, um sicherzustellen, dass Sie über die neueste Liste der verfügbaren Pakete verfügen:

sudo pkg update

Laden Sie als nächstes das Paket + lighttpd + herunter und installieren Sie es:

sudo pkg install lighttpd

Bestätigen Sie die Installation mit + y +. Lighttpd wird installiert.

Bei dieser Standardkonfiguration wird dieser Fehler beim Starten des Servers angezeigt:

Output(network.c.260) warning: please use server.use-ipv6 only for hostnames, not without server.bind / empty address; your config will break if the kernel default for IPV6_V6ONLY changes

Dies liegt daran, dass die standardmäßige Lighttpd-Konfiguration nicht vollständig für die Unterstützung von IPv6 konfiguriert ist. Bearbeiten Sie die Konfigurationsdatei von Lighttpd und deaktivieren Sie die Unterstützung für IPv6, um später Überraschungen zu vermeiden, da Sie sie nicht benötigen, um dieses Lernprogramm abzuschließen. Sie können es in Zukunft aktivieren, wenn Sie es verwenden möchten:

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

Suchen Sie diesen Abschnitt:

/usr/local/etc/lighttpd/lighttpd.conf

...
##
## Use IPv6?
##
server.use-ipv6 = ""
...

Ändern Sie "+ enable" in "+ disable":

/usr/local/etc/lighttpd/lighttpd.conf

...
...
server.use-ipv6 = ""
...

Suchen Sie als Nächstes diese Zeile ganz am Ende der Konfigurationsdatei:

/usr/local/etc/lighttpd/lighttpd.conf

...
...
$SERVER["socket"] == "0.0.0.0:80" { }

Kommentieren Sie es aus, da es nicht erforderlich ist, wenn wir IPv6 nicht verwenden:

/usr/local/etc/lighttpd/lighttpd.conf

...
...
$SERVER["socket"] == "0.0.0.0:80" { }

Speichern Sie dann die Datei und beenden Sie den Editor.

Lassen Sie uns als nächstes MySQL konfigurieren.

Schritt 2 - Installation und Konfiguration von MySQL

MySQL ist ein Datenbankverwaltungssystem, mit dem Sie Datenbanken für die PHP-Anwendungen erstellen können, die Sie auf Ihrem Lighttpd-Webserver hosten möchten.

Sie installieren MySQL über das zugehörige Paket, genau wie Sie es für Lighttpd getan haben. Dann richten Sie ein Passwort für den MySQL * root * -Benutzer ein und deaktivieren einige andere Testoptionen. Dies stellt sicher, dass Sie ein sicheres MySQL-Setup haben.

Da Sie in Schritt 1 bereits die Repository-Informationen für "+ pkg +" aktualisiert haben, können Sie das MySQL-Serverpaket schnell herunterladen und installieren:

sudo pkg install mysql57-server

Bestätigen Sie die Installation mit: + y +.

Aktivieren Sie nach Abschluss der Installation MySQL beim Systemstart:

sudo sysrc mysql_enable=yes

Starten Sie dann den Dienst "+ mysql-server":

sudo service mysql-server start

Sobald der Dienst gestartet ist, sichern Sie Ihre Installation von MySQL mithilfe des Skripts + mysql_secure_installation +. Dadurch werden einige gefährliche Standardeinstellungen entfernt und der Zugriff auf Ihr Datenbanksystem wird ein wenig gesperrt. Starten Sie das interaktive Skript, indem Sie Folgendes ausführen:

sudo mysql_secure_installation

Sie erhalten die folgende Meldung:

OutputSecuring the MySQL server deployment.

Connecting to MySQL server using password in '/root/.mysql_secret'

Als Nächstes werden Sie gefragt, ob Sie ein Plugin zum Überprüfen von Kennwörtern konfigurieren möchten:

OutputVALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Antworten Sie mit + Y +, um mit Ja fortzufahren, ohne dies zu aktivieren.

Wenn Sie diese Funktion aktivieren, werden Sie aufgefordert, eine Ebene für die Kennwortüberprüfung auszuwählen. Beachten Sie, dass bei Eingabe von "+ 2 +" für die stärkste Stufe Fehler auftreten, wenn Sie versuchen, ein Kennwort festzulegen, das keine Zahlen, Groß- und Kleinbuchstaben sowie Sonderzeichen enthält oder auf einem allgemeinen Wörterbuch basiert Wörter.

OutputThere are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:

Als Nächstes werden Sie gefragt, ob Sie das Passwort für den * root * -Benutzer ändern möchten:

OutputChange the password for root ? ((Press y|Y for Yes, any other key for No) :

Drücken Sie + Y +, um dieses Passwort zu ändern.

Wenn Sie die Kennwortüberprüfung aktiviert haben, wird eine Kennwortstärke für das vorhandene Root-Kennwort angezeigt, und Sie werden gefragt, ob Sie dieses Kennwort ändern möchten.

OutputNew password:

Re-enter new password:

Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :

Drücken Sie + Y +, um mit dem neuen Passwort fortzufahren.

Für den Rest der Fragen sollten Sie "+ Y +" drücken und bei jeder Eingabeaufforderung die Eingabetaste drücken. Dadurch werden einige anonyme Benutzer und die Testdatenbank entfernt, Remote-Root-Anmeldungen deaktiviert und diese neuen Regeln geladen, sodass MySQL die von uns vorgenommenen Änderungen sofort berücksichtigt.

Starten Sie anschließend den Dienst "+ mysql-server +" neu, um sicherzustellen, dass Ihre Instanz die Sicherheitsänderungen sofort implementiert:

sudo service mysql-server restart

Sobald die MySQL-Instanz läuft, können wir PHP installieren und konfigurieren.

Schritt 3 - PHP installieren und konfigurieren

PHP ist die Komponente unseres Setups, die Code verarbeitet, um dynamischen Inhalt anzuzeigen. Es kann Skripte ausführen, eine Verbindung zu unseren MySQL-Datenbanken herstellen, um Informationen abzurufen, und den verarbeiteten Inhalt an unseren Webserver übergeben, um ihn anzuzeigen.

Verwenden Sie erneut das Paketsystem, um PHP zusammen mit der PHP-Erweiterung "+ mysqli +" zu installieren, die die MySQL-Unterstützung hinzufügt:

sudo pkg install php71 php71-mysqli

Lighttpd enthält keine native PHP-Verarbeitung wie einige andere Webserver. Daher verwenden wir PHP-FPM, was für "FastCGI Process Manager" steht. Wir werden Lighttpd so konfigurieren, dass dieses Modul zur Verarbeitung von PHP-Anfragen verwendet wird. Bevor wir das tun, müssen wir PHP-FPM selbst konfigurieren.

Beginnen Sie mit der Bearbeitung der PHP-FPM-Konfigurationsdatei:

sudo ee /usr/local/etc/php-fpm.d/www.conf

Wir werden PHP-FPM so konfigurieren, dass ein Unix-Socket anstelle eines Netzwerkports für die Kommunikation verwendet wird. Dies ist sicherer für Dienste, die innerhalb eines einzelnen Servers kommunizieren.

Suchen Sie nach dieser Zeile in der Konfigurationsdatei:

/usr/local/etc/php-fpm.d/www.conf

listen = 127.0.0.1:9000

Ändern Sie diese Zeile, um den Socket + php-fpm + zu verwenden:

/usr/local/etc/php-fpm.d/www.conf

listen =

Legen Sie nun den Eigentümer, die Gruppe und die Berechtigungen für den zu erstellenden Socket fest. Suchen Sie nach diesem Abschnitt der Konfigurationsdatei:

/usr/local/etc/php-fpm.d/www.conf

...
;listen.owner = www
;listen.group = www
;listen.mode = 0660
...

Kommentieren Sie den folgenden Abschnitt aus, indem Sie die Semikolons am Anfang jeder Zeile entfernen. Der Abschnitt sieht also folgendermaßen aus:

/usr/local/etc/php-fpm.d/www.conf

...
listen.owner = www
listen.group = www
listen.mode = 0660
...

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

Als nächstes erstellen Sie eine + php.ini-Datei, die das allgemeine Verhalten von PHP konfiguriert. Es sind zwei Beispieldateien enthalten: "+ php.ini-production" und "+ php.ini-development". Die Datei + php.ini-production entspricht eher den Anforderungen für Ihren Server. Kopieren Sie sie daher nach` + / usr / local / etc / php.ini is`, dem Speicherort, den PHP erwartet Konfigurationsdatei:

sudo cp /usr/local/etc/php.ini-production

Öffne die neue + php.ini Datei mit deinem Texteditor:

sudo ee /usr/local/etc/php.ini

Suchen Sie in der Konfigurationsdatei den Abschnitt für das Verhalten "+ cgi.fix_pathinfo ". Es wird auskommentiert und standardmäßig auf " 1 +" gesetzt:

/usr/local/etc/php.ini

...
;cgi.fix_pathinfo=1
...

Kommentieren Sie diese Zeile aus und setzen Sie den Wert auf "+ 0 +". Dies verhindert, dass PHP versucht, Teile des Pfads auszuführen, wenn die an process übergebene Datei nicht gefunden wird. Dies kann von einem Angreifer verwendet werden, um bösartigen Code auszuführen.

/usr/local/etc/php.ini

...
cgi.fix_pathinfo=
...

Speichern Sie die Datei und beenden Sie den Editor.

Aktivieren Sie dann den Dienst + php-fpm +, um beim Booten zu starten:

sudo sysrc php_fpm_enable=yes

Dann starte den Dienst:

sudo service php-fpm start

Als nächstes konfigurieren wir Lighttpd für die Bedienung von PHP-Anwendungen.

Schritt 4 - Konfigurieren von Lighttpd für die Bedienung von PHP-Anwendungen

In diesem Schritt konfigurieren Sie Lighttpd für die Verwendung von FastCGI und PHP-FPM. Dadurch wird PHP unter Lighttpd aktiviert und eine schnelle und effiziente PHP-Unterstützung geboten.

Aktivieren Sie zunächst das FastCGI-Modul. Öffnen Sie die Konfigurationsdatei der Lighttpd-Module:

sudo ee /usr/local/etc/lighttpd/modules.conf

Suchen Sie den folgenden Abschnitt:

/usr/local/etc/lighttpd/modules.conf

...
##
## FastCGI (mod_fastcgi)
##
#include "conf.d/fastcgi.conf"
...

Entfernen Sie das Kommentarzeichen in der Zeile "+ include ", indem Sie das Symbol " # +" entfernen. Wenn Sie diese Zeile nicht finden, fügen Sie sie am Ende der Datei hinzu.

/usr/local/etc/lighttpd/modules.conf

...
##
## FastCGI (mod_fastcgi)
##

...

Speichern Sie die Datei und beenden Sie den Editor.

Bearbeiten Sie als Nächstes die FastCGI-Konfigurationsdatei:

sudo ee /usr/local/etc/lighttpd/conf.d/fastcgi.conf

Diese Datei enthält mehrere auskommentierte Beispiele. Fügen Sie am Ende der Datei die folgenden Konfigurationszeilen hinzu, mit denen Lighttpd so konfiguriert wird, dass PHP-Dateien mit FastCGI und PHP-FPM bereitgestellt werden:

/usr/local/etc/lighttpd/conf.d/fastcgi.conf

...
fastcgi.server += ( ".php" =>
       ((
               "socket" => "/var/run/php-fpm.sock",
               "broken-scriptfilename" => "enable"
       ))
)
...

Aktivieren Sie als Nächstes Lighttpd, um beim Booten zu starten. So startet Lighttpd automatisch, wenn der Webserver neu gestartet wird:

sudo sysrc lighttpd_enable=yes

Starten Sie dann den Dienst + lighttpd +:

sudo service lighttpd start

Nachdem PHP nun betriebsbereit ist, stellen wir sicher, dass alles funktioniert.

Schritt 5 - Testen des Server-Setups

Um den neu konfigurierten Lighttpd-Server zu testen, erstellen Sie zunächst den Ordner "+ / usr / local / www / data +", in dem Lighttpd nach Webseiten sucht, die bereitgestellt werden sollen.

sudo mkdir -p /usr/local/www/data

Dann erstellen Sie eine "+ info.php " im Ordner " / usr / local / www / data / +". Diese Datei testet, ob PHP funktioniert, und lässt Sie Informationen zum Webserver-Setup in einem Webbrowser überprüfen:

sudo ee /usr/local/www/data/info.php

Fügen Sie diesen Code zur Datei hinzu:

/usr/local/www/data/info.php

<?php phpinfo(); ?>

Speichern Sie die Datei und beenden Sie den Editor.

Besuchen Sie "+ http: /// info.php +" in Ihrem Webbrowser. Sie sehen eine Seite, die so aussieht:

Auf dieser Seite finden Sie Informationen zu Ihrem Betriebssystem, Webserver und zum Umgang Ihres Webservers mit PHP-Dateien. Es wird auch überprüft, ob Ihr Webserver PHP-Dateien korrekt bereitstellen kann.

Wenn Sie diese Seite nicht sehen und stattdessen * Fehler 503 Dienst nicht verfügbar * sehen, stellen Sie sicher, dass der Dienst + php-fpm + im vorherigen Schritt korrekt gestartet wurde.

Sobald Sie überprüft haben, dass die Dinge funktionieren, entfernen Sie die Seite "+ info.php +", da sie Informationen über Ihren Server enthält, die Sie für sich behalten sollten:

sudo rm /usr/local/www/data/info.php

Der Webserver ist jetzt vollständig konfiguriert und betriebsbereit. Platzieren Sie Ihre Dateien in + / usr / local / www / data +, um sie bereitzustellen.

Fazit

Jetzt, da der Lighttpd-Webserver voll funktionsfähig ist, können Sie Webseiten, Dokumente und andere Dateien auf Ihrem Webserver hosten. Verbessern Sie die Sicherheit Ihres Webservers durch Hinzufügen einer SSL-Konfiguration und anderer Sicherheitsfunktionen. Weitere Informationen zu Lighttpd finden Sie in den Lighttpd-Foren.