Úvod
Cherokee zaujme hned v několika oblastech. V první řadě se jedná o server vyvíjený s velkým důrazem na výkon, měl by tedy být rychlejší než Apache, alespoň ve výchozím nastavení a v určitých situacích (jeden drobný benchmark naleznete v odkazech pod článkem). Webových serverů s důrazem na výkon existuje samozřejmě více, např. Lighttpd či Nginx. Cherokee má ovšem také vlastnost, která je u unixových webových serverů relativně unikátní – webové GUI. Cherokee tedy můžete nastavit pohodlně přes webové administrační rozhraní, alespoň z větší části. Díky tomu je možné uvažovat o Cherokee nejenom pro produkční server, ale také pro testovací stroje vývojářů, i když tam bude Cherokee soutěžit s balíkem XAMPP, který obsahuje Apache, MySQL, PHP a Perl v jedné instalaci.
Instalace
Samotná instalace webového serveru Cherokee je v Debianu velice jednoduchá, postačí nainstalovat Cherokee z distribučních repozitářů:
aptitude install cherokee
V případě jiných distribucí by to mělo jít obdobným způsobem, Cherokee je už poměrně zaběhnutý a známý projekt.
Webové rozhraní
Jak už bylo zmíněno výše, Cherokee se konfiguruje přes webové rozhraní. Konfigurační soubor samozřejmě existuje a sídlí v /etc/cherokee/cherokee.conf
. I když je možné jej ručně upravovat, není to doporučeno a samotný soubor neobsahuje prakticky žádné komentáře. Je rozhodně lepší a pohodlnější použít webové rozhraní. Za tímto účelem je třeba administrační webové rozhraní nejprve nahodit, k čemuž slouží následující příkaz:
cherokee-admin
Po spuštění tohoto příkazu se vám objeví výpis podobný tomuto:
Login: User: admin One-time Password: ewXpVKjHp2LQbi6v Web Interface: URL: http://127.0.0.1:9090/ Cherokee Web Server 1.0.8 (Jan 12 2011): Listening on port 127.0.0.1:9090, TLS disabled, IPv6 enabled, using epoll, 4096 fds system limit, max. 2041 connections, caching I/O, single thread
Jak je patrné, webové rozhraní běží na portu 9090 místní smyčky (localhost). Stejně tak je patrné, že vám byly přiděleny jednorázové přihlašovací údaje, které můžete použít k přihlášení do webového rozhraní (to je chráněno klasickou HTTP autentikací).
Úvodní obrazovka administračního webového rozhraní Cherokee
Pokud vám server běží na localhostu místního počítače, není to problém, stačí spustit prohlížeč a zadat URL http://127.0.0.1:9090/
. Běží-li vám server na vzdáleném počítači, máte dvě možnosti. Buď použijete SSH tunel a namapujete si vzdálený port 9090 na místní port, nebo webové rozhraní pustíte na síť, ale v takovém případě by bylo vhodné jej nějakým způsobem ochránit. Zmíněný SSH tunel můžete vytvořit takto:
ssh -N -f user@server -L 9090:127.0.0.1:9090
Pokud se rozhodnete pro druhou variantu, použijte parametr -b
a specifikujte IP adresu, na které má cherokee-admin
naslouchat, takto:
cherokee-admin -b 4.3.2.1
Před tím by ovšem bylo vhodné daný port zabezpečit, aby se k němu nemohl připojit někdo jiný. Za tímto účelem můžete použít linuxový firewall (Netfilter) a konfigurační nástroj iptables
a provést něco podobného tomuto:
iptables -I INPUT -p tcp --dport 9090 -j REJECT iptables -I INPUT -p tcp --dport 9090 -s 1.2.3.4 -j ACCEPT
Jen pro informaci, každé z těchto pravidel se vždy přidá na začátek řetězu (parametr -I
), proto jsou pravidla zapsána v „obráceném“ pořadí. První pravidlo, které skončí jako druhé, zakáže přístup na port 9090. Druhé pravidlo, které skončí jako první, povolí přístup na port 9090 z IP adresy 1.2.3.4
.
Samotné konfiguraci se příliš věnovat nebudu, neboť s grafickým (resp. webovým) rozhraním by nastavení mělo být relativně intuitivní. Porty a IP adresy pro naslouchání specifikujete na kartě General | Ports to listen. Virtuální servery se konfigurují na kartě vServers. Pro každý virtuální server můžete mít vlastní Document root (záložka Basics u zvoleného virtuálního serveru) a řadu pravidel pro zpracování obsahu (záložka Behaviour). To, který virtuální server se vám zobrazí za kterých okolností, nastavujete na kartě Host match. Můžete specifikovat jméno, wildcard (např. *.example.org), IP adresy či regulární výrazy.
Konfigurace virtuálních serverů v Cherokee
Po jakékoliv změně nezapomeňte konfiguraci uložit klepnutím na Save vpravo nahoře. Pokud bude potřeba restart, nabídne vám Cherokee několik možností – nerestartovat, provést bezpečný restart a restartovat natvrdo. Určitě zkuste nejdříve Graceful restart.
PHP
Jelikož Cherokee přistupuje k PHP přes rozhraní CGI, je potřeba nainstalovat balíček php5-cgi
a ujistit se, že v souboru /etc/php5/cgi/php.ini
je řádka s následujícím obsahem:
cgi.fix_pathinfo=1
Nastavení PHP v Cherokee je uživatelsky přívětivé, jen je důležité vědět, odkud začít. Klepněte na kartu vServers a zvolte si požadovaný virtuální server. Podívejte se na kartu Behaviour a klikněte na tlačítko Rule Management. V levém horním rohu rozhraní vytvořte nové pravidlo klepnutím na New. Měl by se spustit průvodce, který vidíte na obrázku níže. Zvolte Languages a následně PHP. Klepněte na Add a následně na Create. Konfiguraci nezapomeňte uložit, popřípadě server restartovat. Tím by mělo být nastavení hotové – můžete jej zkusit zkontrolovat vytvořením testovacího souboru s příponou php
a obsahem:
<?php phpinfo(); ?>
Průvodce pro konfiguraci PHP interpretu v Cherokee
Dodám, že webové rozhraní Cherokee se poměrně dost měnilo mezi jednotlivými verzemi. Tento návod je určen pro Debian Squeeze a Cherokee 1.0.8. U jiných verzí může být rozvržení webového rozhraní Cherokee mírně odlišné.
Cherokee a SSL
Konfigurace SSL v Cherokee přívětivá rozhodně není, alespoň v případě Debianu Squeeze. Správce očekávající jednoduché nastavení pak může skončit v e-mailové konferenci Debianu s domněnkou, že podpora pro SSL/TLS nebyla do balíčků Cherokee zakompilována, i když opak je pravdou.
Jako první krok nainstalujte knihovnu libssl
pro Cherokee. Ta není v závislostech Cherokee, takže nebyla nainstalována společně s ním. To můžete provést následujícím příkazem.
aptitude install libcherokee-mod-libssl
Poté byste měli nastavit SSL/TLS port. Klepněte na General | Network. U položky SSL/TLS back-end vyberte z rozbalovacího seznamu možnost OpenSSL / libssl. Nyní už můžete nastavit SSL port na kartě Ports to listen. Přidejte port 443 a zaškrtněte u něj políčko TLS/SSL port.
V tuto chvíli zbývá už jen přiřadit certifikáty jednotlivým virtuálním serverům (karta Security u zvoleného virtuálního serveru). Práce s certifikáty již byla v tomto seriálu popsána, konkrétně v článku o konfiguraci Apache. Cherokee implicitně využívá SNI (Server Name Identification), takže můžete hostovat více virtuálních serverů s různými certifikáty na jedné IP adrese. Problém s touto metodou je v (ne)podpoře ze strany některých prohlížečů na některých operačních systémech (viz seznam na Wikipedii). Pokud prohlížeč nepodporuje SNI, Cherokee mu pošle certifikát, který je přiřazen k výchozímu virtuálnímu serveru.
Více informací o nastavení SSL/TLS v Cherokee naleznete na webu projektu.
Paměťová náročnost a OpenVZ
Z mého testování vyplynula poměrně nepříjemná informace – i když je Cherokee paměťově nenáročný (z hlediska reálně zabrané paměti), rezervuje si velké hodnoty virtuální paměti (neboť spouští poměrně hodně vláken), což na fyzickém stroji nevadí, ale může to vadit u některých virtualizačních řešení, zejména u těch založených na kontejnerech (OpenVZ atd.). Tam se totiž tato paměť, byť nevyužitá, započítává do paměťové kvóty. Nejrychlejším řešením je minimalizovat počet vláken – v konfiguraci Cherokee je to karta Advanced | Resources a položka Thread Number (nastavte třeba na 1). V článku na lowendbox.com je navrženo ještě jiné, možná trošku krkolomnější, nicméně také velmi účinné řešení. Dodám, že na Xenu či KVM tento problém není.