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:

Lighttpd Standardseite

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:

PHP-Infos

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.

Das könnte dich auch interessieren …