Website-Suche

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

Verwandte Artikel: