Website-Suche

So installieren Sie den Nginx-, MariaDB- und PHP (FEMP)-Stack unter FreeBSD


Dieses Tutorial führt Sie durch die Installation und Konfiguration von FBEMP in der neuesten Version von FreeBSD 11.x. FBEMP ist ein Akronym, das die folgende Softwaresammlung beschreibt:

FreeBSD 11.1 Unix-ähnliche Distribution, Nginx-Webserver, relationales Datenbankverwaltungssystem MariaDB (ein Community-Fork von MySQL) und dynamische PHP-Programmiersprache, die serverseitig ausgeführt wird.

Anforderungen

  1. Installation von FreeBSD 11.x
  2. 10 Dinge, die nach der FreeBSD-Installation zu tun sind

Schritt 1: Installieren Sie den Nginx-Webserver unter FreeBSD

1. Der erste Dienst, den wir für unseren FBEMP-Stack in FreeBSD installieren, ist der Webserver, dargestellt durch Nginx > Software.

Für den Nginx-Webserver sind weitere vorkompilierte Pakete in FreeBSD 11.x PORTS verfügbar. Um eine Liste der Nginx-Binärdateien aus Ports-Repositorys zu erhalten, geben Sie die folgenden Befehle in Ihrem Serverterminal ein.

ls /usr/ports/www/ | grep nginx
pkg search -o nginx

2. In dieser speziellen Konfiguration installieren wir die Hauptpaketversion von Nginx, indem wir den folgenden Befehl ausgeben. Die Paketverwaltung pkg fragt Sie, ob Sie mit der Installation des Nginx-Pakets fortfahren möchten. Antworten Sie mit Ja (y in der Befehlszeile), um den Installationsprozess zu starten.

pkg install nginx

3. Nachdem das Nginx-Webserverpaket in Ihrem System installiert wurde, führen Sie die folgenden Befehle aus, um den Daemon systemweit zu aktivieren und den Dienst in Ihrem System zu starten.

sysrc nginx_enable="yes"
service nginx start

4. Überprüfen Sie als Nächstes mit dem Befehl sockstat die Netzwerk-Sockets des Nginx-Dienstes, ob sie an den Port 80/TCP gebunden sind, indem Sie Folgendes eingeben Befehl. Die Ausgabe des Befehls sockstat wird über das Dienstprogramm grep weitergeleitet, um die zurückgegebenen Ergebnisse nur auf die Nginx-Zeichenfolge zu reduzieren.

sockstat -4 | grep nginx

5. Öffnen Sie abschließend einen Browser auf einem Desktop-Computer in Ihrem Netzwerk und besuchen Sie die Nginx-Standardwebseite über das HTTP-Protokoll. Geben Sie den FQDN Ihres Computers oder Ihren Domänennamen oder die IP-Adresse Ihres Servers in die URL des Browsers ein, um die Standardwebseite des Nginx-Webservers anzufordern. Die Meldung „Willkommen bei nginx!“ sollte in Ihrem Browser angezeigt werden, wie im folgenden Screenshot dargestellt.

http://yourdomain.com
http://your_server_IP
http://your_machine_FQDN

6. Das Standard-Weboot-Verzeichnis für Nginx-Webinhalte befindet sich im absoluten Systempfad /usr/local/www/nginx/. An diesem Ort sollten Sie Webinhaltsdateien wie .html- oder .php-Dateien für Ihre Website erstellen, kopieren oder installieren.

Um diesen Speicherort zu ändern, bearbeiten Sie die Nginx-Hauptkonfigurationsdatei und ändern Sie die Root-Anweisung so, dass sie Ihren neuen Webroot-Pfad widerspiegelt.

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

Suchen und aktualisieren Sie hier die folgende Zeile, um Ihren neuen Webroot-Pfad widerzuspiegeln:

root	/path/to/new/webroot;

Schritt 2: PHP unter FreeBSD installieren

