Installieren Sie Nginx, MariaDB und PHP (FEMP-Stack) unter FreeBSD 11

In diesem Tutorial werde ich den Prozess der Installation und Konfiguration des FEMP-Stacks unter FreeBSD 11.x beschreiben. Der FEMP-Software-Stack ist ein Akronym, das für eine Gruppe von Programmen steht, die normalerweise unter Unix/Linux-Betriebssystemen installiert werden und hauptsächlich für die Bereitstellung dynamischer Webanwendungen verwendet werden. In diesem Fall bezieht sich das FEMP-Akronym auf das Unix-ähnliche Betriebssystem von FreeBSD, auf dem diese Anwendungen installiert sind:

  • Nginx Webserver, ein schnell wachsender populärer Webserver, der hauptsächlich für die Bereitstellung von HTML-Inhalten verwendet wird, kann aber auch Load-Balancing, Hochverfügbarkeit oder Reverse-Proxy für einen Webserver oder für andere Netzwerkdienste bieten.
  • PHP dynamischer Programmierspracheninterpreter, der im Backend verwendet wird, um Datenbankdaten 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 Client-Seite (in Browsern).
  • Mariadb\MySQL RDBMS, in dem die Daten gespeichert werden, während die dynamische Verarbeitung von PHP übernommen wird. In diesem Tutorial installieren und verwenden wir das MariaDB relationale Datenbankmanagementsystem, eine Community-Gabel von MySQL, zugunsten der MySQL-Datenbank, die jetzt im Besitz von Oracle ist und von Oracle entwickelt wurde.

ANFORDERUNGEN:

  • Eine minimale Installation von FreeBSD 11.x.
  • Eine statische IP-Adresse, die für eine Netzwerkschnittstelle konfiguriert ist.
  • Ein reguläres Konto, das mit Root-Rechten oder direktem Zugriff auf das System über Root-Konto konfiguriert ist.
  • Vorzugsweise ein öffentlich registrierter Domainname, der mit den minimalen DNS-Einträgen (A- und CNAME-Einträge) konfiguriert ist.

Schritt 1 – MariaDB Datenbank installieren

Im ersten Schritt installieren wir das Datenbanksystem MariaDB, das die FEMP-Komponente ist, die für die Speicherung und Verwaltung der dynamischen Daten der Website verwendet wird. MariaDB/MySQL ist eine der am häufigsten verwendeten Open-Source-Relationsdatenbanken der Welt in Verbindung mit Nginx- oder Apache-Webservern. Beide Server sind sehr gut für die Erstellung und Entwicklung komplexer Webanwendungen oder dynamischer Websites geeignet. MariaDB kann in FreeBSD direkt aus den Binärdateien der PORTS-Repositories installiert werden. Eine einfache Suche mit dem Befehl ls im Abschnitt FreeBSD Ports-Datenbanken zeigt jedoch mehrere Versionen von MariaDB, wie die folgende Befehlsausgabe zeigt. Auch die Ausführung des Befehls Package Manager pkg zeigt die gleichen Ergebnisse an.

ls -al /usr/ports/databases/ | grep mariadb
pkg search mariadb

MariaDB-Versionen für FreeBSD 11 verfügbar

In diesem Handbuch installieren wir die neueste Version der MariaDB-Datenbank und des Clients mit dem Befehl pkg, wie im folgenden Auszug gezeigt.

pkg install mariadb102-server mariadb102-client

Nachdem MariaDB die Installation im System abgeschlossen hat, 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 start

Als nächstes müssen wir die MariaDB-Datenbank sichern, indem wir das mysql_secure_installationsskript ausführen. Während der Ausführung des Skripts werden uns eine Reihe von Fragen gestellt. Diese Fragen dienen dazu, ein Sicherheitsniveau für die MySQL-Engine zu schaffen, wie z.B. ein Root-Passwort für den MySQL-Root-Benutzer einzurichten, 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 veranschaulicht. Verwechseln Sie den MariaDB-Datenbank-Rootuser nicht mit dem System-Rootuser. Obwohl diese Konten den gleichen Namen und die gleiche Wurzel haben, sind sie nicht gleichwertig und werden für verschiedene Zwecke verwendet, eines für die Systemadministration und das andere für die Datenbankadministration.

/usr/local/bin/mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
 ... Success!
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
 ... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
 ... Success!
Cleaning up...
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

Nachdem Sie mit der Sicherung der MariaDB-Datenbank fertig sind, testen Sie schließlich, ob Sie über das Root-Konto eine lokale Anmeldung an der Datenbank durchführen dürfen, indem Sie den folgenden Befehl ausführen. Sobald Sie mit der Datenbankeingabeaufforderung verbunden sind, geben Sie einfach quit oder exit ein, um die Datenbankkonsole zu verlassen und zur Eingabeaufforderung der Systembenutzeroberfläche zurückzukehren, wie im folgenden Screenshot gezeigt.

mysql -u root -p
MariaDB> quit

Testen Sie die MariaDB-Datenbankanmeldung.

