LEMP Stack · 14 min read · Oct 21, 2025

Wie man den LEMP-Stack (Nginx, PHP und MariaDB) auf Debian 12 installiert

Der Linux LEMP-Stack ist ein beliebtes Softwarepaket für die Entwicklung und das Hosting von Webanwendungen. Er besteht aus vier Hauptkomponenten: Linux, Nginx (ausgesprochen “Engine-X”), MySQL oder MariaDB (eine relationale Datenbank) und PHP (eine beliebte Webprogrammiersprache). In diesem Setup ist Linux das Betriebssystem, und Nginx ist der Webserver, der HTTP-Anfragen verarbeitet und statische Inhalte wie Bilder und .css-Dateien bereitstellt. MySQL oder in unserem Fall MariaDB wird als Datenbanksystem verwendet. PHP ist die Skriptsprache, die verwendet wird, um Webinhalte zu generieren und dynamisch mit der Datenbank zu interagieren. Diese Komponenten bilden eine robuste und skalierbare Umgebung für den Aufbau und die Bereitstellung von Websites und Webanwendungen.

Dieser Leitfaden wird Ihnen beibringen, wie Sie einen LEMP-Stack auf einem Debian 12 (Bookworm) Server installieren, der vor ein paar Tagen veröffentlicht wurde. Sie werden auch lernen, wie Sie Anwendungen wie phpMyAdmin installieren.

Voraussetzungen

  • Ein Server, der Debian 12 ausführt.
  • Ein Nicht-Root-Benutzer mit Sudo-Rechten.
  • Ein vollständig qualifizierter Domainname (FQDN) wie example.com, der auf den Server verweist.
  • Die Uncomplicated Firewall (UFW) ist aktiviert und läuft.
  • Alles ist aktualisiert. $ sudo apt update && sudo apt upgrade
  • Einige Pakete, die Ihr System benötigt. $ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release debian-archive-keyring unzip -y Einige dieser Pakete sind möglicherweise bereits auf Ihrem System installiert.

Schritt 1 - Firewall konfigurieren

Der erste Schritt vor der Installation von Paketen besteht darin, die Firewall so zu konfigurieren, dass HTTP- und HTTPS-Verbindungen erlaubt sind.

Überprüfen Sie den Status der Firewall.

$ sudo ufw status

Sie sollten etwas sehen, das wie folgt aussieht.

Status: aktiv

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

Erlauben Sie HTTP- und HTTPS-Ports.

$ sudo ufw allow http
$ sudo ufw allow https

Überprüfen Sie den Status erneut zur Bestätigung.

$ sudo ufw status
Status: aktiv

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)

Schritt 2 - PHP installieren

Debian 12 wird standardmäßig mit PHP 8.2 ausgeliefert. Sie können es installieren, indem Sie den folgenden Befehl ausführen.

$ sudo apt install php-fpm php-cli php-mysql php-mbstring php-xml php-gd

Wir haben die MySQL-, CLI-, GD-, Mbstring- und XML-Erweiterungen von PHP installiert. Sie können zusätzliche Erweiterungen je nach Ihren Anforderungen installieren.

Um immer auf der neuesten Version von PHP zu bleiben oder wenn Sie mehrere Versionen von PHP installieren möchten, fügen Sie Ondrejs PHP-Repository hinzu.

Zuerst importieren Sie Surys Repo PHP GPG-Schlüssel.

$ sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg

Fügen Sie Ondrej Surys PHP-Repository hinzu.

$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'

Aktualisieren Sie die System-Repository-Liste.

$ sudo apt update   

Jetzt können Sie jede Version von PHP installieren.

$ sudo apt install php8.1-fpm php8.1-cli

Überprüfen Sie die installierte PHP-Version.

$ php --version
PHP 8.2.7 (cli) (built: Jun  9 2023 19:37:27) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.7, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.7, Copyright (c), by Zend Technologies

Schritt 3 - MariaDB installieren

