LEMP ist eine Sammlung von Open-Source-Softwares, die häufig für die Bereitstellung von Webanwendungen verwendet wird. LEMP ist ein Akronym, das die Konfiguration eines Linux-Systems mit einem Nginx (ausgesprochen EngineX, daher das E im Akronym) Webserver, einer MySQL- oder MariaDB-Datenbank und PHP verwendet wird. Kurz LEMP = Linux Nginx MySQL PHP
Betriebssystem aktualisieren
Aktualisiere dein Debian-Betriebssystem, so dass alle vorhandenen Pakete auf dem neuesten Stand sind:
sudo apt update && sudo apt upgrade -y
Abhängigkeiten installieren
Benötigte Abhängigkeiten installieren. Verwende folgenden Befehl, um zu installieren oder zu überprüfen, ob sie vorhanden sind.
sudo apt-get install software-properties-common dirmngr ca-certificates apt-transport-https nano wget curl -y
Installieren von Nginx – (LEMP-Stack)
Um die LEMP-Stack-Installation zu starten, beginnen wir mit dem Nginx Webserver. Entweder die neueste Nginx-Mainline oder Stable von der zu installierenden Ondřej Surý Repository, um die aktuellere Version zu haben. Ubuntu-Benutzer können die PPA Repositories nutzen.
Um die neueste Version von Nginx Mainline oder Stable zu verwenden, müssen Sie zuerst das Repository importieren.
Option 1: Mainline-Repository importieren:
curl -sSL https://packages.sury.org/nginx-mainline/README.txt | sudo bash -x
Option 2: Stabiles Repository importieren:
curl -sSL https://packages.sury.org/nginx/README.txt | sudo bash -x
Aktualisiere dein Repository, um die neue Änderung widerzuspiegeln:
sudo apt update
Nachdem die Nginx-Repository installiert und aktiviert wurde, installieren wir Nginx mit dem folgenden:
sudo apt install nginx-core nginx-common nginx nginx-full
Möglicherweise wirst du aufgefordert werden, die vorhandenen zu behalten oder zu ersetzen unter /etc/nginx/nginx.conf Konfigurationsdatei während der Installation. Es wird empfohlen, die aktuelle Konfigurationsdatei beizubehalten, indem du (n) auswählst.
Überprüfe nun, ob das neueste Nginx aus dem Ondřej Surý-Repository installiert wurde mit apt-cache.
apt-cache policy nginx
Brotli-Support installieren
Bearbeite die nginx.conf um Brodle zu aktivieren
nano /etc/nginx/nginx.conf
Fügen nun die zusätzlichen Zeilen im HTTP{} Abschnitt hinzu:
brotli on;
brotli_comp_level 6;
brotli_static on;
brotli_types application/atom+xml application/javascript application/json application/rss+xml
application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype
application/x-font-ttf application/x-javascript application/xhtml+xml application/xml
font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon
image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml;
Das brotli_comp_level ist einstellbar zwischen 1 (niedrigste) und 11 (höchste). Normalerweise nutzen die meisten Server die goldene Mitte, aber wenn dein Server leistungsstark ist, kannst du das Level 11 nehmen und dabei die CPU-Auslastung überwachen.
Teste als Nächstes, ob die Änderungen korrekt funktionieren, bevor du sie live schaltest:
sudo nginx -t
Ist die Konfiguration in Ordnung, können wir NGINX nun neustarten
sudo systemctl restart nginx
Aktivieren von NGINX beim Systemstart
sudo systemctl enable nginx
Überprüfen des NGINX Status
systemctl status nginx
Installation von MySQL / MariaDB-Server
Das offizielle Bash-Skript ist oft der beste und einfachste Weg, MariaDB auf Debian 11 zu installieren, da man sofortige Updates erhält, wenn Sicherheits- oder neue Funktionen verfügbar sind. Dieselbe Methode kann verwendet werden, um die alternativen Versionen wie MariaDB 10.5 zu installieren und kann verwendet werden, um MariaDB 10.8 und höher in Zukunft zu installieren mariadb-server-version={Versionsnummer}.
Importieren Sie MariaDB 10.6/10.7 Repo mit dem offiziellen Bash-Skript
Option 1. MariaDB 10.6-Repository importieren:
curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version=10.6 --skip-maxscale --skip-tools
Option 2. MariaDB 10.7-Repository importieren:
curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version=10.7 --skip-maxscale --skip-tools
Repository Listen Updaten
sudo apt update
Um MariaDB zu installieren, müssen die Client- und Serverpakete installiert werden.
sudo apt-get install -y mariadb-server mariadb-client
Überprüfen der Version
mariadb --version
MariaDB Server Status überprüfen
systemctl status mariadb
MariaDB Server Starten
sudo systemctl start mariadb
MariaDB Server Stoppen
sudo systemctl stop mariadb
MariaDB Server beim Systemstart automatisch starten
sudo systemctl enable mariadb
MariaDB Server neustarten
sudo systemctl restart mariadb
MariaDB Sicherheitsskript
Bei der Installation einer frischen MariaDB sind die Standardeinstellungen sehr schwach, dass potenzielle Eindringversuche oder das Ausnutzen von Hackern möglich sind. Eine Lösung besteht darin, das Installationssicherheitsskript mit der MariaDB Installation zu starten.
Verwenden Sie zunächst den folgenden Befehl, um die (mysql_secure_installation):
sudo mysql_secure_installation
Danach musst du einige Angaben machen und Passwörter definieren.
PHP Installation
Der letzte Teil des Tutorials besteht darin, PHP zu installieren.
Standardmäßig ist PHP im Standard-Repository von Debian verfügbar. Um jedoch die neueste Version ähnlich wie Nginx zu haben, konzentriert sich das Tutorial auf den Import der neuesten PHP-Version von Ondřej Surý. Diese ist stets aktueller.
Ondřej Surý PHP Repository importieren
Der erste Schritt ist das Importieren und Installieren der GPG-Schlüssel bevor du das Repository hinzufügst.
curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x
sudo apt update
Installieren von PHP 7.4 / 8.0 oder 8.1 FPM
So installierst du PHP-FPM 7.4
sudo apt install php7.4 php7.4-fpm php7.4-cli php7.4-curl php7.4-zip php7.4-mysql -y
So installierst du PHP-FPM 8.0
sudo apt install php8.0 php8.0-fpm php8.0-cli php8.0-curl php8.0-zip php8.0-mysql -y
So installierst du PHP-FPM 8.1
sudo apt install php8.1 php8.1-fpm php8.1-cli php8.1-curl php8.1-zip php8.1-mysql -y
Nach der Installation wird der PHP-FPM-Dienst automatisch gestartet und du kannst den Status überprüfen, um sicherzustellen, dass er in Ordnung ist.
systemctl status php8.1-fpm
Überprüfe welche PHP Version aktiv ist
php --version
PHP Testseite
Um PHP-FPM mit dem Nginx-Webserver zu testen, kannst du eine Datei im Webroot-Verzeichnis erstellen.
sudo nano /var/www/html/info.php
Inhalt der Datei:
<?php
phpinfo();
?>
In der Adressleiste des Internetbrowsers können wir überprüfen ob die PHP-Webseite angezeigt wird (Server-IP-Adresse/info.php). Beispiel http://127.0.0.1/info.php
Klappt dies, kann die Datei wieder gelöscht werden.
sudo rm -f /var/www/html/info.php
Erstelle einen Nginx-Serverblock
Um einzelne Domains zu konfigurieren müssen wir NGINX noch Bescheid geben, welche Domain auf welchen Ordner zeigt und wie die Einstellungen sind.
Erstellen von Serverblockverzeichnissen
Die (.conf) Dateien befinden sich normalerweise in (sites-available) und (sites-enabled). Benutzer, die aus verschiedenen Distributionen kommen, würden feststellen, dass dies bereits installiert ist; Für Rocky Linux müssen wie sie jedoch erstellen.
Erstellen der Verzeichnisse
sudo mkdir /etc/nginx/sites-available && sudo mkdir /etc/nginx/sites-enabled
Bearbeite die Nginx-Konfigurationsdatei
sudo nano /etc/nginx/nginx.conf
Füge dann im HTTP-Abschnitt der (nginx.conf) Konfigurationsdatei:
include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;
Der server_names_hash_bucket_size erhöht den Speicher, der dem Analysieren von Domänennamen zugewiesen wird.
Konfigurationsdatei für Serverblock erstellen
Erstelle nun mit einem Texteditor eine Serverblockdatei mit dem Namen der Domain und .conf hintendran:
sudo nano /etc/nginx/sites-available/lemp.renefuerst.eu.conf
Die Konfigurationsdatei mit einem funktionierenden Beispiel mit aktiviertem PHP-FPM einrichten.
server {
listen 80;
listen [::]:80;
server_name lemp.renefuerst.eu www.lemp.renefuerst.eu;
root /var/www/lemp.renefuerst.eu/;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
# A long browser cache lifetime can speed up repeat visits to your page
location ~* .(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 360d;
}
# disable access to hidden files
location ~ /.ht {
access_log off;
log_not_found off;
deny all;
}
}
Test-Landingpage erstellen
Eine gute Idee ist es, eine Beispieltest-Site zu erstellen. Unten ist ein Standardtest index.html eingerichtet:
Falls du dein permanentes oder Test-Webverzeichnis noch nicht erstellt hast:
sudo mkdir -p /var/www/lemp.renefuerst.eu/
Du musst die Berechtigungen konfigurieren und kannst als aktuell angemeldeter Benutzer mit dem $USER Variable:
sudo chown -R $USER:$USER /var/www/html/example.com/
Die letzte Berechtigungseinstellung besteht darin, der Öffentlichkeit das Lesen des Webverzeichnisses (Zugriff auf Ihre Site) mit der Berechtigung chmod 755 zu ermöglichen:
sudo chmod -R 755 /var/www
Als Nächstes erstelle die index.html Datei:
sudo nano /var/www/lemp.renefuerst.eu/index.php
Füge Beispiel HTML oder PHP Code ein.
Nginx-Serverblock aktivieren
Um die Konfigurationsdatei zu aktivieren müssen wir einen symbolischen Link erstellen (symlink) für die Serverblock-Konfigurationsdatei im (sites-available) Verzeichnis zum (sites-enabled) Verzeichnis mit dem folgenden Befehl:
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
Nginx-Serverblock testen
sudo nginx -t
Öffne als Nächstes den Internetbrowser und gib die Domain-Adresse ein (beispiel.com) um zu testen, ob der Server erreichbar ist.
Nginx mit dem kostenlosen SSL-Zertifikat von Let's Encrypt
Idealerweise willst du Nginx ausführen mit einer verschlüsselten HTTPS-Verbindung mit einem SSL-Zertifikat. Der beste Weg, dies zu tun, ist die Verwendung von Let's Encrypt, eine kostenlose, automatisierte und offene Zertifizierungsstelle.
Installiere zuerst das certbot-Paket wie folgt:
sudo apt install python3-certbot-nginx -y
Führe nach der Installation den folgenden Befehl aus, um die Erstellung des Zertifikats zu starten:
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email deine@emailadressehier.com -d lemp.renefuerst.eu
Ein ideales Setup umfasst eine erzwungene HTTPS 301-Weiterleitungen, einen Strict-Transport-Security-Header und OCSP-Stapling. Passe einfach die E-Mail und den Domainnamen an deine Anforderungen an.
Jetzt lautet deine URL HTTPS://lemp.renefuerst.eu statt HTTP://lemp.renefuerst.eu.
Wenn du das alte HTTP-URL verwendest, wird es automatisch umgeleitet zu HTTPS.