So installierst du Lighttpd mit PHP und kostenlosem Let’s Encrypt SSL unter Debian 11
Lighttpd ist ein einfacher, schneller und sicherer Webserver. Er ist sehr klein und benötigt nicht viel Speicher und CPU, was ihn zu einem der besten Server für das Hosten jeder Anwendung macht. Er ist für unternehmenskritische Umgebungen konzipiert. Er kann bis zu 10.000 Verbindungen parallel auf einem einzigen Server verarbeiten. Er bietet viele Funktionen wie URL-Rewriting, Output-Komprimierung, Event-Mechanismus, FastCGI, SCGI, Auth und mehr.
In diesem Lernprogramm zeigen wir dir, wie du Lighttpd mit PHP und Let’s Encrypt SSL unter Debian 11 installierst.
Voraussetzungen
- Ein Server, auf dem Debian 11 läuft.
- Ein gültiger Domainname, der auf die Server-IP verweist.
- Ein Root-Passwort ist auf dem Server eingerichtet.
Installiere Lighttpd
Standardmäßig ist das Lighttpd-Paket im offiziellen Repository von Debian 11 enthalten. Du kannst es installieren, indem du den folgenden Befehl ausführst:
apt-get install lighttpd -y
Sobald Lighttpd installiert ist, starte den Lighttpd-Dienst und aktiviere ihn so, dass er beim Neustart des Systems gestartet wird:
systemctl start lighttpd systemctl enable lighttpd
Du kannst den Status von Lighttpd auch mit dem folgenden Befehl überprüfen:
systemctl status lighttpd
Du erhältst die folgende Ausgabe:
? lighttpd.service - Lighttpd Daemon Loaded: loaded (/lib/systemd/system/lighttpd.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2022-02-12 07:01:06 UTC; 12s ago Process: 4663 ExecStartPre=/usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf (code=exited, status=0/SUCCESS) Main PID: 4668 (lighttpd) Tasks: 1 (limit: 2341) Memory: 932.0K CPU: 226ms CGroup: /system.slice/lighttpd.service ??4668 /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf Feb 12 07:01:06 debian11 systemd[1]: Starting Lighttpd Daemon... Feb 12 07:01:06 debian11 systemd[1]: Started Lighttpd Daemon.
Öffne nun deinen Webbrowser und rufe die Lighttpd-Webseite über die URL http://your-server-ip auf . Du solltest die Lighttpd-Testseite auf dem folgenden Bildschirm sehen:
Wenn du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.
PHP und PHP-FPM installieren
Als Nächstes führst du den folgenden Befehl aus, um die Pakete PHP und PHP-FPM auf deinem System zu installieren.
apt-get install php php-cgi php-fpm php-mysql -y
Nach der Installation bearbeitest du die Datei php.ini und setzt cgi.fix_pathinfo auf 1
nano /etc/php/7.4/fpm/php.ini
Ändere die folgende Zeile:
cgi.fix_pathinfo=1
Speichere und schließe die Datei, wenn du fertig bist.
Damit Lighttpd mit dem PHP-FPM funktioniert, musst du die Standard PHP-CGI Konfiguration und den PHP-FPM Socket ersetzen:
Bearbeite zunächst die PHP-FPM-Konfigurationsdatei:
nano /etc/php/7.4/fpm/pool.d/www.conf
Suche die folgende Zeile:
listen = /run/php/php7.4-fpm.sock
Und ersetze sie durch die folgende Zeile:
listen = 127.0.0.1:9000
Speichere und schließe die Datei und starte den PHP-FPM neu, um die Änderungen zu übernehmen:
systemctl restart php7.4-fpm
Du kannst den Status des PHP-FPM auch mit folgendem Befehl überprüfen:
systemctl status php7.4-fpm
Du erhältst die folgende Ausgabe:
? php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2022-02-12 07:04:35 UTC; 1min 7s ago Docs: man:php-fpm7.4(8) Process: 15141 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/7.4/fpm/pool.d/www.conf 74 (code=e> Main PID: 15138 (php-fpm7.4) Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec" Tasks: 3 (limit: 2341) Memory: 8.8M CPU: 54ms CGroup: /system.slice/php7.4-fpm.service ??15138 php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf) ??15139 php-fpm: pool www ??15140 php-fpm: pool www Feb 12 07:04:35 debian11 systemd[1]: Starting The PHP 7.4 FastCGI Process Manager... Feb 12 07:04:35 debian11 systemd[1]: Started The PHP 7.4 FastCGI Process Manager.
Sobald du fertig bist, kannst du mit dem nächsten Schritt fortfahren.
Lighttpd für PHP-FPM konfigurieren
Als Nächstes musst du die Lighttpd-Konfigurationsdatei bearbeiten und sie mit dem Fast CGI ändern:
nano /etc/lighttpd/conf-available/15-fastcgi-php.conf
Suche die folgenden Zeilen:
"bin-path" => "/usr/bin/php-cgi", "socket" => "/var/run/lighttpd/php.socket",
Und ersetze sie durch die folgenden Zeilen:
"host" => "127.0.0.1", "port" => "9000",
Speichere und schließe die Datei und aktiviere die Fast CGI-Module mit den folgenden Befehlen:
lighty-enable-mod fastcgi lighty-enable-mod fastcgi-php
Starte abschließend den Lighttpd-Dienst neu, um die Änderungen zu übernehmen:
systemctl restart lighttpd
Virtuellen Lighttpd-Host erstellen
Mit Lighttpd kannst du auch mehrere Websites auf virtuellen Hosts hosten. Erstellen wir eine neue Konfigurationsdatei für einen virtuellen Host, um eine Website namens test.example.com zu hosten.
nano /etc/lighttpd/conf-available/test.conf
Füge die folgenden Zeilen hinzu:
$HTTP["host"] == "test.example.com" { server.document-root = "/var/www/html/" server.errorlog = "/var/log/lighttpd/example.com-error.log" }
Speichere und schließe die Datei und aktiviere den virtuellen Host mit dem folgenden Befehl:
ln -s /etc/lighttpd/conf-available/test.conf /etc/lighttpd/conf-enabled/
Als nächstes erstellst du eine index.php Datei:
nano /var/www/html/index.php
Füge die folgende Zeile hinzu:
<?php phpinfo(); ?>
Speichere und schließe die Datei und setze die richtigen Rechte und Eigentümer mit folgendem Befehl:
chown -R www-data:www-data /var/www/html/ chmod -R 755 /var/www/html
Starte anschließend den Lighttpd-Dienst neu, um die Änderungen zu übernehmen:
systemctl restart lighttpd
Öffne nun deinen Webbrowser und überprüfe deine Website mit der URL http://test.example.com. Du solltest die PHP-Testseite auf dem folgenden Bildschirm sehen:
Lighttpd mit Let’s Encrypt sichern
Lighttpd ermöglicht es dir auch, die Website mit Let’s Encrypt SSL zu sichern. Dazu installierst du zunächst den Certbot-Client mit dem folgenden Befehl:
apt-get install certbot -y
Als Nächstes führst du den folgenden Befehl aus, um Let’s Encrypt SSL für deine Website herunterzuladen:
certbot certonly --webroot -w /var/www/html/ -d test.example.com
Du wirst aufgefordert, deine E-Mail-Adresse anzugeben und die Lizenzbedingungen zu akzeptieren (siehe unten):
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator webroot, Installer None Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): admin@example.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Once the certificates are downloaded successfully, you should see the following output: IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/test.example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/test.example.com/privkey.pem Your cert will expire on 2022-05-11. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Als Nächstes musst du sowohl das Zertifikat als auch den privaten Schlüssel in einer Datei zusammenfassen. Das kannst du mit dem folgenden Befehl tun:
cat /etc/letsencrypt/live/test.example.com/cert.pem /etc/letsencrypt/live/test.example.com/privkey.pem > /etc/letsencrypt/live/test.example.com/web.pem
Als Nächstes musst du die virtuelle Hostdatei von Lighttpd bearbeiten und den Pfad für das Let’s Encrypt SSL-Zertifikat festlegen.
Dies kannst du mit dem folgenden Befehl tun:
nano /etc/lighttpd/conf-enabled/test.conf
Ändere die Datei wie unten gezeigt:
$HTTP["host"] == "test.example.com" { server.document-root = "/var/www/html/" } $SERVER["socket"] == ":443" { ssl.engine = "enable" ssl.pemfile = "/etc/letsencrypt/live/test.example.com/web.pem" ssl.ca-file = "/etc/letsencrypt/live/test.example.com/chain.pem" server.name = "test.example.com" server.document-root = "/var/www/html/" server.errorlog = "/var/log/lighttpd/example.com_error.log" accesslog.filename = "/var/log/lighttpd/example.com_access.log" } $HTTP["scheme"] == "http" { $HTTP["host"] == "test.example.com" { url.redirect = ("/.*" => "https://test.example.com$0") } }
Speichere und schließe die Datei. Starte dann den Lighttpd-Dienst neu, um die Konfigurationsänderungen zu übernehmen:
systemctl restart lighttpd
Jetzt kannst du deine Website sicher über die URL https://test.example.com aufrufen.
Fazit
Herzlichen Glückwunsch! Du hast Lighttpd mit PHP und Let’s Encrypt SSL erfolgreich auf Debian 11 installiert. Du kannst jetzt damit beginnen, deine Website mit dem Lighttpd-Webserver einzurichten. Wenn du noch Fragen hast, kannst du dich gerne an mich wenden.