Debian 12 wird standardmäßig nicht mit MySQL ausgeliefert, und sie haben noch kein offizielles Paket dafür veröffentlicht. Daher werden wir MariaDB verwenden. MariaDB hat ebenfalls kein offizielles Paket für Debian 12, aber Debian wird damit ausgeliefert. Installieren Sie es daher mit dem folgenden Befehl.

$ sudo apt install mariadb-server

Überprüfen Sie die MySQL-Version.

$ mysql --version
mysql  Ver 15.1 Distrib 10.11.3-MariaDB, für debian-linux-gnu (x86_64) unter Verwendung von EditLine wrapper

Führen Sie das Skript zur sicheren Installation von MariaDB aus.

$ sudo mysql_secure_installation

Sie werden nach dem Root-Passwort gefragt. Drücken Sie Enter, da wir noch kein Passwort dafür festgelegt haben.

HINWEIS: DAS AUSFÜHREN ALLER TEILE DIESES SKRIPTS WIRD FÜR ALLE MariaDB
      SERVER IM PRODUKTIVE EINSATZ EMPFOHLEN!  BITTE LESEN SIE JEDEN SCHRITT SORGFÄLTIG!

Um sich bei MariaDB anzumelden und es abzusichern, benötigen wir das aktuelle
Passwort für den Root-Benutzer. Wenn Sie gerade MariaDB installiert haben und
noch kein Root-Passwort festgelegt haben, sollten Sie hier einfach die Eingabetaste drücken.

Geben Sie das aktuelle Passwort für root ein (drücken Sie die Eingabetaste für keines):

Als Nächstes werden Sie gefragt, ob Sie zur Unix-Socket-Authentifizierungsmethode wechseln möchten. Das unix_socket-Plugin ermöglicht es Ihnen, Ihre Betriebssystemanmeldeinformationen zu verwenden, um eine Verbindung zum MariaDB-Server herzustellen. Da Sie bereits ein geschütztes Root-Konto haben, geben Sie n ein, um fortzufahren.

OK, Passwort erfolgreich verwendet, weiter...

Das Festlegen des Root-Passworts oder die Verwendung des unix_socket stellt sicher, dass niemand
sich ohne die entsprechende Autorisierung beim MariaDB-Root-Benutzer anmelden kann.

Sie haben Ihr Root-Konto bereits geschützt, daher können Sie sicher 'n' antworten.

Wechseln Sie zur unix_socket-Authentifizierung [Y/n] n

Als Nächstes werden Sie gefragt, ob Sie Ihr Root-Passwort ändern möchten. Unter Debian 12 ist das Root-Passwort eng mit der automatisierten Systemwartung verbunden, daher sollte es unangetastet bleiben. Geben Sie n ein, um weiterzumachen.

 ... überspringen.

Sie haben Ihr Root-Konto bereits geschützt, daher können Sie sicher 'n' antworten.

Ändern Sie das Root-Passwort? [Y/n] n

Als Nächstes werden Ihnen bestimmte Fragen gestellt, um die Sicherheit von MariaDB zu verbessern. Geben Sie Y ein, um anonyme Benutzer zu entfernen, entfernte Root-Anmeldungen zu verbieten, die Testdatenbank zu entfernen und die Berechtigungstabellen neu zu laden.

 ... überspringen.

Standardmäßig hat eine MariaDB-Installation einen anonymen Benutzer, der es jedem ermöglicht,
bei MariaDB einzuloggen, ohne dass ein Benutzerkonto für sie erstellt werden muss.  Dies ist nur für Tests gedacht und soll die Installation etwas reibungsloser gestalten.  Sie sollten sie entfernen, bevor Sie in eine Produktionsumgebung wechseln.

Anonyme Benutzer entfernen? [Y/n] y
 ... Erfolg!

Normalerweise sollte root nur von 'localhost' aus verbunden werden dürfen.  Dies stellt sicher, dass niemand das Root-Passwort über das Netzwerk erraten kann.

