FEMP-Stack · 11 min read · Jan 26, 2026
Installieren von Nginx, MariaDB und PHP (FEMP-Stack) auf FreeBSD 11
In diesem Tutorial werde ich den Prozess der Installation und Konfiguration des FEMP-Stacks auf FreeBSD 11.x beschreiben. Der FEMP-Software-Stack ist ein Akronym, das für eine Gruppe von Programmen steht, die normalerweise in Unix/Linux-Betriebssystemen installiert werden und hauptsächlich zum Bereitstellen dynamischer Webanwendungen verwendet werden. In diesem Fall bezieht sich das FEMP-Akronym auf das Unix-ähnliche Betriebssystem FreeBSD, auf dem diese Anwendungen installiert sind:
- Nginx Webserver, der ein schnell wachsender, beliebter Webserver ist, der hauptsächlich zum Bereitstellen von HTML-Inhalten verwendet wird, aber auch Lastverteilung, hohe Verfügbarkeit oder Reverse-Proxy für einen Webserver oder andere Netzwerkdienste bieten kann.
- PHP dynamischer Programmiersprachen-Interpreter, der im Backend verwendet wird, um Datenbanken zu manipulieren und dynamische Webinhalte zu erstellen, die in einfaches HTML eingebunden werden können. PHP-Skripte werden nur auf der Serverseite ausgeführt, niemals auf der Clientseite (in Browsern).
- MariaDB\MySQL RDBMS, in dem die Daten im Backend gespeichert werden, während die dynamische Verarbeitung von PHP übernommen wird. In diesem Tutorial werden wir das relationale Datenbankmanagementsystem MariaDB installieren und verwenden, einen Community-Fork von MySQL, zugunsten der MySQL-Datenbank, die jetzt von Oracle besessen und entwickelt wird.
ANFORDERUNGEN:
- Eine minimale Installation von FreeBSD 11.x.
- Eine statische IP-Adresse, die für eine Netzwerkschnittstelle konfiguriert ist.
- Ein reguläres Konto mit Root-Rechten oder direkter Zugriff auf das System über das Root-Konto.
- Vorzugsweise ein öffentlich registrierter Domainname, der mit den minimalen DNS-Einträgen (A- und CNAME-Einträgen) konfiguriert ist.
Schritt 1 – Installieren der MariaDB-Datenbank
Im ersten Schritt werden wir das MariaDB-Datenbanksystem installieren, das die FEMP-Komponente ist, die zum Speichern und Verwalten der dynamischen Daten der Website verwendet wird. MariaDB/MySQL ist eine der am häufigsten verwendeten Open-Source- relationalen Datenbanken der Welt in Verbindung mit Nginx oder Apache-Webserver. Beide Server werden häufig zum Erstellen und Entwickeln komplexer Webanwendungen oder dynamischer Websites verwendet. MariaDB kann in FreeBSD direkt aus den von den PORTS-Repositories bereitgestellten Binärdateien installiert werden. Eine einfache Suche mit dem ls-Befehl im Abschnitt FreeBSD Ports-Datenbanken zeigt mehrere Versionen von MariaDB, wie im folgenden Befehlsausgang dargestellt. Auch das Ausführen des Paketmanagers pkg-Befehls zeigt die gleichen Ergebnisse an.
ls -al /usr/ports/databases/ | grep mariadbpkg search mariadb
In diesem Leitfaden werden wir die neueste Version der MariaDB-Datenbank und des Clients installieren, indem wir den pkg-Befehl verwenden, wie im folgenden Auszug dargestellt.
pkg install mariadb102-server mariadb102-clientNachdem MariaDB auf dem System installiert wurde, geben Sie den folgenden Befehl ein, um den MySQL-Server systemweit zu aktivieren. Stellen Sie außerdem sicher, dass Sie den MariaDB-Daemon wie unten gezeigt starten.
sysrc mysql_enable="YES"service mysql-server startAls Nächstes müssen wir die MariaDB-Datenbank sichern, indem wir das Skript mysql_secure_installation ausführen. Während der Ausführung des Skripts werden eine Reihe von Fragen gestellt. Diese Fragen dienen dazu, ein gewisses Maß an Sicherheit für die MySQL-Engine zu bieten, z. B. ein Root-Passwort für den MySQL-Root-Benutzer festzulegen, den anonymen Benutzer zu entfernen, die Remote-Anmeldung für den Root-Benutzer zu deaktivieren und die Testdatenbank zu löschen. Nachdem Sie ein starkes Passwort für den MySQL-Root-Benutzer gewählt haben, antworten Sie mit ja auf alle Fragen, wie im folgenden Beispiel des Skripts dargestellt. Verwechseln Sie den MariaDB-Datenbank-Root-Benutzer nicht mit dem System-Root-Benutzer. Obwohl diese Konten denselben Namen, root, haben, sind sie nicht gleichwertig und werden für unterschiedliche Zwecke verwendet, eines für die Systemadministration und das andere für die Datenbankadministration.
/usr/local/bin/mysql_secure_installationHINWEIS: DAS AUSFÜHREN ALLER TEILE DIESES SKRIPTS WIRD FÜR ALLE MariaDB SERVER IM PRODUKTIONSEINSATZ EMPFOHLEN! BITTE JEDEN SCHRITT SORGFÄLTIG LESEN! Um sich bei MariaDB anzumelden, um es zu sichern, benötigen wir das aktuellePasswort für den Root-Benutzer. Wenn Sie MariaDB gerade installiert haben undSie das Root-Passwort noch nicht festgelegt haben, ist das Passwort leer,Sie sollten hier einfach die Eingabetaste drücken. Geben Sie das aktuelle Passwort für root ein (drücken Sie die Eingabetaste für keines):OK, Passwort erfolgreich verwendet, weiter... Das Festlegen des Root-Passworts stellt sicher, dass niemand ohne die richtige Autorisierung auf den MariaDBRoot-Benutzer zugreifen kann.Root-Passwort festlegen? [Y/n]y
Neues Passwort:Neues Passwort erneut eingeben:Passwort erfolgreich aktualisiert!Privilegientabellen werden neu geladen.. ... Erfolg!Standardmäßig hat eine MariaDB-Installation einen anonymen Benutzer, der es jedem ermöglicht,auf MariaDB zuzugreifen, ohne dass ein Benutzerkonto fürihn erstellt werden muss. Dies ist nur für Testzwecke gedacht und soll die Installationetwas reibungsloser gestalten. Sie sollten sie entfernen, bevor Sie in eineProduktionsumgebung wechseln.Anonyme Benutzer entfernen? [Y/n]y
... Erfolg!Normalerweise sollte root nur von 'localhost' aus eine Verbindung herstellen dürfen. Diesstellt sicher, dass jemand das Root-Passwort nicht über das Netzwerk erraten kann.Remote-Login für root deaktivieren? [Y/n]y
... Erfolg!Standardmäßig kommt MariaDB mit einer Datenbank namens 'test', auf die jeder zugreifen kann. Diesist ebenfalls nur für Testzwecke gedacht und sollte entfernt werden,bevor Sie in eine Produktionsumgebung wechseln.Testdatenbank und Zugriff darauf entfernen? [Y/n]y
- Testdatenbank wird gelöscht... ... Erfolg! - Berechtigungen für die Testdatenbank werden entfernt... ... Erfolg!Das Neuladen der Berechtigungstabellen stellt sicher, dass alle bisher vorgenommenen Änderungensofort wirksam werden.Berechtigungstabellen jetzt neu laden? [Y/n]y**
... Erfolg!Aufräumen...Alles erledigt! Wenn Sie alle oben genannten Schritte abgeschlossen haben, sollte Ihre MariaDB-Installation jetzt sicher sein.Danke, dass Sie MariaDB verwenden!Schließlich, nachdem Sie die MariaDB-Datenbank gesichert haben, testen Sie, ob Sie sich lokal mit dem Root-Konto bei der Datenbank anmelden können, indem Sie den folgenden Befehl ausführen. Sobald Sie mit der Datenbankaufforderung verbunden sind, geben Sie einfach quit oder exit ein, um die Datenbankkonsole zu verlassen und zur Systembenutzerkonsole zurückzukehren, wie im folgenden Screenshot dargestellt.
mysql -u root -p*MariaDB> quit***
Der Befehl sockstat in FreeBSD zeigt schnell, dass MariaDB für externe Netzwerkverbindungen geöffnet ist und von jedem Netzwerk über den Port 3306/TCP remote zugegriffen werden kann.
sockstat -4 -6
Um remote Netzwerkverbindungen zu MariaDB vollständig zu deaktivieren, müssen Sie den MySQL-Netzwerksocket zwingen, sich nur an die Loopback-Schnittstelle zu binden, indem Sie die folgende Zeile zur Datei /etc/rc.conf mit dem folgenden Befehl hinzufügen.
sysrc mysql_args="--bind-address=127.0.0.1"Starten Sie anschließend den MariaDB-Daemon neu, um die Änderungen anzuwenden, und führen Sie den Befehl sockstat erneut aus, um den Netzwerksocket für den MySQL-Dienst anzuzeigen. Diesmal sollte der MariaDB-Dienst nur auf dem Socket localhost:3306 auf Netzwerkverbindungen hören.
service mysql-server restartsockstat -4 -6|grep mysql
Wenn Sie eine remote Webanwendung entwickeln, die Zugriff auf die Datenbank auf diesem Computer benötigt, setzen Sie die bisher vorgenommenen Änderungen am MySQL-Socket zurück, indem Sie die Zeile mysql_args=”–bind-address=127.0.0.1” aus der Datei /etc/rc.conf entfernen oder auskommentieren und die Datenbank neu starten, um die Änderungen zu übernehmen. In diesem Fall sollten Sie andere Alternativen in Betracht ziehen, um den remote Zugriff auf MySQL zu begrenzen oder zu verweigern, z. B. das lokale Ausführen einer Firewall und das Filtern der IP-Adressen von Clients, die sich remote anmelden müssen, oder das Erstellen von MySQL-Benutzern mit den entsprechenden IP-Adressen, um sich beim Server anzumelden.
Schritt 2 – Installieren des Nginx-Webservers
Der nächste wichtige Daemon, den wir in FreeBSD für unseren FEMP-Stack installieren werden, ist der Webserver, der durch den Nginx-Dienst dargestellt wird. Der Prozess der Installation des Nginx-Webservers in FreeBSD ist ziemlich unkompliziert. Der Nginx-Webserver kann aus den von FreeBSD 11.x Ports bereitgestellten Binärdateien installiert werden. Eine einfache Suche durch die Ports-Repositories im www-Bereich kann eine Liste der vorcompilierten Versionen anzeigen, die für die Nginx-Software verfügbar sind, wie im folgenden Befehlsauszug dargestellt.
ls /usr/ports/www/ | grep nginxDas Ausführen des Paketverwaltungsbefehls kann die gleichen Ergebnisse anzeigen, wie im folgenden Bild dargestellt.
pkg search –o nginx
Um die gängigste Version von Nginx in FreeBSD zu installieren, führen Sie den folgenden Befehl aus. Während der Installation des Binärpakets wird der Paketmanager Sie fragen, ob Sie mit dem Herunterladen und Installieren des Nginx-Pakets einverstanden sind. Normalerweise sollten Sie das Wort ja oder y in der Eingabeaufforderung eingeben, um den Installationsprozess zu starten. Um die Eingabeaufforderung zu vermeiden, fügen Sie das –y-Flag hinzu, während Sie den Befehl ausführen: pkg –y install nginx.
pkg install nginx
Nachdem die Nginx-Webserver-Software auf Ihrem System installiert wurde, sollten Sie den Dienst aktivieren und ausführen, indem Sie die folgenden Befehle ausführen.
sysrc nginx_enable="yes"service nginx startSie können den Befehl sockstat ausführen, um zu überprüfen, ob der Nginx-Dienst auf Ihrem System gestartet wurde und an welchen Netzwerksockets er gebunden ist. Normalerweise sollte er standardmäßig an :80 TCP-Socket gebunden sein. Sie können den grep-Befehlszeilenfilter verwenden, um nur die Sockets anzuzeigen, die mit dem *nginx-Server übereinstimmen.
sockstat -4 -6 | grep nginxUm die Standardwebseite von Nginx zu besuchen, öffnen Sie einen Browser auf einem Computer in Ihrem Netzwerk und navigieren Sie zur IP-Adresse Ihres Servers über das HTTP-Protokoll. Falls Sie einen Domainnamen registriert haben oder einen lokalen DNS-Server in Ihrer Umgebung verwenden, können Sie den vollqualifizierten Domainnamen Ihres Computers oder den Domainnamen im URI-Feld des Browsers eingeben. Eine Titelmeldung mit dem Text “Willkommen bei nginx!” zusammen mit einigen HTML-Zeilen sollte in Ihrem Browser angezeigt werden, wie im folgenden Screenshot dargestellt.