Die Ausführung des sockstat-Befehls in FreeBSD zeigt schnell, dass MariaDB für externe Netzwerkverbindungen geöffnet ist und von jedem Netzwerk aus über den 3306/TCP-Port ferngesteuert werden kann.

sockstat -4 -6

MariaDB-Socket und Port überprüfen

Um Remote-Netzwerkverbindungen zu MariaDB vollständig zu deaktivieren, müssen Sie den mysql-Netzwerk-Socket zwingen, sich an den Loopback nur durch Hinzufügen der folgenden Zeile zur Datei /etc/rc.conf mit dem folgenden Befehl.

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 Netzwerk-Socket für den mysql-Dienst anzuzeigen. Diesmal sollte der MariaDB-Dienst nur auf Netzwerkverbindungen auf dem localhost:3306 Socket warten.

service mysql-server restart
sockstat -4 -6|grep mysql

MariDB ist an die Localhost-Schnittstelle angebunden.

Wenn Sie eine Remote-Webanwendung entwickeln, die Zugriff auf die Datenbank auf diesem Computer benötigt, kehren Sie die bisher vorgenommenen Änderungen am MySQL-Socket um, indem Sie die Zeile mysql_args=“–bind-address=127.0.0.0.0.1″. aus der Datei /etc/rc.conf und den Neustart der Datenbank, um Änderungen zu berücksichtigen. In diesem Fall sollten Sie andere Alternativen in Betracht ziehen, um den Fernzugriff auf MySQL einzuschränken oder zu unterbinden, wie z.B. den lokalen Betrieb einer Firewall und den Filter der IP-Adressen von Clients, die eine Fernzugriff benötigen, oder die Erstellung von MySQL-Benutzern mit den richtigen IP-Adressen, die für die Anmeldung am Server berechtigt sind.

Schritt 2 – Nginx Web Server installieren

Der nächste wichtige Daemon, den wir in FreeBSD für unseren FEMP-Stapel installieren werden, ist der Webserver, dargestellt durch den Nginx-Dienst. Der Prozess der Installation des Nginx-Webservers unter FreeBSD ist ziemlich einfach. Der Nginx-Webserver kann von den Binärdateien der FreeBSD 11.x Ports installiert werden. Eine einfache Suche durch Ports-Repositorys im Abschnitt www kann eine Liste der vorkompilierten Versionen anzeigen, die für Nginx-Software verfügbar sind, wie im folgenden Befehlsauszug gezeigt.

ls /usr/ports/www/ | grep nginx

Die Ausgabe des Befehls package management kann die gleichen Ergebnisse anzeigen, wie im unteren Bild gezeigt.

pkg search –o nginx

Nginx-Versionen unter FreeBSD auflisten

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 fragt Sie der Paketmanager, ob Sie mit dem Herunterladen und der Installation des Nginx-Pakets einverstanden sind. Normalerweise sollten Sie das Wort yes oder y in die Eingabeaufforderung eingeben, um den Installationsprozess zu starten. Um die Eingabeaufforderung zu vermeiden, fügen Sie bei der Ausführung des Befehls: pkg -y install nginx das Flag -y hinzu.

pkg install nginx

Nginx unter FreeBSD installieren

Nachdem die Nginx-Webserversoftware 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 start

Nginx-Dienst starten

Sie können den Befehl sockstat ausführen, um zu überprüfen, ob der Nginx-Dienst auf Ihrem System gestartet ist und auf welchen Netzwerk-Sockets er sich verbindet. Normalerweise sollte es standardmäßig auf *:80 TCP Socket binden. Sie können den grep-Befehlszeilenfilter verwenden, um nur die Sockets anzuzeigen, die dem nginx-Server entsprechen.

sockstat -4 -6 | grep nginx

Überprüfen Sie, ob Nginx mit dem Befehl sockstat gestartet wird.

Um die Nginx-Standardwebseite zu besuchen, öffnen Sie einen Browser auf einem Computer in Ihrem Netzwerk und navigieren Sie per HTTP-Protokoll zur IP-Adresse Ihres Servers. Wenn Sie einen Domainnamen registriert haben oder einen lokalen DNS-Server in Ihrem Unternehmen verwenden, können Sie den voll qualifizierten Domainnamen Ihres Rechners oder den Domainnamen in die URI-Datei des Browsers schreiben. In Ihrem Browser sollte eine Titelnachricht mit der Aufschrift „Welcome to nginx!“ neben einigen HTML-Zeilen angezeigt werden, wie im folgenden Screenshot gezeigt.

Nginx Willkommensseite

Der Speicherort, an dem Webdateien für Nginx in FreeBSD 11.x gespeichert werden, ist /usr/local/www/nginx/ directory. 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 standardmäßige Webroot-Verzeichnis von Nginx zu ändern, öffnen Sie die Nginx-Konfigurationsdatei aus dem Verzeichnis /usr/local/etc/nginx/ und aktualisieren Sie die root-Anweisungszeile wie im folgenden Beispiel gezeigt.

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

Dies wird der neue Webroot-Pfad für Nginx sein:

