Caddy — Web Server
Einleitung¶
Caddy ist ein Webserver, der für moderne Webanwendungen entwickelt wurde. Caddy ist einfach zu konfigurieren und verfügt über die automatische Let's Encrypt-Funktion, sodass Ihre Websites standardmäßig immer sicher sind. Es ist der bevorzugte Webserver des Autors.
Hier ist ein kurzer Überblick über die Funktionen von Caddy:
- Ein einfacher Webserver
- Ein Reverse-Proxy für die Übertragung von Traffic zu mehreren Sites
- Module für viele Workloads, einschließlich TCP, SSH und mehr
- Ein integrierter Lastausgleich zur Verwaltung von Traffic zu mehreren Websites
- Integrierte, automatisierte
Let's Encrypt
-Unterstützung - Eine API zur programmgesteuerten Neukonfiguration des Servers
- PHP FastCGI Support
- und IPv6
Voraussetzungen¶
Sie werden Folgendes benötigen:
- Ein ans Internet angeschlossener Rocky Linux Rechner oder Server.
- Erfahrung mit der Kommandozeile.
- Die Möglichkeit, Befehle als Root-Benutzer oder mit
sudo
auszuführen. - Ein Texteditor Ihrer Wahl, ob grafisch oder Kommandozeilen-basiert. Für dieses Tutorial verwendet der Autor
vim
. - Ein Domänenname oder anderer Hostname, der auf die öffentliche IP-Adresse Ihres Servers verweist.
Caddy
-Installation¶
Stellen Sie zunächst sicher, dass Ihr Computer über die neuesten Updates verfügt:
sudo dnf update
Installieren Sie dann das Software-Repository epel-release
:
sudo dnf install -y epel-release
Wenn Sie Rocky Linux 10 ausführen, aktivieren Sie das Copr
-Repository:
sudo dnf copr enable @caddy/caddy
Installieren Sie als Nächstes den Caddy
-Webserver:
sudo dnf install -y caddy
Konfiguration der Firewall¶
Wenn Sie versuchen, von einem anderen Computer aus eine Webseite mit der IP-Adresse oder dem Domänennamen Ihres Computers anzuzeigen, wird wahrscheinlich nichts angezeigt. Dies ist der Fall, wenn Sie eine Firewall installiert und in Betrieb haben.
Um die erforderlichen Ports zu öffnen, damit Sie Ihre Webseiten tatsächlich „sehen“ können, verwenden Sie die integrierte Firewall von Rocky Linux, firewalld
. Der firewalld
-Befehl hierfür ist firewall-cmd
.
Um die Dienste http
und https
zu öffnen, also die Dienste, die Webseiten verwalten, führen Sie Folgendes aus:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
Im Detail:
- Das Flag
--permanent
weist die Firewall an, diese Konfiguration bei jedem Neustart der Firewall und beim Neustart des Servers anzuwenden. –-zone=public
weist die Firewall an, eingehende Verbindungen zu diesem Port von allen zuzulassen.- Schließlich weisen
--add-service=http
und--add-service=https
firewalld
an, den gesamten HTTP- und HTTPS-Verkehr an den Server weiterzuleiten.
Diese Konfigurationen werden erst wirksam, wenn Sie die Firewall neu laden. Um dies zu tun, weisen Sie firewalld
an, seine Konfiguration neu zu laden:
sudo firewall-cmd --reload
Anmerkung
Es besteht eine sehr geringe Wahrscheinlichkeit, dass dies nicht funktioniert. In diesen seltenen Fällen können Sie `firewalld` mit der bewährten Methode „Ausschalten und wieder einschalten“ dazu bringen, Ihren Befehl auszuführen.
```bash
systemctl restart firewalld
```
Um die Zulassung der Ports sicherzustellen, führen Sie firewall-cmd --list-all
aus. Eine richtig konfigurierte Firewall sieht ähnlich wie Folgendes:
public (active)
target: default
icmp-block-inversion: no
interfaces: enp9s0
sources:
services: cockpit dhcpv6-client ssh http https
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Das sollte alles sein, was Sie in Bezug auf die Firewall benötigen.
Caddy Installation¶
Im Gegensatz zu herkömmlichen Webservern wie Apache und Nginx ist das Konfigurationsformat von Caddy deutlich einfacher. Vorbei sind die Zeiten, in denen Sie die kleinsten Details wie das Threading-Modell Ihres Webservers oder SSL-Zertifikate konfigurieren mussten.
So bearbeiten Sie die Caddy-Konfigurationsdatei:
sudo vim /etc/caddy/Caddyfile
Eine minimale statische Webserverkonfiguration kann etwa wie folgt aussehen:
example.com {
root * /usr/share/caddy/example.com
file_server
}
Ersetzen Sie example.com
durch einen Hostnamen, der auf Ihren Server verweist.
Sie müssen dem Ordner im root
-Verzeichnis von Caddy auch eine Website hinzufügen. Fügen Sie der Einfachheit halber eine einseitige statische Website hinzu:
mkdir -p /usr/share/caddy/example.com
echo "<h1>Hi!</h1>" >> /usr/share/caddy/example.com/index.html
Aktivieren Sie anschließend den systemd-Dienst von Caddy:
sudo systemctl enable --now caddy
Innerhalb einer Minute erhält Caddy SSL-Zertifikate von Let’s Encrypt. Anschließend können Sie die soeben eingerichtete Website in einem Browser anzeigen:
Es sollte über ein SSL-Vorhängeschloss verfügen, das in jedem modernen Browser funktionieren sollte, und nicht nur das, sondern auch eine A+-Bewertung beim Qualys SSL Server Test.
Optional: PHP FastCGI¶
Wie bereits erwähnt, bietet Caddy FastCGI-Unterstützung für PHP. Die gute Nachricht ist, dass Caddy im Gegensatz zu Apache und Nginx PHP-Dateierweiterungen automatisch verarbeitet.
Um PHP zu installieren, fügen Sie zuerst das Remi-Repository hinzu (Hinweis: Wenn Sie Rocky Linux 8.x oder 10.x ausführen, ersetzen Sie 8 oder 10 neben release-
unten):
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
Als nächstes müssen wir PHP installieren (Hinweis: Wenn Sie eine andere PHP-Version verwenden, ersetzen Sie php83 durch Ihre gewünschte Version):
sudo dnf install -y php83-php-fpm
Wenn Sie zusätzliche PHP-Module benötigen (z. B. GD), fügen Sie diese dem obigen Befehl hinzu.
Dann müssen wir PHP so konfigurieren, dass es auf einem TCP-Socket lauscht:
sudo vim /etc/opt/remi/php83/php-fpm.d/www.conf
Suchen Sie als Nächstes folgende Zeile:
listen = /var/opt/remi/php83/run/php-fpm/www.sock
Ersetzen Sie es durch Folgendes:
listen = 127.0.0.1:9000
Sie können jetzt php-fpm
aktivieren und starten:
sudo systemctl enable --now php83-php-fpm
Speichern und beenden Sie dann die Datei www.conf
und öffnen Sie die Caddy-Datei:
sudo vim /etc/caddy/Caddyfile
Navigieren Sie zu dem Serverblock, den wir zuvor erstellt haben:
example.com {
root * /usr/share/caddy/example.com
file_server
}
Fügen Sie nach der Zeile file_server
die folgende Zeile hinzu:
php_fastcgi 127.0.0.1:9000
Ihr PHP-aktiver Serverblock sieht folgendermaßen aus:
example.com {
root * /usr/share/caddy/example.com
file_server
php_fastcgi 127.0.0.1:9000
}
Speichern und beenden Sie anschließend die Caddy-Datei und starten Sie Caddy neu:
sudo systemctl restart caddy
Um zu testen, ob PHP funktioniert, fügen Sie eine einfache PHP-Datei hinzu:
echo "<?php phpinfo(); ?>" >> /usr/share/caddy/rockyexample.duckdns.org/phpinfo.php
Öffnen Sie in Ihrem Browser die von Ihnen erstellte Datei. Daraufhin sollten Ihnen PHP-Informationen angezeigt werden:
Zusammenfassung¶
Die grundlegende Installation und Konfiguration von Caddy ist unglaublich einfach. Vorbei sind die Zeiten, in denen Sie Stunden mit der Konfiguration von Apache verbracht haben. Ja, Nginx ist sicherlich ein Fortschritt, aber es fehlen immer noch moderne, aber wesentliche Funktionen wie Let’s Encrypt und Kubernetes-Ingress-Unterstützung, die Caddy integriert, während Sie diese bei Nginx (und Apache) separat hinzufügen müssen.
Der Autor verwendet Caddy seit 2019 als bevorzugten Webserver und er ist einfach zu gut. Tatsächlich ist es, wenn der Autor mit Apache, Nginx oder IIS arbeitet, fast so, als würde er mit einer Zeitmaschine ins Jahr 2010 oder früher reisen.
Author: Neel Chauhan
Contributors: Steven Spencer, Ganna Zhyrnova