Der Speicherort, an dem Webdateien für Nginx in FreeBSD 11.x gespeichert werden, ist das Verzeichnis /usr/local/www/nginx/. Dieses Verzeichnis ist ein symbolischer Link zum Verzeichnis nginx-dist. Um eine Website bereitzustellen, kopieren Sie die HTML- oder PHP-Skriptdateien in dieses Verzeichnis. Um das Standardverzeichnis Webroot von Nginx zu ändern, öffnen Sie die Nginx-Konfigurationsdatei aus dem Verzeichnis /usr/local/etc/nginx/ und aktualisieren Sie die root-Anweisung wie im folgenden Beispiel dargestellt.
nano /usr/local/etc/nginx/nginx.confDies wird der neue Webroot-Pfad für Nginx sein:
*root /usr/local/www/new_html_directory;*
Schritt 3 – Installieren der PHP-Programmiersprache
Standardmäßig kann der Nginx-Webserver PHP-Skripte nicht direkt parsen, Nginx muss den PHP-Code über das FastCGI-Gateway an den PHP-FPM-Daemon weiterleiten, der die PHP-Skripte interpretiert und ausführt. Um den PHP-FPM-Daemon in FreeBSD zu installieren, suchen Sie nach verfügbaren vorcompilierten PHP-Binärpaketen, indem Sie die folgenden Befehle ausführen.
ls /usr/ports/lang/ | grep phppkg search –o phpAus der Vielzahl der in den FreeBSD-Ports-Repositories verfügbaren PHP-Versionen wählen Sie die neueste Version des PHP-Interpreters aus, derzeit die PHP 7.1-Version, indem Sie den folgenden Befehl ausführen.
pkg install php71Um einige zusätzliche PHP-Erweiterungen zu installieren, die möglicherweise für die Bereitstellung komplexer Webanwendungen benötigt werden, führen Sie den folgenden Befehl aus. Eine Liste der offiziell unterstützten PHP-Erweiterungen finden Sie unter folgendem Link: http://php.net/manual/en/extensions.alphabetical.php
Wenn Sie planen, eine Website auf der Grundlage eines Content-Management-Systems zu erstellen, überprüfen Sie die CMS-Dokumentation, um die Anforderungen für Ihr System herauszufinden, insbesondere welche PHP-Module oder -Erweiterungen benötigt werden.
php71-mcrypt mod_php71 php71-mbstring php71-curl php71-zlib php71-gd php71-jsonDa wir in unserem Setup einen Datenbankserver ausführen, sollten wir auch die PHP-Datenbanktreibererweiterung installieren, die vom PHP-Interpreter verwendet wird, um eine Verbindung zur MariaDB-Datenbank herzustellen.
pkg install php71-mysqliAls Nächstes aktualisieren Sie den PHP-FPM-Benutzer und die Gruppe, um mit dem Nginx-Laufzeitbenutzer übereinzustimmen, indem Sie die PHP-FPM-Konfigurationsdatei bearbeiten. Ändern Sie die Benutzer- und Gruppenvariablen in www, wie im folgenden Auszug dargestellt.
cp /usr/local/etc/php-fpm.d/www.conf{,.backup}nano /usr/local/etc/php-fpm.d/www.confÄndern Sie die folgenden Zeilen, damit sie wie folgt aussehen.
user = www
group = www**
Standardmäßig läuft der Nginx-Daemon mit den Rechten des Systembenutzers ‘nobody‘. Ändern Sie den Nginx-Laufzeitbenutzer, um mit dem PHP-FPM-Laufzeitbenutzer übereinzustimmen, indem Sie die Datei /usr/local/etc/nginx/nginx.conf bearbeiten und die folgende Zeile aktualisieren:
user www;
Standardmäßig öffnet der PHP-FPM-Daemon in FreeBSD einen Netzwerksocket auf localhost:9000 TCP-Port im Wartestatus. Um diesen Socket anzuzeigen, können Sie den Befehl sockstat verwenden, wie im folgenden Beispiel gezeigt.
sockstat -4 -6| grep php-fpm
Damit der Nginx-Webserver PHP-Skripte mit dem PHP-FastCGI-Gateway über den Netzwerksocket 127.0.0.1:9000 austauschen kann, öffnen Sie die Nginx-Konfigurationsdatei und aktualisieren Sie den PHP-FPM-Block wie im folgenden Beispiel dargestellt.
PHP-FastCGI-Gateway-Beispiel für Nginx:
location ~ \.php$ {
root /usr/local/www/nginx;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
Nachdem Sie alle oben genannten Änderungen vorgenommen haben, erstellen Sie eine Konfigurationsdatei für PHP basierend auf der Standardproduktionsdatei, indem Sie den folgenden Befehl ausführen. Sie können die PHP-Laufzeiteinstellungen ändern, indem Sie die Variablen in der php.ini-Datei bearbeiten.
ln -s /usr/local/etc/php.ini-production /usr/local/etc/php.iniSchließlich, um alle bisher vorgenommenen Änderungen anzuwenden, aktivieren Sie den PHP-FPM-Daemon systemweit und starten Sie die PHP-FPM- und Nginx-Dienste neu, indem Sie die folgenden Befehle ausführen.
sysrc php_fpm_enable=yesservice php-fpm restartTesten Sie die Nginx-Konfigurationen auf Syntaxfehler:
ginx –t service nginx restart
Um die aktuellen PHP-Informationen für Ihren FEMP-Stack in FreeBSD zu erhalten, erstellen Sie eine phpinfo.php-Datei in Ihrem Server-Dokumentstammverzeichnis, indem Sie den folgenden Befehl ausführen.
echo "" | tee /usr/local/www/nginx/phpinfo.phpÖffnen Sie dann einen Browser und navigieren Sie zur phpinfo.php-Seite, indem Sie den Domainnamen oder die öffentliche IP-Adresse Ihres Servers gefolgt von der /phpinfo.php-Datei besuchen, wie im folgenden Screenshot dargestellt.

Das ist alles! Sie haben erfolgreich den FEMP-Stack in FreeBSD 11 installiert und konfiguriert. Die Umgebung ist jetzt bereit und voll funktionsfähig, um dynamische Webanwendungen in Ihren Räumlichkeiten bereitzustellen.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.