So installieren Sie Nginx, PHP und MySQL (LEMP Stack) unter OpenSUSE Leap 42.1
LEMP oder Linux, Engine-x, MySQL und PHP ist eine Sammlung von Software, die auf dem Linux-Betriebssystem installiert ist, um Ihre PHP-basierten Webanwendungen auf dem schnellen Nginx-Webserver zum Laufen zu bringen. Der LEMP-Stapel bietet eine schnelle und zuverlässige Basis für das Hosting von Webanwendungen. LEMP ist eine Sammlung von Open-Source-Software, die über einen kompletten Dokumentationssatz verfügt, so dass Sie leicht mehr über die verschiedenen Anwendungen und deren Zusammenhänge erfahren können.
In diesem Tutorial zeige ich Ihnen, wie Sie Nginx, MariaDB und PHP-FPM unter openSUSE leap 42.1 installieren. Dann werde ich die OpenSUSE-Firewall mit SuSEfirewall2 so konfigurieren, dass sie den Zugriff auf den Nginx-Webserver ermöglicht und Ihnen zeigt, wie Sie eine neue virtuelle Host-Konfiguration auf dem Nginx-Webserver hinzufügen können.
Schließlich werden wir phpMyAdmin als einfach zu bedienendes Datenbankadministrationswerkzeug installieren und sichern, indem wir das Webverzeichnis ändern und die HTTP-Authentifizierung für das phpMyAdmin-Verzeichnis aktivieren.
Voraussetzung
- OpenSUSE Sprung 42.1.
- Root-Privilegien.
- Verstehen des Zypper-Befehls.
Schritt 1 – Installation und Konfiguration von SuSEfirewall2
SuSEfirewall2 ist ein Skript, das iptables-Regeln basierend auf der Konfigurationsdatei „/etc/sysconfig/SuSEfirewall2“ generiert. Wir werden es installieren und konfigurieren, um Netzwerkangriffe auf den Serverport zu verhindern.
Installieren Sie SuSEfirewall2 mit zypper:
zypper in SuSEfirewall2
Wenn die Installation abgeschlossen ist, müssen wir einige Ports für die Webanwendungen und SSH öffnen. Wir werden Port 22 für den ssh-Service und Port 80 und 443 für http und https öffnen. Gehen Sie in das Verzeichnis „/etc/sysconfig/“ und bearbeiten Sie die Datei „SuSEfirewall2“:
cd /etc/sysconfig/ vim SuSEfirewall2
Fügen Sie in Zeile 253 die Portnummern der Dienste hinzu, getrennt durch ein Leerzeichen:
FW_SERVICES_EXT_TCP="22 80 443"
Speichern Sie die Datei und beenden Sie sie.
Starten Sie die SuSEfirewall2 und den SSH-Dienst neu und testen Sie dann die Portkonfiguration, indem Sie sich mit Telnet mit dem Server verbinden.
Starten Sie den SuSEfirewall2- und SSH-Dienst neu:
/sbin/rcSuSEfirewall2 restart systemctl restart sshd
Testen der ssh-Verbindung mit Telnet auf Port 22:
telnet 192.168.1.101 22
Schritt 2 – Installation und Konfiguration von Nginx
Nginx oder Engine x ist ein leistungsstarker HTTP- und Proxy-Server mit geringem Speicherverbrauch. Es wird von großen Websites wie Netflix, Pinterest, CloudFlare, Github etc. verwendet. Nginx hat eine leicht erlernbare Konfigurationssyntax und kann auch als Load Balancer mit Health Checks und Reverse Proxy mit Caching-Funktionen fungieren.
In diesem Schritt werden wir nginx installieren und hinzufügen, um beim Booten zu starten. Installieren Sie es mit dem Befehl „zypper in“:
zypper in nginx
Starten Sie nginx und lassen Sie es beim Booten starten:
systemctl start nginx systemctl enable nginx
Nginx wird jetzt gestartet, aber wenn Sie versuchen, über den Webbrowser darauf zuzugreifen, erhalten Sie einen 403 forbidden error. Dieser Fehler tritt auf, weil es im Web-Root-Ordner kein Standardindexdokument gibt. Um dieses Problem zu lösen, erstellen Sie einen neuen Index html im Webverzeichnis „/srv/wwww/htdocs“. Gehen Sie in das Verzeichnis und erstellen Sie die Datei index.html:
cd /srv/www/htdocs/ echo "<h1>This is Nginx OpenSUSE Leap 42.1</h1>" > index.html
Öffnen Sie Ihren Webbrowser und geben Sie Ihre Server-IP ein und Sie erhalten die Indexseite:
Schritt 3 – MariaDB installieren und konfigurieren
MariaDB ist ein Open-Source-RDBMS (Relational Database Management System), das von MySQL unter der GNU GPL-Lizenz entwickelt wurde. In diesem Tutorial werden wir MariaDB installieren und das Root-Passwort für die MariaDB-Shell konfigurieren.
Installieren Sie MariaDB mit dem Befehl zypper:
zypper in mariadb mariadb-client
Starten Sie MariaDB/MySQL und fügen Sie es mit dem folgenden systemctl-Befehl zum Bootstart hinzu:
systemctl start mysql systemctl enable mysql
Konfigurieren Sie anschließend das Admin-Passwort für MariaDBb/MySQL mit dem Befehl mysqladmin. Eine weitere Option, die Sie zu diesem Zweck verwenden können, ist die „mysql_secure_installation“. In diesem Schritt werde ich mysqladmin verwenden:
/usr/bin/mysqladmin -u root password 'aqwe123'
Hinweis:
„aqwe123“ ist das neue Passwort für MariaDB/MySQL.
Dann loggen Sie sich mit Benutzer root und Passwort aqwe123 in die mysql-Shell ein:
mysql -u root -p TYPE PASSWORD 'aqwe123'
Jetzt ist MariaDB/MySQL installiert und mit unserem neuen Passwort konfiguriert.
Schritt 4 – Installation und Konfiguration von PHP-FPM
PHP-FPM oder FastCGI Process Manager ist eine Alternative zum älteren PHP FastCGI mit zusätzlichen Funktionen und Geschwindigkeitssteigerungen. PHP-FPM ist gut geeignet für kleine und große Websites, die auf der Programmiersprache PHP basieren.
In diesem Schritt werden wir php5-fpm mit einigen zusätzlichen Erweiterungen installieren, die von phpMyAdmin benötigt werden. Installiere php5-fom und die Erweiterungen mit zypper:
zypper in php5 php5-mysql php5-fpm php5-gd php5-mbstring
Wenn die Installation abgeschlossen ist, gehen Sie in das Verzeichnis php5-fpm und kopieren Sie die Konfigurationsdatei:
cd /etc/php5/fpm/ cp php-fpm.conf.default php-fpm.conf
Bearbeiten Sie die Konfiguration mit dem Befehl vim:
vim php-fpm.conf
Entkommentiere die Zeile 32, um das php-fpm-Protokoll zu aktivieren, das Standardpräfix ist /var und wenn du ein Problem mit php5-fpm hast, kannst du die Protokolldatei „/var/log/php-fpm.log“ überprüfen.
error_log = log/php-fpm.log
In Zeile 148 werden wir den Eigentümer des nginx-Prozesses an den Nginx-Benutzer konfigurieren. Ändern Sie Benutzer und Prozessgruppe auf nginx:
user = nginx group = nginx
Zeile 159: Konfigurieren Sie php-fpm so, dass es unter einer Socket-Datei läuft, nicht unter dem Port. Ändere diese Zeile so:
listen = /var/run/php-fpm.sock
Und auf Zeile 170 ändern Sie die Berechtigungen für den Unix-Socket auf den nginx-Benutzer und die Gruppe mit Modus 0660.
listen.owner = nginx listen.group = nginx listen.mode = 0660
Speichern Sie die Datei und verlassen Sie den Editor.
Als nächstes gehen Sie in das PHP-Client-Verzeichnis und bearbeiten die Datei php.ini mit vim:
cd /etc/php5/cli/ vim php.ini
Ändern Sie den Wert von cgi.fix_pathinfo aus Sicherheitsgründen auf Null. Zeile 178:
cgi.fix_pathinfo=0
speichern und beenden.
Kopieren Sie die php.ini in das Verzeichnis conf.d:
cp php.ini /etc/php5/conf.d/
Die PHP-FPM-Konfiguration ist zu diesem Zeitpunkt abgeschlossen, aber wir müssen Nginx noch konfigurieren. Wir müssen Nginx einrichten, um mit php-fpm zu arbeiten.
Gehen Sie in das nginx-Konfigurationsverzeichnis und erstellen Sie ein Backup der Konfigurationsdatei mit dem Befehl cp:
cd /etc/nginx/ cp nginx.conf nginx.conf.backup
Bearbeiten Sie nginx.conf mit vim:
vim nginx.conf
Füge index.php in Zeile 48 hinzu:
index index.php index.html index.htm;
Füge den neuen php-Konfigurationsabschnitt in Zeile 68 hinzu, dies ist die Konfiguration für die Behandlung von .php-Dateianfragen.
location ~ \.php$ { root /srv/www/htdocs; try_files $uri =404; include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
Speichern Sie die Datei und beenden Sie sie.
Als nächstes testen Sie die Syntax der nginx-Konfigurationsdatei, um sicherzustellen, dass keine Fehler auftreten. Starten Sie dann den php-fpm-Daemon und starten Sie Nginx neu:
nginx -t systemctl start php-fpm systemctl restart nginx
Um sicherzustellen, dass die php-fpm und nginx ordnungsgemäß funktionieren, werden wir eine neue php-Testdatei hinzufügen. Gehen Sie in das DocumentRoot-Verzeichnis und erstellen Sie eine phpinfo-Datei mit dem Namen info.php:
cd /srv/www/htdocs/ echo "<?php phpinfo(); ?>" > info.php
Öffnen Sie Ihren Webbrowser und geben Sie Ihre Server-Ipadadresse ein:
Nginx und php-fpm funktionieren jetzt.
Schritt 5 – Konfigurieren eines Nginx Virtualhosts
In diesem Schritt zeige ich Ihnen, wie Sie eine virtuelle Host-Konfiguration für eine Website hinzufügen können. Wir werden eine neue Domain „www.example.com“ und das Webroot-Verzeichnis in „/srv/wwww/example/“ konfigurieren. Bitte ersetzen Sie example und example.com durch Ihren eigenen Domainnamen.
GNginx nginx Verzeichnis und erstellen Sie ein neues Verzeichnis für die Virtualhost-Konfiguration.
cd /etc/nginx/ mkdir vhosts.d/ cd vhosts.d/
Erstellen Sie anschließend eine neue Datei example.conf für den Domänennamen „example.com“ virtualhost.
vim example.conf
fügen Sie die Virtualhost-Konfiguration unten ein:
server { server_name example.com; return 301 $scheme://www.example.com$request_uri; }
server {
listen 80;
root /srv/www/example;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Speichern Sie die Datei und beenden Sie sie.
Erstellen Sie nun das Verzeichnis für die Website „example.com“ im Verzeichnis /srv/www/ und erstellen Sie eine neue Indexdatei.
mkdir -p /srv/www/example/ cd /srv/www/example/ echo "<h1>This is www.example.com site.</h1>" > index.html echo "<?php phpinfo(); ?>" > info.php
Öffnen Sie nun Ihren Webbrowser und besuchen Sie die Domain:
Sie werden auf die www-Domäne umgeleitet und greifen nun auf die php-Datei zu:
http://www.example.com/info.php
Schritt 6 – Installation und Konfiguration von phpMyAdmin
PhpMyAdmin ist eine PHP-basierte Anwendung zur Verwaltung von MySQL- oder MariaDB-Datenbanken über einen Webbrowser. In diesem Schritt werde ich phpMyAdmin so konfigurieren, dass es unter php-fpm läuft und PHPMyAdmin dann sicher machen, indem ich den Zugriff auf die Anmeldeseite von phpMyAdmin einschränke.
Installiere phpMyAdmin mit dem Befehl zypper:
zypper in phpMyAdmin
Der Befehl installiert alle von phpMyAdmin benötigten Pakete, einschließlich apache2-utils, die für die Erstellung der Passwortdatei benötigt werden.
Jetzt haben wir phpMyAdmin auf dem System installiert. Als nächstes erstellen wir eine neue htpasswd-Datei mit dem Befehl htpasswd.
Erstellen Sie die Passwortdatei htpasswd:
htpasswd -c /etc/nginx/htpasswd megumi TYPE YOUR PASSWORD for user megumi
Als nächstes müssen wir Nginx so konfigurieren, dass es die HTTP-Basisauthentifizierung für das phpmyadmin-Verzeichnis verwendet. Wir werden den Zugriff auf die Anmeldeseite von phpMyAdmin mit auth_basic einschränken, und nur Benutzer, die sich in der Datei „htpasswd“ befinden, können sich bei phpMyAdmin anmelden.
Gehen Sie in das Nginx-Konfigurationsverzeichnis und bearbeiten Sie die Datei nginx.conf:
cd /etc/nginx/ vim nginx.conf
Definieren Sie das Web-Root-Verzeichnis innerhalb des Serverbereichs, indem Sie eine neue Zeile unter Zeile 40 (server_name) hinzufügen:
server_name localhost; root /srv/www/htdocs; #newline config
Fügen Sie dann die phpMyAdmin-Konfiguration für nginx in Zeile 60 hinzu:
location ~ ^/phpMyAdmin/.*\.php$ { auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/htpasswd; fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
Speichern Sie die Datei und verlassen Sie den Editor.
Testen Sie die nginx-Konfiguration und starten Sie nginx neu:
nginx -t systemctl restart nginx
Als nächstes öffnen Sie Ihren Webbrowser und besuchen die phpMyAdmin-URL, Sie werden nach einem Benutzernamen und einem Passwort für die Login-Seite gefragt.
http://192.168.1.101/phpMyAdmin/
Dann loggen Sie sich mit Ihrem MySQL-Benutzernamen und Passwort ein.
phpMyAdmin wurde erfolgreich installiert und nur der Benutzer in der htpasswd kann sich anmelden.
Referenz
http://nginx.org/en/docs/
https://www.howtoforge.com/basic-http-authentication-with-nginx
https://www.ruby-forum.com/topic/4411851