Remote-Root-Anmeldung verbieten? [Y/n] y
 ... Erfolg!

Standardmäßig kommt MariaDB mit einer Datenbank namens 'test', auf die jeder zugreifen kann.  Dies ist ebenfalls nur für Tests gedacht und sollte entfernt werden, bevor Sie in eine Produktionsumgebung wechseln.

Testdatenbank und Zugriff darauf entfernen? [Y/n] y
 - Testdatenbank wird gelöscht...
 ... Erfolg!
 - Berechtigungen für die Testdatenbank werden entfernt...
 ... Erfolg!

Das Neuladen der Berechtigungstabellen stellt sicher, dass alle bisher vorgenommenen Änderungen sofort wirksam werden.

Berechtigungstabellen jetzt neu laden? [Y/n] y
 ... Erfolg!

Aufräumen...

Alles erledigt!  Wenn Sie alle oben genannten Schritte abgeschlossen haben, sollte Ihre MariaDB-Installation jetzt sicher sein.

Danke, dass Sie MariaDB verwenden!

Sie können die MariaDB-Shell eingeben, indem Sie sudo mysql oder sudo mariadb in die Befehlszeile eingeben.

Schritt 4 - MariaDB konfigurieren

Melden Sie sich in der MariaDB-Shell an.

$ sudo mysql

Erstellen Sie eine Beispiel-Datenbank.

MariaDB> CREATE DATABASE exampledb;

Erstellen Sie ein SQL-Benutzerkonto.

MariaDB> CREATE USER 'exampleuser'@'localhost' IDENTIFIED BY 'YourPassword2!';

Gewähren Sie dem Benutzer alle Berechtigungen für die Datenbank.

MariaDB> GRANT ALL PRIVILEGES ON exampledb.* TO 'exampleuser'@'localhost';

Da wir den Root-Benutzer nicht ändern, sollten Sie einen anderen SQL-Benutzer für administrative Aufgaben erstellen, der die Passwortauthentifizierung verwendet. Wählen Sie ein sicheres Passwort dafür.

MariaDB> GRANT ALL ON *.* TO 'navjot'@'localhost' IDENTIFIED BY 'Yourpassword32!' WITH GRANT OPTION;

Aktualisieren Sie die Benutzerberechtigungen.

MariaDB> FLUSH PRIVILEGES;

Verlassen Sie die Shell.

MariaDB> exit

Lassen Sie uns erneut in die MySQL-Shell mit dem neu erstellten Benutzer einloggen.

$ sudo mysql -u exampleuser -p

Erstellen Sie eine Testtabelle.

MariaDB> CREATE TABLE exampledb.name_list ( sno INT AUTO_INCREMENT, content VARCHAR(255), PRIMARY KEY(sno) );

Fügen Sie Testdaten ein.

MariaDB> INSERT INTO exampledb.name_list (content) VALUES ("Navjot");

Wiederholen Sie den obigen Befehl mehrmals, um weitere Einträge hinzuzufügen. Führen Sie den folgenden Befehl aus, um den Inhalt der Tabelle zu überprüfen.

MariaDB> SELECT * FROM exampledb.name_list;

Sie erhalten die folgende Ausgabe.

+-----+---------+
| sno | content |
+-----+---------+
|   1 | Navjot  |
|   2 | Adam    |
|   3 | Josh    |
|   4 | Peter   |
+-----+---------+
4 rows in set (0.00 sec)

Verlassen Sie die MySQL-Shell.

MariaDB> exit

Schritt 5 - Nginx installieren

Debian 12 wird mit einer älteren Version von Nginx ausgeliefert. Um die neueste Version zu installieren, müssen Sie das offizielle Nginx-Repository herunterladen.

Importieren Sie den Signaturschlüssel von Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Fügen Sie das Repository für die stabile Version von Nginx hinzu.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Aktualisieren Sie die System-Repositories.

$ sudo apt update

Installieren Sie Nginx.