root       /usr/local/www/new_html_directory;

Nginx Web Stammverzeichnis ändern

Schritt 3 – Installation der PHP-Programmiersprache

Standardmäßig kann der Nginx-Webserver PHP-Skripte nicht direkt analysieren, Nginx muss den PHP-Code über das FastCGI-Gateway an den PHP-FPM-Daemon übergeben, der die PHP-Skripte interpretiert und ausführt. Um den PHP-FPM-Daemon unter FreeBSD zu installieren, suchen Sie nach verfügbaren vorkompilierten PHP-Binärpaketen, indem Sie die folgenden Befehle ausführen.

ls /usr/ports/lang/ | grep php
pkg search –o php

Wählen Sie aus der Vielzahl der PHP-Versionen, die in den FreeBSD Ports-Repositorys verfügbar sind, die neueste Version des PHP-Interpreters, aktuell PHP 7.1 Release, durch Ausführen des folgenden Befehls.

pkg install php71

Um einige zusätzliche PHP-Erweiterungen zu installieren, die für die Bereitstellung komplexer Webanwendungen erforderlich sein könnten, geben Sie den folgenden Befehl ein. 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, lesen Sie die CMS-Dokumentation, um die Anforderungen an 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-json

Da wir in unserem Setup einen Datenbankserver betreiben, sollten wir auch die PHP-Datenbanktreiber-Erweiterung installieren, die vom PHP-Interpreter für die Verbindung zur MariaDB-Datenbank verwendet wird.

pkg install php71-mysqli

Aktualisieren Sie anschließend den PHP-FPM-Benutzer und die Gruppe, um den Nginx-Laufzeitbenutzer anzupassen, indem Sie die PHP-FPM-Konfigurationsdatei bearbeiten. Ändern Sie die Variablen für Benutzer- und Gruppenzeilen in www, wie im folgenden Auszug gezeigt.

cp /usr/local/etc/php-fpm.d/www.conf{,.backup}
nano /usr/local/etc/php-fpm.d/www.conf

Ändern Sie die folgenden Zeilen so, dass sie wie folgt aussehen.

user = www
group = www

PHP-Benutzer ändern

Standardmäßig wird der Nginx-Daemon mit den Rechten des Systembenutzers‘nobody‚ ausgeführt. Ändern Sie den Nginx-Laufzeitbenutzer an den PHP-FPM-Laufzeitbenutzer, indem Sie die Datei /usr/local/etc/nginx/nginx/nginx.conf bearbeiten und die folgende Zeile aktualisieren:

user www;

Benutzer www Benutzer www Benutzer

Standardmäßig öffnet der PHP-FPM-Daemon in FreeBSD einen Netzwerk-Socket auf der Basis von localhost:9000 TCP-Port im Listening-Status. Um diesen Socket anzuzeigen, können Sie den Befehl sockstat verwenden, wie im folgenden Beispiel gezeigt.

sockstat -4 -6| grep php-fpm

Überprüfen Sie die php-fpm Buchse.

Damit der Nginx-Webserver PHP-Skripte mit dem PHP FastCGI-Gateway austauschen kann. 127.0.0.1:9000 Netzwerk-Socket, öffnen Sie die Nginx-Konfigurationsdatei und aktualisieren Sie den PHP-FPM-Block wie im folgenden Beispiel gezeigt.

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;
               }

Nginx PHP-Konfiguration

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 in der Datei php.ini vorhandenen Variablen bearbeiten.

ln -s /usr/local/etc/php.ini-production /usr/local/etc/php.ini

Um schließlich alle bisher vorgenommenen Änderungen zu übernehmen, aktivieren Sie den PHP-FPM-Daemon systemweit und starten Sie die PHP-FPM- und Nginx-Dienste durch Ausführen der folgenden Befehle neu.

sysrc php_fpm_enable=yes
service php-fpm restart

Testen Sie nginx-Konfigurationen auf Syntaxfehler:

nginx –t
service nginx restart

Testen Sie die nginx-Syntax und starten Sie nginx neu.

Um die aktuellen PHP-Informationen für Ihren FEMP-Stapel in FreeBSD zu erhalten, erstellen Sie eine phpinfo.php-Datei in Ihrem Root-Verzeichnis für Serverdokumente, indem Sie den folgenden Befehl ausführen.

echo "<?php phpinfo(); ?>" | tee /usr/local/www/nginx/phpinfo.php

Öffnen Sie dann einen Browser und navigieren Sie zur Seite phpinfo.php, indem Sie den Domainnamen Ihres Servers oder die öffentliche IP-Adresse gefolgt von der Datei /phpinfo.php besuchen, wie im folgenden Screenshot gezeigt.

PHPinfo-Ausgabe

Das ist alles! Sie haben den FEMP-Stapel in FreeBSD 11 erfolgreich installiert und konfiguriert. Die Umgebung ist nun bereit und voll funktionsfähig, um mit dem Einsatz dynamischer Webanwendungen in Ihrem Unternehmen zu beginnen.

Das könnte dich auch interessieren …