A więc chcesz skonfigurować web server.
Świetnie.
To znaczy, że jesteś gotowy wejść do starożytnego świata:
- plików konfiguracyjnych,
- portów,
- logów,
- uprawnień,
- i tajemniczych błędów, które pojawiają się tylko wtedy, kiedy jesteś zmęczony.
Ale dzisiaj nie wybieramy cierpienia jako głównego modelu pracy.
Dzisiaj używamy Caddy.
Caddy to nowoczesny web server, który potrafi serwować pliki statyczne, działać jako reverse proxy i automatycznie obsługiwać HTTPS, kiedy używasz prawdziwej domeny.
Innymi słowy, robi za ciebie wiele nudnych rzeczy.
Nie wszystkie, oczywiście.
To nadal Linux.
Nie jesteś całkowicie wolny.
Ale jesteś bardzo blisko.
Dlaczego Caddy?
Caddy jest popularny, ponieważ sprawia, że typowe zadania web servera stają się zaskakująco proste.
Z Caddy możesz:
- serwować prostą stronę statyczną,
- zrobić reverse proxy dla aplikacji,
- używać czystej i czytelnej konfiguracji,
- mieć automatyczne HTTPS z prawdziwą domeną,
- przeładować konfigurację bez zamieniania wieczoru w dramatyczny dokument techniczny.
Jeśli Nginx czasami przypomina czytanie dokumentów prawnych napisanych przez bardzo poważnego robota, Caddy brzmi bardziej jak:
“Powiedz mi, jaką stronę chcesz, a ja spróbuję nie robić z tego dziwnej historii.”
Bardzo odświeżające.
Instalacja Caddy na Linuxie
Zainstalujemy Caddy na Arch Linux, Fedora i Ubuntu.
Wybierz swoją dystrybucję i wykonaj odpowiednie komendy.
Żadna ceremonia duchowa nie jest wymagana.
Prawdopodobnie.
Arch Linux: droga odważnych
Na Arch Linux instalacja jest pięknie prosta.
Uruchom:
sudo pacman -Syu caddy
I tyle.
Użytkownicy Archa kochają, kiedy rzeczy są proste, bo wtedy mają więcej czasu, żeby tłumaczyć, dlaczego używają Archa.
Sprawdź, czy Caddy został zainstalowany:
caddy version
Jeśli widzisz numer wersji, Caddy jest gotowy.
Twój terminal zatwierdził tę operację.
Na razie.
Fedora: czysto, nowocześnie i lekko poważnie
Na Fedorze zainstaluj Caddy poleceniem:
sudo dnf install caddy
Potem sprawdź wersję:
caddy version
Fedora zwykle sprawia wrażenie dopracowanej i profesjonalnej, jak stacja robocza, która pije espresso i czyta dokumentację przed śniadaniem.
Caddy pasuje tutaj bardzo dobrze.
Ubuntu: kilka kroków więcej, bo tradycja
Na Ubuntu najpierw dodamy oficjalne repozytorium Caddy.
Zainstaluj potrzebne pakiety:
sudo apt update
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
Dodaj klucz GPG Caddy:
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
Dodaj repozytorium Caddy:
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
Nadaj odczyt dla klucza i listy repozytorium:
sudo chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
sudo chmod o+r /etc/apt/sources.list.d/caddy-stable.list
Zaktualizuj listę pakietów i zainstaluj Caddy:
sudo apt update
sudo apt install caddy
Teraz sprawdź wersję:
caddy version
Jeśli odpowiada, gratulacje.
Ubuntu i Caddy zaczęły ze sobą rozmawiać.
To już więcej komunikacji niż w niektórych systemach produkcyjnych.
Tworzymy prostą stronę internetową
Zanim skonfigurujemy coś poważnego, stwórzmy małą stronę HTML.
Bez dramatu.
Tylko tyle, żeby udowodnić, że serwer żyje i nie ocenia nas po cichu.
Utwórz folder:
mkdir my_website
cd my_website
Utwórz plik index.html:
nano index.html
Dodaj ten HTML:
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cześć od Caddy</title>
</head>
<body>
<h1>Cześć, świecie!</h1>
<p>Ta prosta strona działa przez Caddy.</p>
</body>
</html>
Zapisz plik.
Masz teraz stronę internetową.
Małą, tak.
Ale Rzym też podobno zaczął się od jednego podejrzanie położonego kamienia.
Testowanie Caddy bez Caddyfile
Teraz uruchomimy serwowanie tego folderu bezpośrednio.
Upewnij się, że jesteś w folderze my_website:
pwd
Następnie uruchom:
caddy file-server --listen :8080
Otwórz przeglądarkę i przejdź pod adres:
http://localhost:8080
Jeśli widzisz swoją stronę, Caddy działa.
To piękny moment, kiedy przeglądarka coś pokazuje, a ty przez chwilę czujesz się jak administrator systemu.
Ciesz się tym.
To uczucie może nie trwać wiecznie.
Tworzenie Caddyfile
Uruchamianie Caddy z linii poleceń jest przydatne do testów.
Ale do prawdziwej konfiguracji zwykle potrzebujesz Caddyfile.
Caddyfile to plik konfiguracyjny Caddy.
Mówi Caddy, co ma serwować, skąd ma to serwować i jak dramatyczny ma być wieczór.
W folderze my_website utwórz plik o nazwie Caddyfile:
nano Caddyfile
Dodaj to:
localhost:8080 {
root * .
file_server
}
To mówi Caddy:
- nasłuchuj na
localhost:8080, - użyj aktualnego folderu jako root strony,
- serwuj pliki z tego folderu.
Teraz uruchom Caddy używając Caddyfile:
caddy run
Otwórz:
http://localhost:8080
Jeśli strona pojawia się ponownie, wszystko działa.
Caddy przeczytał twoje instrukcje i zachował się jak odpowiedzialny dorosły.
Rzadkie, ale piękne.
Formatowanie Caddyfile
Caddy potrafi sam sformatować swój plik konfiguracyjny.
To przydatne, bo komputery często formatują lepiej niż ludzie, którzy próbują konfigurować serwer po kolacji.
Uruchom:
caddy fmt --overwrite Caddyfile
To uporządkuje formatowanie.
Schludny Caddyfile to szczęśliwy Caddyfile.
Albo przynajmniej mniej podejrzany.
Walidacja konfiguracji
Zanim użyjesz konfiguracji na poważnie, sprawdź ją:
caddy validate --config Caddyfile
Jeśli Caddy mówi, że konfiguracja jest poprawna, dobrze.
Jeśli narzeka, przeczytaj błąd uważnie.
Błędy Caddy zwykle są bardziej uprzejme niż błędy wielu innych web serverów.
To nie znaczy, że zawsze są przyjemne.
Ale przynajmniej próbują.
Używanie prawdziwej domeny z HTTPS
Tutaj Caddy robi się naprawdę ciekawy.
Jeśli masz prawdziwą domenę wskazującą na twój serwer, możesz napisać coś takiego:
example.com {
root * /var/www/example.com
file_server
}
Z prawdziwą domeną Caddy może automatycznie obsługiwać certyfikaty HTTPS.
To oznacza brak ręcznej walki z certyfikatami.
Brak długiego rytuału z losowymi plikami.
Brak emocjonalnej bitwy z odnowieniem certyfikatu o 01:13 w nocy.
Po prostu czysta konfiguracja i automatyczne HTTPS.
Prawie zbyt miłe, żeby nie było podejrzane.
Bardziej realistyczna konfiguracja strony statycznej
Na prawdziwym serwerze raczej nie chcesz trzymać strony w losowym folderze w katalogu domowym.
Typowe miejsce na strony internetowe to /var/www.
Utwórz folder dla swojej strony:
sudo mkdir -p /var/www/example.com
Skopiuj tam plik HTML:
sudo cp index.html /var/www/example.com/index.html
Teraz edytuj systemowy Caddyfile:
sudo nano /etc/caddy/Caddyfile
Użyj tej konfiguracji:
example.com {
root * /var/www/example.com
file_server
}
Zamień example.com na swoją prawdziwą domenę.
Następnie przeładuj Caddy:
sudo systemctl reload caddy
Jeżeli z jakiegoś powodu reload nie zadziała, zrestartuj usługę:
sudo systemctl restart caddy
Reload jest delikatniejszy.
Restart to metoda “wyłącz i włącz ponownie”.
Obie mają swoje miejsce w świętej historii informatyki.
Uruchamianie Caddy jako usługi systemowej
Jeśli zainstalowałeś Caddy przez menedżera pakietów swojej dystrybucji, możesz uruchamiać go przez systemd.
Włącz Caddy, żeby startował automatycznie przy uruchomieniu systemu:
sudo systemctl enable caddy
Uruchom go teraz:
sudo systemctl start caddy
Albo zrób obie rzeczy jednocześnie:
sudo systemctl enable --now caddy
Sprawdź status:
sudo systemctl status caddy
Jeśli widzisz:
active (running)
Caddy żyje i pracuje.
Twój serwer ma teraz małego pracownika, który nigdy nie śpi.
Traktuj go lepiej niż wiele firm traktuje stażystów.
Przeładowanie Caddy po zmianach
Kiedy zmieniasz /etc/caddy/Caddyfile, przeładuj Caddy:
sudo systemctl reload caddy
To zastosuje nową konfigurację bez pełnego zatrzymywania usługi.
Przed przeładowaniem możesz też sprawdzić systemowy Caddyfile:
sudo caddy validate --config /etc/caddy/Caddyfile
To dobry nawyk.
Nie ekscytujący.
Ale wiele dobrych nawyków jest nudnych.
Właśnie dlatego ratują nas przed przyszłym cierpieniem.
Sprawdzanie logów Caddy
Jeśli coś nie działa, sprawdź logi:
sudo journalctl -u caddy -f
To pokazuje logi Caddy w czasie rzeczywistym.
To trochę jak słuchać, jak twój serwer szepcze:
“Oto dokładnie dlaczego odmawiam współpracy.”
Czasami logi są pomocne.
Czasami edukacyjne.
Czasami wyglądają jak osobisty atak napisany językiem technicznym.
Mimo wszystko czytaj je.
Przydatne komendy Caddy
Oto kilka wygodnych komend.
Sprawdzenie wersji Caddy
caddy version
Uruchomienie Caddy w aktualnym folderze
caddy file-server --listen :8080
Uruchomienie Caddy z Caddyfile
caddy run
Formatowanie Caddyfile
caddy fmt --overwrite Caddyfile
Walidacja Caddyfile
caddy validate --config Caddyfile
Restart usługi systemowej
sudo systemctl restart caddy
Przeładowanie usługi systemowej
sudo systemctl reload caddy
Wyświetlanie logów
sudo journalctl -u caddy -f
Mała uwaga o portach
Do lokalnych testów port 8080 jest wygodny.
Zwykle nie wymaga specjalnych uprawnień i nie kłóci się z innymi web serverami.
Dla prawdziwych stron normalnie używa się:
- portu
80dla HTTP, - portu
443dla HTTPS.
Jeśli inna usługa już używa tych portów, Caddy może odmówić startu.
Aby sprawdzić, co nasłuchuje, uruchom:
sudo ss -tulpn
Potem szukaj :80 lub :443.
Jeśli znajdziesz tam inny web server, gratulacje.
Masz teraz małą serwerową dyskusję do rozwiązania.
Końcowe przemyślenia
I gotowe.
Zainstalowałeś Caddy, stworzyłeś prostą stronę HTML, uruchomiłeś ją lokalnie, napisałeś Caddyfile i nauczyłeś się uruchamiać Caddy jako usługę systemową.
Nieźle.
Caddy to jedno z tych narzędzi, które sprawiają, że konfiguracja serwera mniej przypomina starożytną magię, a bardziej rozmowę z bardzo praktycznym asystentem.
Nie zbuduje strony za ciebie.
Nie naprawi twojego CSS.
Nie wyjaśni, dlaczego JavaScript działa tylko po dwukrotnym odświeżeniu strony.
Ale może serwować twoją stronę, obsłużyć HTTPS i spokojnie działać w tle.
I szczerze mówiąc, to już bardzo dużo.
Ciesz się swoim nowym web serverem.
I pamiętaj:
Najlepsza konfiguracja serwera to taka, którą nadal rozumiesz po trzech miesiącach.
