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.

Referenz

Das könnte dich auch interessieren …