Hlavní navigace

Web server Caddy: statické weby snadno a rychle

Michal Halenka 13. 5. 2016

Vytvoření jednoduchého webu na vlastním stroji je stále ještě náročnější, než by si někteří představovali. Změnit se to snaží hned několik projektů. Jedním z nich je i webový server Caddy.

minulém článku byly představeny základní vlastnosti netradičního webového serveru Caddy. Ten se od ostatních odlišuje svým zaměřením na jednoduchou konfiguraci a snadné rozšíření. Jedním z těchto rozšíření je například git addon, díky kterému lze snadno Caddyho propojit s repozitářem, a s pomocí některého generátoru statických webů pak tvořit jednoduchý web za pár okamžiků.

CMS a ti druzí

Přestože je v dnešní době moderní používat pro správu webu content management systémy, ani staromódní způsob vytvoření obsahu na jiném stroji a jeho nakopírování na web server ještě neřekl své poslední slovo. V tomto případě se budeme věnovat právě druhému zmíněnému. Konkrétně se tedy pokusíme nastolit model, kdy obsah vytváříme i editujeme na lokálním stroji, a pak prostřednictvím verzovacího systému nahrajeme na správné místo.

Pro účely tohoto článku bude dále použit generátor statických webů Hugo, který generuje statické HTML soubory ze zdrojových dat ve značkovacím jazyce (např. Markdown). Pro reálné nasazení je samotná volba generátoru statických webů natolik nepodstatná, a instalace a používání generátoru Hugo je natolik triviální, že v tomto článku nebude zahrnuta.

Caddyfile

Konfiguraci základního zabezpečení jsme shrnuli v minulém článku. Na tomto základě by tedy konfigurace webu mohla vypadat nějak takto:

http://caddy.halenka.eu {
    redir https://caddy.halenka.eu/
}
https://caddy.halenka.eu {
    header / Strict-Transport-Security "max-age=1814400; includeSubDomains; preload"
    root ./blog/public/
} 

Git modul

Jak již bylo zmíněno, pro stahování dat využijeme git addon, který nasměrujeme na náš veřejný Git repozitář s obsahem webu. S příslušnou konfigurací pak vypadá takto:

http://caddy.halenka.eu {
    redir https://caddy.halenka.eu/
}
https://caddy.halenka.eu {
    header / Strict-Transport-Security "max-age=1814400; includeSubDomains; preload"
    root ./blog/public/
    git github.com/HalisCz/test-web {
        path ../
        branch master
        hook /webhook super-tajny-pristupovy-token
        then hugo --theme=base16
    }
    shutdown rm -r blog
} 

Kromě samotného zavolání modulu git, a předání cesty ke vzdálenému repozitáři, obsahuje konfigurace také cestu, do které bude repozitář naklonován. V tomto případě je klonován obsah repozitáře o úroveň výše, než je nastavený kořenový adresář webu. Díky tomu pak bude webový server zobrazovat HTML soubory z odpovídajícího adresáře. Dále je v konfiguraci nastavena volba větve repozitáře, webhook s přístupovým tokenem pro notifikaci o nových commitech ze vzdáleného repozitáře a volání příslušného příkazu pro vygenerování HTML stránek ze zdrojových dat. Na konec konfiguračního souboru byl doplněn příkaz pro smazání obsahu repozitáře při vypnutí webového serveru.

Posledním chybějícím střípkem konfigurace je pak nastavení Git repozitáře tak, aby při obdržení nových commitů notifikoval server na adrese https://caddy.halenka.eu/webhook s autorizačním tokenem  super-tajny-pristupovy-token.

Závěr

Caddy se snaží nechovat jen jako web server, ale i jako jednoduchá webová aplikace. Zatímco podobné chování by u jiných serverů vyžadovalo zapojení externích skriptů, Caddy přichází s modulem, díky kterému je zapotřebí jen konfigurace o desítce řádků. Ačkoliv je Caddy ještě velmi mladý, je zde vidět touha autorů po jednoduchosti, kterou se jejich výtvor rozhodně snaží naplnit, a bude přinejmenším zajímavé, kam dál se bude tento projekt ubírat.

Našli jste v článku chybu?
Root.cz: 250 Mbit/s po telefonní lince, když máte štěstí

250 Mbit/s po telefonní lince, když máte štěstí

Vitalia.cz: Znáte „černý detox“? Ani to nezkoušejte

Znáte „černý detox“? Ani to nezkoušejte

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Lupa.cz: Seznam mění vedení. Pavel Zima v čele končí

Seznam mění vedení. Pavel Zima v čele končí

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

DigiZone.cz: Flix TV má set-top box s HEVC

Flix TV má set-top box s HEVC

Vitalia.cz: Dáte si jahody s plísní?

Dáte si jahody s plísní?

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

Podnikatel.cz: Na poslední chvíli šokuje výjimkami v EET

Na poslední chvíli šokuje výjimkami v EET

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

DigiZone.cz: Rádio Šlágr má licenci pro digi vysílání

Rádio Šlágr má licenci pro digi vysílání

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život