$ sudo apt install nginx

Überprüfen Sie die Installation. Auf Debian-Systemen funktioniert der folgende Befehl nur mit sudo.

$ sudo nginx -v
nginx version: nginx/1.24.0

Starten Sie Nginx.

$ sudo systemctl start nginx

Überprüfen Sie den Dienststatus.

$ sudo systemctl status nginx
? nginx.service - nginx - Hochleistungs-Webserver
     Loaded: geladen (/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: aktiv (laufend) seit Thu 2023-06-15 16:33:46 UTC; 1s ago
       Docs: https://nginx.org/en/docs/
    Process: 2257 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 2258 (nginx)
      Tasks: 2 (limit: 1108)
     Memory: 1.8M
        CPU: 6ms
     CGroup: /system.slice/nginx.service
             ??2258 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??2259 "nginx: worker process"

Schritt 6 - PHP-FPM konfigurieren

Öffnen Sie php.ini zur Bearbeitung.

$ sudo nano /etc/php/8.2/fpm/php.ini

Um die Dateigrößen für Uploads festzulegen, ändern Sie die Werte der Variablen upload_max_filesize und post_max_size.

upload_max_filesize = 50M
...
post_max_size = 50M

Konfigurieren Sie das PHP-Speicherlimit je nach Ihren Serverressourcen und Anforderungen.

memory_limit = 256M

Speichern Sie die Datei, indem Sie Ctrl + X drücken und bei Aufforderung Y eingeben.

Sie können auch die folgenden Befehle verwenden, um die Änderungen vorzunehmen, ohne die Datei öffnen zu müssen.

$ sudo sed -i 's/post_max_size = 8M/post_max_size = 50M/' /etc/php/8.2/fpm/php.ini
$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 50M/' /etc/php/8.2/fpm/php.ini
$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.2/fpm/php.ini

Öffnen Sie die Datei /etc/php/8.0/fpm/pool.d/www.conf.

$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf

Wir müssen den Unix-Benutzer/die Gruppe der PHP-Prozesse auf nginx setzen. Suchen Sie die Zeilen user=www-data und group=www-data in der Datei und ändern Sie sie in nginx.

...
; Unix user/group of processes
; Hinweis: Der Benutzer ist obligatorisch. Wenn die Gruppe nicht festgelegt ist, wird die Standardbenutzergruppe
;       verwendet.
user = nginx
group = nginx
...

Suchen Sie auch die Zeilen listen.owner=www-data und listen.group=www-data in der Datei und ändern Sie sie in nginx.

listen.owner = nginx
listen.group = nginx

Speichern Sie die Datei, indem Sie Ctrl + X drücken und bei Aufforderung Y eingeben.

Starten Sie den PHP-FPM-Prozess neu.

$ sudo systemctl restart php8.2-fpm

Schritt 7 - phpMyAdmin installieren

Laden Sie die Archivdatei von phpMyAdmin für die englische Sprache herunter. Holen Sie sich den Link zur neuesten Version von der phpMyAdmin-Downloadseite.

$ wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-english.tar.gz

Erstellen Sie ein öffentliches Verzeichnis für die Website.

$ sudo mkdir /var/www/html/example.com -p

Entpacken Sie das Archiv in das öffentliche Verzeichnis.

$ sudo tar -xzf phpMyAdmin-5.2.1-english.tar.gz -C /var/www/html/example.com

Wechseln Sie in das öffentliche Verzeichnis.

$ cd /var/www/html/example.com

Benennen Sie das entpackte Verzeichnis in etwas Unauffälliges um, um die Sicherheit zu verbessern.

$ sudo mv phpMyAdmin-5.2.1-english sm175

Schritt 8 - phpMyAdmin konfigurieren

Kopieren Sie die Beispielkonfigurationsdatei.

$ sudo cp sm175/config.sample.inc.php sm175/config.inc.php

Öffnen Sie die Konfigurationsdatei zur Bearbeitung.

$ sudo nano sm175/config.inc.php

Suchen Sie die Zeile $cfg['blowfish_secret'] = ''; und geben Sie eine 32-Zeichen zufällige Zeichenfolge für die cookie-basierte Authentifizierung ein.

Sie können den Online-Blowfish-Generator von phpSolved verwenden oder dies über die Befehlszeile tun.

Kopieren Sie den Wert und fügen Sie ihn wie gezeigt ein.

$cfg['blowfish_secret'] = 'Tc/HfLPBOAPxJ-rhQP}HJoZEK69c3j:m';

Speichern Sie die Datei, indem Sie Ctrl + X drücken und bei Aufforderung Y eingeben.

Ändern Sie den Besitz der Website und von phpMyAdmin auf den Nginx-Server.

$ sudo chown -R nginx:nginx /var/www/html/example.com

Löschen Sie das phpMyAdmin-Setup-Verzeichnis.

$ sudo rm -rf /var/www/html/example.com/sm175/setup

Schritt 9 - Opcache konfigurieren

Opcache ist das Caching-System von PHP. Es funktioniert, indem es vorcompilierte Skript-Bytecodes im Speicher speichert, sodass jede Seite, die ein Benutzer besucht, schneller geladen wird. Opcache ist standardmäßig installiert. Um dies zu überprüfen, überprüfen Sie die PHP-Version.

$ php --version
PHP 8.2.7 (cli) (built: Jun  9 2023 19:37:27) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.7, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.7, Copyright (c), by Zend Technologies

Dies sagt uns, dass Opcache installiert und verfügbar ist. Falls es hier nicht angezeigt wird, können Sie es manuell installieren, indem Sie den folgenden Befehl ausführen.

$ sudo apt install php-opcache

Um die Opcache-Einstellungen zu ändern, öffnen Sie die Datei /etc/php/8.2/fpm/conf.d/10-opcache.ini zur Bearbeitung.

$ sudo nano /etc/php/8.2/fpm/conf.d/10-opcache.ini

Die folgenden Einstellungen sollten Ihnen den Einstieg in die Verwendung von Opcache erleichtern und werden allgemein für eine gute Leistung empfohlen. Sie können es aktivieren, indem Sie die folgenden Zeilen am Ende hinzufügen.

opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60

Speichern Sie die Datei, indem Sie Ctrl + X drücken und bei Aufforderung Y eingeben.

Starten Sie PHP-FPM neu.

$ sudo systemctl restart php8.2-fpm

Schritt 10 - Certbot für SSL installieren

Wir müssen Certbot installieren, um kostenlose SSL-Zertifikate zu generieren, die von Let’s Encrypt angeboten werden.

Sie können Certbot entweder über das Debian-Repository installieren oder die neueste Version mit dem Snapd-Tool herunterladen. Wir werden die Snapd-Version verwenden.

Debian 12 wird nicht mit Snapd installiert. Installieren Sie das Snapd-Paket.

$ sudo apt install snapd

Führen Sie die folgenden Befehle aus, um sicherzustellen, dass Ihre Version von Snapd auf dem neuesten Stand ist.

$ sudo snap install core
$ sudo snap refresh core

Installieren Sie Certbot.

$ sudo snap install --classic certbot

Verwenden Sie den folgenden Befehl, um sicherzustellen, dass der Certbot-Befehl ausgeführt werden kann, indem Sie einen symbolischen Link zum Verzeichnis /usr/bin erstellen.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Überprüfen Sie, ob Certbot ordnungsgemäß funktioniert.

$ certbot --version
certbot 2.6.0

Schritt 11 - Testen einer Demoseite

Erstellen Sie die Seite

Erstellen und öffnen Sie eine Testseite zur Bearbeitung.

$ sudo nano /var/www/html/example.com/index.php

Fügen Sie den folgenden Code ein.

Mitgliederliste
    "; foreach($db->query("SELECT content FROM $table") as $row) { echo "
  1. " . $row['content'] . "
  2. "; } echo "
"; } catch (PDOException $e) { print "Fehler!: " . $e->getMessage() . "
"; die(); }

Speichern Sie die Datei, indem Sie Ctrl + X drücken und bei Aufforderung Y eingeben.

Erstellen Sie ein SSL-Zertifikat

Führen Sie den folgenden Befehl aus, um ein SSL-Zertifikat zu generieren.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d example.com

Der obige Befehl lädt ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/example.com auf Ihrem Server herunter.

Generieren Sie ein Diffie-Hellman-Gruppe-Zertifikat.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Überprüfen Sie den Certbot-Erneuerungsplanungsdienst.

$ sudo systemctl list-timers

Sie finden snap.certbot.renew.service als einen der Dienste, die geplant sind.

NÄCHST                        LINKS          LETZTE                        VERGANGEN        EINHEIT                      AKTIVIERT
.....
Sun 2023-02-26 06:32:00 UTC 9h left       Sat 2023-02-25 18:04:05 UTC 2h 59min ago  snap.certbot.renew.timer  snap.certbot.renew.service
Sun 2023-02-26 06:43:20 UTC 9h left       Sat 2023-02-25 10:49:23 UTC 10h ago       apt-daily-upgrade.timer   apt-daily-upgrade.service
Sun 2023-02-26 09:00:06 UTC 11h left      Sat 2023-02-25 20:58:06 UTC 5min ago      apt-daily.timer           apt-daily.service

Führen Sie einen Testlauf des Prozesses durch, um zu überprüfen, ob die SSL-Erneuerung einwandfrei funktioniert.

$ sudo certbot renew --dry-run

Wenn Sie keine Fehler sehen, sind Sie bereit. Ihr Zertifikat wird automatisch erneuert.

Nginx konfigurieren

Erstellen und öffnen Sie die Datei /etc/nginx/conf.d/example.conf zur Bearbeitung.

$ sudo nano /etc/nginx/conf.d/example.conf

Fügen Sie den folgenden Code ein.

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  example.com;

    access_log  /var/log/nginx/example.com.access.log;
    error_log   /var/log/nginx/example.com.error.log;

    ssl_certificate      /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;

    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    root /var/www/html/example.com;

    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # PHP-Skripte an den FastCGI-Server weiterleiten
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock; # hängt von den PHP-Versionen ab
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

# HTTPS erzwingen
server {
    listen       80;
    listen       [::]:80;
    server_name  example.com;
    return 301   https://$host$request_uri;
}

Speichern Sie die Datei, indem Sie Ctrl + X drücken und bei Aufforderung Y eingeben.

Öffnen Sie die Datei /etc/nginx/nginx.conf zur Bearbeitung.

$ sudo nano /etc/nginx/nginx.conf

Fügen Sie die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf; hinzu.

server_names_hash_bucket_size  64;

Speichern Sie die Datei, indem Sie Ctrl + X drücken und bei Aufforderung Y eingeben.

Überprüfen Sie Ihre Nginx-Konfiguration.

$ sudo nginx -t

Wenn Sie keine Fehler sehen, sind Sie bereit. Starten Sie den Nginx-Server.

$ sudo systemctl start nginx

Laden Sie Ihre Website, indem Sie https://example.com in Ihrem Browser besuchen, und Sie werden die folgende Seite sehen.

LEMP-Testseiten-Ausgabe

Sie können auf Ihre phpMyAdmin-Installation zugreifen, indem Sie die URL https://example.com/sm175 in Ihrem Browser besuchen. Sie können entweder Ihren Administrationsbenutzer oder den zuvor erstellten Benutzer eingeben, um sich anzumelden.

Fazit

Damit endet unser Tutorial, in dem Sie gelernt haben, wie man einen LEMP-Stack auf einem Debian 12-Server einrichtet und eine Demoseite erstellt. Wenn Sie Fragen haben, posten Sie diese in den Kommentaren unten.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.