7. Im Gegensatz zum Apache HTTP-Server ist Nginx nicht in der Lage, PHP-Code nativ zu verarbeiten. Im Gegenzug leitet der Nginx-Webserver PHP-Anfragen an einen PHP-Interpreter weiter, z. B. den php-fpm FastCGI-Daemon, der den Code prüft und ausführt. Der resultierende Code wird dann an Nginx zurückgegeben, das den Code wieder im angeforderten HTML-Format zusammensetzt und den Code weiter an den Webbrowser des Besuchers sendet.

FreeBSD 11.x Ports-Repositorys bieten mehrere Binärversionen für die Programmiersprache PHP, wie z. B. PHP 5.6, PHP 7.0 und PHP 7.1< Veröffentlichungen. Um alle verfügbaren vorkompilierten PHP-Versionen in FreeBSD 11.x anzuzeigen, führen Sie die folgenden Befehle aus.

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

8. Sie können die Version von PHP installieren, die Ihrer Meinung nach am besten für die Webanwendung geeignet ist, die Sie in Ihrem System ausführen. In dieser Anleitung installieren wir jedoch die neueste PHP-Version.

Führen Sie den folgenden Befehl aus, um die Version PHP 7.1 und einige wichtige PHP-Module zu installieren, die für verschiedene Webanwendungen erforderlich sind.

pkg install php71 php71-mysqli php71-mcrypt php71-zlib php71-gd php71-json mod_php71 php71-mbstring php71-curl

9. Nachdem Sie PHP-Pakete in Ihrem System installiert haben, öffnen Sie die PHP-FPM-Konfigurationsdatei für Nginx und passen Sie die Benutzer- und Gruppenwerte an den Wert auf der Nginx-Laufzeit an Benutzer, der www ist. Erstellen Sie zunächst mit dem folgenden Befehl eine Sicherungskopie der Datei.

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

Öffnen Sie dann die Datei und aktualisieren Sie die folgenden Zeilen wie im folgenden Beispiel dargestellt.

user = www
group = www

10. Erstellen Sie außerdem eine PHP-Konfigurationsdatei für die Produktion, indem Sie den folgenden Befehl ausführen. In dieser Datei können Sie benutzerdefinierte Änderungen vornehmen, die zur Laufzeit auf den PHP-Interpreter angewendet werden.

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

Ändern Sie beispielsweise die Einstellung date.timezone für den PHP-Interpreter, um den physischen Standort Ihres Computers zu aktualisieren, wie im folgenden Beispiel gezeigt. Die PHP-Zeitzonenliste finden Sie hier: http://php.net/manual/en/timezones.php.

vi /usr/local/etc/php.ini

Fügen Sie die folgende Zeitzone hinzu (stellen Sie die Zeitzone entsprechend Ihrem Land ein).

date.timezone = Europe/London

Sie können auch andere PHP-Variablen anpassen, z. B. die maximale Dateigröße der hochgeladenen Datei, die durch Ändern der folgenden Werte erhöht werden kann:

upload_max_filesize = 10M
post_max_size = 10M

11. Nachdem Sie die benutzerdefinierten Einstellungen für PHP vorgenommen haben, aktivieren und starten Sie den PHP-FPM-Daemon, um die neuen Konfigurationen anzuwenden, indem Sie die folgenden Befehle ausführen.

sysrc php_fpm_enable=yes
service php-fpm start

12. Standardmäßig bindet der PHP-FPM-Daemon in FreeBSD an einen lokalen Netzwerk-Socket am Port 9000/TCP. Um PHP-FPM-Netzwerk-Sockets anzuzeigen, führen Sie den folgenden Befehl aus.

sockstat -4 -6| grep php-fpm

13. Damit der Nginx-Webserver die PHP-Skripte an den FastCGI-Gateway-Server weiterleiten kann, der den Socket 127.0.0.1:9000 überwacht, Öffnen Sie die Hauptkonfigurationsdatei von Nginx und fügen Sie den folgenden Codeblock hinzu, wie im folgenden Beispiel dargestellt.

