So konfigurieren Sie den LEMP-Server unter Debian 9 Stretch Linux
Einleitung
Der folgende Text beschreibt eine Konfigurationsprozedur des LEMP-Servers unter Debian 9 Stretch Linux. Der LEMP-Stack, der in der folgenden Anleitung beschrieben wird, besteht aus:
- Debian 9 Stretch Linux
- Nginx-Webserver
- MariaDB oder MySQL relationale Datenbank
- PHP 7 Skriptsprache
Bitte beachten Sie, dass unser Hauptziel darin besteht, den LEMP-Stack unter Debian 9 Stretch Linux zu konfigurieren. Aus diesem Grund enthält der Artikel keine Empfehlungen zur Sicherheitshärtung oder Leistungsoptimierung.
Nachdem Sie den LEMP-Stack konfiguriert haben, sollten Sie eine weitere Härtung Ihres Servers basierend auf der Zielbereitstellungsumgebung in Betracht ziehen.
Konventionen
- # – erfordert, dass bestimmte Linux-Befehle mit Root-Rechten ausgeführt werden, entweder direkt als Root-Benutzer oder mit dem Befehl
sudo - $ – erfordert, dass bestimmte Linux-Befehle als normaler, nicht privilegierter Benutzer ausgeführt werden
Voraussetzungen Installation
In diesem Abschnitt wird eine gängige Installation aller LEMP-Stack-Komponenten veranschaulicht. Zu diesem Zeitpunkt kümmern wir uns nicht um eine bestimmte Konfiguration der einzelnen LEMP-Komponenten. Vielmehr führen wir lediglich eine Installation aller Komponenten mit einem einzigen apt-get-Befehl durch.
Wählen Sie die gewünschte LEMP-Stack-Variante zwischen MariaDB und MySQL aus.
MariaDB-spezifischer LEMP-Stack
apt-get install nginx mariadb-server php-fpm php-mysql
MySQL-spezifischer LEMP-Stack
apt-get install nginx mysql-server php-fpm php-mysql
Falls der obige Befehl keine Fehler erzeugt hat, sollten wir jetzt alle LEMP-Stack-Komponenten installiert haben.
Starten Sie fastCGI process manager
php7.0-fpm ist vorkonfiguriert. Alles, was wir tun müssen, ist, es zu starten, ist den Schalter einzuschalten:
service php7.0-fpm start
service php7.0-fpm status
[ ok ] php-fpm7.0 is running.
Um php7.0-fpm nach dem Neustart zu starten, sollten Sie es mit dem Befehl systemctl aktivieren:
systemctl enable php7.0-fpm
Optional können Sie den Status und die Position des Sockets php7.0-fpm.sock mit cgi-fcgi testen. Das cgi-fcgi ist Teil des Pakets libfcgi0ldbl, das auf Ihrem System möglicherweise nicht verfügbar ist. Um das libfcgi0ldbl-Paket zu installieren, führen Sie Folgendes aus:
apt-get install libfcgi0ldbl
Versuchen Sie, den Socket php7.0-fpm.sock zu verbinden. Bitte beachten Sie, dass der Name des Sockets je nach installierter PHP-Version auf Ihrem System unterschiedlich sein kann.
cgi-fcgi -bind -connect /run/php/php7.0-fpm.sock
Content-type: text/html; charset=UTF-8
Der folgende Fehler wird angezeigt, wenn der Befehl cgi-fcgi keine Verbindung zum php7.0-fpm.sock-Socket herstellen kann:
cgi-fcgi -bind -connect /run/php/php7.0-fpm.sock
Could not connect to /run/php/php7.0-fpm.sock
Konfigurieren und Starten des Nginx-Servers
Damit der Nginx-Webserver eine Verbindung mit dem FastCGI-Prozessmanager herstellen kann, müssen wir ihm einen vollständigen Pfad zum FastCGI-Prozessmanager bereitstellen, der den Socket ausführt. Im vorherigen Abschnitt haben wir den vollständigen Pfad des FastCGI-Prozessmanager-Sockets mit dem Befehl cgi-fcgi -bind bestimmt.
Ersetzen Sie die vorhandene Standard-Site-Konfigurationsdatei von Nginx /etc/nginx/sites-available/default durch die folgende Konfiguration:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
}
Erstellen Sie als Nächstes eine grundlegende PHP-Seite, um Informationen über installiertes PHP anzuzeigen:
echo "<?php phpinfo(); ?>" > /var/www/html/index.php
Starten Sie zuletzt den Nginx-Server:
service nginx start
[ ok ] Starting nginx: nginx.
Falls zutreffend, müssen Sie den Nginx-Server nach dem Neustart mit dem Befehl systemctl aktivieren:
systemctl enable nginx
Starten und Aktivieren des Datenbankservers
Zuletzt müssen wir den Datenbankdienst starten. Abhängig von Ihrer vorherigen Installationsauswahl können Sie den folgenden Befehl verwenden, um sowohl MariaDB- als auch MySQL-Datenbanken zu starten:
service mysql start
[ ok ] Starting MariaDB database server: mysqld.
Damit die Datenbank nach dem Neustart gestartet wird, gehen Sie wie folgt vor:
systemctl enable mysql
Anhang
PHP 7 Skript für die Datenbankverbindung
Der folgende PHP-Datenbankverbindungscode kann verwendet werden, um eine Verbindung zu Ihrer relationalen Datenbank herzustellen:
<?php
$dbh = mysqli_connect('localhost', 'admin', 'pass');
if (!$dbh) {
die('Could not connect: ' . mysqli_error());
}
echo 'Connected successfully to MySQL database';
mysqli_close($dbh);
?>
Speichern Sie den obigen Code in einer neuen Datei /var/www/html/db.php. Erstellen Sie als Nächstes einen Datenbankbenutzer:
mysql -u root -e "CREATE USER 'admin'@'%' IDENTIFIED BY 'pass';"
mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;"
Führen Sie abschließend db.php Skript aus:
php /var/www/html/db.php
OR
curl -i http://localhost/db.php
Connected successfully to MySQL database