Nginx, MariaDB und PHP (FEMP-Stack) auf FreeBSD 12 installieren
Ein FEMP-Stack (FreeBSD, Nginx, MySQL/MariaDB, PHP) ist eine Gruppe von Anwendungen, die dynamische Websites und Webanwendungen hosten können, insbesondere PHP-basierte Anwendungen. Der FEMP Stack ähnelt dem LEMP Stack in der Linux-Welt und basiert auf denselben Anwendungen: Nginx als Webserver, MySQL/MariaDB als Datenbank und PHP als Verarbeitungssprache für Anwendungen.
Dieses Tutorial zeigt dir, wie du den FEMP Stack auf FreeBSD 12.0 einrichtest. Wir installieren den Nginx-Webserver, installieren die MariaDB-Datenbank, konfigurieren ihr Root-Passwort und installieren und konfigurieren dann die neueste Version von PHP-FPM 7.3.
Voraussetzung
Für diese Anleitung verwenden wir die neueste Version von FreeBSD 12.0 mit 1 GB RAM und 2 CPUs. Du brauchst Root-Rechte, um neue Pakete zu installieren und die Systemdateien zu konfigurieren.
Was wir tun werden:
- Pakete aktualisieren und aufrüsten
- Nginx Webserver installieren
- Installiere und konfiguriere die MariaDB Datenbank
- PHP-FPM 7.3 installieren und konfigurieren
- Nginx-Webserver und PHP-FPM 7.3 konfigurieren
- Testen von
Schritt 1 – Update und Upgrade der Pakete
Als Erstes aktualisieren wir das FreeBSD-Paket-Repository und bringen alle installierten Pakete auf den neuesten Stand.
Aktualisiere das FreeBSD Repository und aktualisiere alle Pakete mit dem unten stehenden pkg Befehl.
pkg update pkg upgrade
Sobald die Installation abgeschlossen ist, kannst du mit dem nächsten Schritt fortfahren.
Schritt 2 – Nginx Webserver installieren
In diesem Schritt installieren wir den Nginx-Webserver aus dem offiziellen FreeBSD-Repository. Anschließend fügen wir den Nginx-Dienst zum Startzeitpunkt hinzu und starten ihn.
Installiere Nginx mit dem unten stehenden pkg-Befehl.
pkg install nginx
Sobald die Installation abgeschlossen ist, füge den Nginx-Dienst zum Systemstart hinzu.
sysrc nginx_enable=yes
Starte dann den Nginx-Webserver und überprüfe den Dienst.
service nginx start service nginx status
Der Nginx-Webserver läuft auf dem FreeBSD 12.0-System.
Überprüfe die Liste der geöffneten Ports auf dem System und stelle sicher, dass der HTTP-Port 80 darauf zu finden ist.
sockstat -4 -l -P tcp
Unten siehst du das Ergebnis.
Schritt 3 – MariaDB installieren und konfigurieren
In diesem Schritt installieren wir die MariaDB-Datenbank aus dem FreeBSD-Repository und konfigurieren die Authentifizierung für das root-Passwort.
Das FreeBSD Repository bietet mehrere MariaDB-Versionen an, die du mit folgendem Befehl überprüfen kannst.
pkg search mariadb
Jetzt erhältst du die verschiedenen Versionen der MariaDB-Datenbank.
Installiere nun die neueste Version des Pakets „mariadb103“ sowohl für die Client- als auch für die Server-Pakete mit dem unten stehenden pkg-Befehl.
pkg install mariadb103-server mariadb103-client
Sobald die Installation abgeschlossen ist, füge den MariaDB/MySQL-Dienst zum Systemstart hinzu.
sysrc mysql_enable="yes"
Starte dann den MariaDB/MySQL-Dienst und überprüfe seinen Status mit dem unten stehenden Befehl.
service mysql-server start service mysql-server status
Jetzt erhältst du das unten stehende Ergebnis.
Die MariaDB-Datenbank ist auf dem FreeBSD 12.0-System eingerichtet und läuft.
Als Nächstes konfigurieren wir die Root-Passwort-Authentifizierung für die MariaDB-Datenbank mit dem Bash-Kommandozeilen-Tool „mysql_secure_installation“.
Führe den Befehl „mysql_secure_installation“ aus.
/usr/local/bin/mysql_secure_installation
Du wirst nach verschiedenen Fragen gefragt, gib einfach „Y“ für „Ja“ ein und drücke die „Enter“-Taste.
Set root password? [Y/n] Y TYPE YOUR ROOT PASSWORD
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
Damit ist die Root-Passwort-Authentifizierung für die MariaDB-Datenbank eingerichtet.
Als Nächstes melden wir uns mit dem Passwort in der MariaDB/MySQL-Shell an und überprüfen die Datenbanklisten und Benutzer.
Melde dich mit folgendem Befehl in der MySQL-Shell an.
mysql -u root -p TYPE PASSWORD:
Sobald du dich in der Shell angemeldet hast, überprüfe die Datenbankliste und die Benutzer mit den unten stehenden MySQL-Abfragen.
show databases; select User, Host, Password from mysql.user;
Du erhältst dann das unten stehende Ergebnis.
Damit kannst du dich mit dem konfigurierten Passwort bei deinem MariaDB/MySQL-Server anmelden.
Schritt 4 – PHP-FPM 7.3 installieren und konfigurieren
In diesem Schritt installieren wir die Pakete PHP und PHP-FPM 7.3 auf dem FreeBSD 12.0 System. Anschließend konfigurieren wir die globale PHP-Konfiguration „php.ini“ und die PHP-FPM-Konfigurationsdatei „www.conf“.
Installiere die PHP- und PHP-FPM-Pakete mit dem unten stehenden pkg-Befehl.
pkg install php73 php73-mysqli php73-zlib php73-gd php73-json php73-mbstring php73-curl
Sobald die Installation abgeschlossen ist, gehe in das Verzeichnis „/usr/local/etc“ und kopiere die Konfigurationsdatei „php.ini-production“ nach „php.ini“.
cd /usr/local/etc/ cp php.ini-production php.ini
Bearbeite nun die Datei „php.ini“ mit dem Editor vim.
vim php.ini
Entferne den Kommentar in der Zeile „cgi.fix_pathinfo“ und ändere den Wert auf „0“.
cgi.fix_pathinfo=0
Speichern und schließen.
Als Nächstes bearbeiten wir die PHP-FPM-Konfigurationsdatei „www.conf“ und konfigurieren den PHP-FPM für den Betrieb an UNIX-Dateisockets.
Gehe in das Verzeichnis „cd /usr/local/etc/php-fpm.d“ und bearbeite die Konfigurationsdatei „www.conf“ mit dem Editor vim.
vim php-fpm.d/www.conf
Ändere die Zeilen „user“ und „group“ mit „www“.
user = www group = www
Ändere den Wert in der Zeile „listen“ in die UNIX-Socket-Datei „/var/run/php-fpm.sock“.
listen = /var/run/php-fpm.sock
Entferne das Kommentarzeichen in der listen-Zeile für Eigentümer, Gruppe und Modus der Socket-Datei. Belasse den Wert als Standard.
listen.owner = www listen.group = www listen.mode = 0660
Gehe nun zum Ende der Zeile und entferne die Kommentare zur PHP-Umgebungskonfiguration wie unten angegeben.
env[HOSTNAME] = $HOSTNAME env[PATH] = /usr/local/bin:/usr/bin:/bin env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp
Speichere und schließe.
Als Nächstes fügst du den PHP-FPM-Dienst zu den Systemstarts hinzu.
sysrc php_fpm_enable=yes
Starte dann den PHP-FPM-Dienst und überprüfe seinen Status.
service php-fpm start service php-fpm status
Jetzt ist der PHP-FPM-Dienst auf dem FreeBSD 12.0-System eingerichtet und läuft.
Überprüfe den PHP-FPM, indem du seinen UNIX-Socket mit dem unten stehenden Befehl sockstat überprüfst.
sockstat -u | grep php-fpm
Das Ergebnis wird dir wie folgt angezeigt.
Der PHP-FPM-Dienst läuft also auf der UNIX-Socket-Datei unter dem Benutzer „www“.
Schritt 5 – Nginx und PHP-FPM konfigurieren
Jetzt konfigurieren wir den Nginx-Webserver und PHP-FPM.
Gehe in das Verzeichnis „/usr/local/etc/nginx“ und bearbeite die Datei „nginx.conf“ mit dem Editor vim.
cd /usr/local/etc/nginx vim nginx.conf
Ändere den nginx „user“, der als „www“ läuft, und die „worker_processes“ mit der Nummer deines Server-Prozessors.
user www; worker_processes 2;
Innerhalb der ‚http { … }‘ definierst du Nginx-Logs für Zugriffs- und Fehlerprotokolle.
http { ... error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; ... }
Wechsle nun zur Klammerkonfiguration „server { … }“ und ändere den „server_name“ mit deiner Domain oder Server-IP-Adresse.
.... server { server_name SERVER-IP;
Lege das Web-Root-Verzeichnis und die Indexdatei fest.
root /usr/local/www/nginx; index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
Füge nun die folgende Konfiguration ein, damit der PHP-FPM mit dem Nginx-Webserver zusammenarbeitet.
location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include fastcgi_params; }
Speichere und schließe.
Unten siehst du die vollständige Konfiguration der Datei „nginx.conf“.
user www; worker_processes 2; pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; root /usr/local/www/nginx; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/local/www/nginx-dist; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include fastcgi_params; } } }
Als Nächstes legen wir das Nginx-Dokumentenstammverzeichnis „/usr/local/www/nginx“ an und erstellen die Datei index.html.
Entferne das Standard-Symlink-Verzeichnis „/usr/local/www/nginx“ und erstelle ein weiteres Verzeichnis.
unlink /usr/local/www/nginx mkdir -p /usr/local/www/nginx
Gehe nun in das Verzeichnis ‚/usr/local/www‘ und kopiere die Standarddatei ‚index.html‘ aus dem Verzeichnis ’nginx-dist‘.
cd /usr/local/www/ cp nginx-dist/index.html nginx/
Erstelle dann eine neue PHP-Datei „info.php“ im neuen Web-Stammverzeichnis.
vim nginx/info.php
<?php phpinfo(); ?>
Speichern und schließen.
Teste nun die Nginx-Konfiguration und vergewissere dich, dass kein Fehler auftritt, dann starte den Nginx-Dienst neu.
nginx -t service nginx restart
Das Ergebnis wird dir wie folgt angezeigt.
Das Ergebnis: Die Nginx-Konfiguration ist fehlerfrei und der Dienst wurde neu gestartet. Die Konfiguration von Nginx und PHP-FPM 7.3 ist nun abgeschlossen.
Schritt 6 – Testen
Öffne deinen Webbrowser und gib die IP-Adresse des Servers in die Adressleiste ein.
http://10.5.5.25/
Du erhältst die standardmäßige Nginx inde.html Seite wie unten.
Als Nächstes werden wir unsere Nginx- und PHP-FPM-Konfiguration testen, indem wir die Datei „info.php“ aufrufen.
http://10.5.5.25/info.php
Jetzt erhältst du einige Informationen über deine PHP-Installation und -Konfiguration.
Damit ist die Installation und Konfiguration des FEMP Stack auf FreeBSD 12.0 erfolgreich abgeschlossen.