vi /usr/local/etc/nginx/nginx.conf

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

14. Um die aktuellen PHP-Informationen für Ihren Server anzuzeigen, erstellen Sie eine info.php-Datei im Nginx-Weboot-Pfad, indem Sie den folgenden Befehl ausführen.

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

15. Anschließend testen und starten Sie den Nginx-Daemon neu, um die PHP FastCGI-Einstellungen anzuwenden, und besuchen Sie die Seite info.php in einem Browser.

nginx -t # Test nginx configuration file for syntax errors
service nginx restart

Ersetzen Sie die IP-Adresse oder den Domänennamen in den folgenden Links entsprechend. Die PHP-Infoseite sollte Informationen wie im folgenden Screenshot dargestellt anzeigen.

http://yourdomain.com/info.php
http://server_IP-or-FQDN/info.php

Schritt 3: Installieren Sie MariaDB unter FreeBSD

16. Die letzte Komponente, die in Ihrem FEMP-Stack in der Datenbank fehlt. MariaDB/MySQL ist eine der am häufigsten verwendeten Open-Source-RDBMS-Software mit dem Nginx-Webserver, die für die Bereitstellung dynamischer Websites verwendet wird.

Tatsächlich ist MariaDB/MySQL eine der am häufigsten verwendeten relationalen Datenbanken der Welt. Wenn Sie FreeBSD-Ports durchsuchen, können Sie mehrere Versionen von MariaDB/MySQL finden.

In dieser Anleitung installieren wir die Datenbank MariaDB, einen Community-Zweig der Datenbank MySQL. Um nach verfügbaren Versionen von MariaDB zu suchen, geben Sie die folgenden Befehle im Terminal ein.

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

17. Um die neueste Version des MariaDB-Datenbankservers zu installieren, führen Sie den folgenden Befehl aus. Sie sollten auch das PHP-Treibermodul für relationale Datenbanken installieren, das von PHP-Skripten für die Verbindung zu MySQL verwendet wird.

pkg install mariadb102-server php71-mysqli

18. Nachdem die Datenbank installiert wurde, aktivieren Sie den MySQL-Daemon und starten Sie den Datenbankdienst, indem Sie die folgenden Befehle ausführen.

sysrc mysql_enable="YES" 
service mysql-server start

19. Stellen Sie außerdem sicher, dass Sie den PHP-FPM-Daemon neu starten, um die MySQL-Treibererweiterung zu laden.

service php-fpm restart
20. On the next step, secure MariaDB database by launching mysql_secure_installation script. Use the below sample of the installation script in order to answer the questions. Basically, say yes (y) for all asked questions to secure the database and type a strong password for MySQL root user.
/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!

21. Um die MariaDB-Datenbankverbindung von der Konsole aus zu testen, führen Sie den folgenden Befehl aus.

mysql -u root -p -e "show status like ‘Connections’"

22. Um MariaDB weiter abzusichern, das standardmäßig auf eingehende Netzwerkverbindungen am Socket 0.0.0.0:3306/TCP lauscht, geben Sie den folgenden Befehl ein, um den Dienst zu erzwingen um an die Loopback-Schnittstelle zu binden und den Fernzugriff vollständig zu verbieten. Starten Sie anschließend den MySQL-Dienst neu, um die neue Konfiguration anzuwenden.

sysrc mysql_args="--bind-address=127.0.0.1"
service mysql-server restart

Überprüfen Sie, ob die localhost-Bindung erfolgreich angewendet wurde, indem Sie den Befehl „netstat“ ausführen, wie im folgenden Beispiel gezeigt.

netstat -an -p tcp

Das ist alles! Sie haben den Nginx-Webserver, die relationale Datenbank MariaDB und die serverseitige Programmiersprache PHP erfolgreich in FreeBSD installiert. Sie können jetzt mit der Erstellung dynamischer Webseiten beginnen, um Ihren Besuchern Webinhalte bereitzustellen.