Balík Tomcat 3.X obsahuje servlet engine, který vyhovuje API 2.2, JSP kompilátor Jasper kompatibilní s JSP 1.1 (čtyřka bude umět zbrusu nové specifikace 2.3 a 1.2), http démona a jiné pomocné utilitky včetně dokumentace. Tomcat může pracovat jak standalone (v tomto případě se používá interní http server), tak ve spolupráci se serverem Apache. V prvním kroku nakonfigurujeme Tomcat pro standalone režim, vše odzkoušíme a poté se vrhneme na konfiguraci Apache.
Rozchodit Tomcat v prvním režimu je snadné. Po rozbalení binární distribuce (dejme tomu do /usr/local/tomcat) nastavíme dvě systémové proměnné a to $TOMCAT_HOME a $JAVA_HOME.
První jmenovaná proměnná bude v našem příkladu obsahovat /usr/local/tomcat a druhá pak cestu k Javě. Odzkoušel jsem Tomcat s IBM Javou verze 1.1.8 a 1.3.0 a s Blackdown Javou 1.1.8, 1.2.2 a 1.3.0, ale Tomcat by měl chodit teoreticky na všem. Po nastavení těchto dvou proměnných můžeme Tomcat spustit a to příkazem bin/tomcat.sh run. Tomcat se nyní spustí na popředí a my můžeme na konzoli sledovat případné chybové hlášky.
Do prohlížeče nyní zadáme jméno stroje (či jeho adresu) a port (oddělený dvojtečkou). V přednastavené konfiguraci je to port 8080. Měli bychom spatřit testovací stránky Tomcatu s hromadou pěkně zpracovaných příkladů Servletů a JSP stránek. Na tomto místě bychom si mohli něco o Servletech říci. Shrnu to do jedné věty: servlet je něco na způsob CGI, ovšem napsaný v Javě. Výhodou je, že jsou přenositelné na jakýkoliv systém, bezpečné a mají obrovské zázemí Javy, do které Sun investoval miliony dolarů. Pomocí JSP (neboli Java Server Pages) můžete vpisovat Javovský kód přímo do HTML stránek (tak jako v ASP, PHP atd.), používat JavaBeansy a dělat všechno to, co normálně (samozřejmě nebudete používat třeba SWING – to by nemělo smysl). JSP kompilátor se postará o to, aby všechny JSP stránky byly „překompilovány“ do servletů a ty se pak spouští. Výhodou JSP je rychlost, protože po „kompilaci“ jsou vygenerované servlety svižné a jejich rychlost je srovnatelná s ASP či PHP.
Takže Tomcat v samostatném režimu funguje bezvadně a nyní přistoupíme ke konfiguraci Apache. Pokud chcete s Tomcatem jenom zkoušet, bude vám určitě standalone režim stačit, jakmile ale pojedou servlety/JSP v ostrém provozu, budou dotazy na statické stránky zbytečně zpomalovat celý systém. Proto je výhodná tato konfigurace – kromě toho můžete na webu použít i jiné skriptovací jazyky či CGI.
Nejprve si povíme, jak Tomcat vlastně s Apachem spolupracuje. Je to samostatná aplikace, která je spuštěná zároveň s Apachem. Komunikace probíhá přes TCP pomocí protokolu AJP (porty 8007 a 8009). Do Apache je nutno nainstalovat modul, který se k Tomcatovi bude připojovat a zajišťovat funkčnost. Moduly jsou k dispozici dva:
- mod_jserv – je upraveným původním servletovým modulem moc_jserv
- mod_jk – je zcela novým modulem napsaným na míru pro Tomcat, je rychlejší než mod_jserv díky AJP protokolu 1.3 a RMI, je menší a umožňuje použít https
Oba moduly se distribuují ve zdrojovém tvaru a najdete je ve zdrojácích celého Tomcata v adresáři src/native/apache/jServ resp. src/native/jk a src/native/apache1.3 nebo src/native/apache2.0 (podle toho jaký Apache používáte). Budeme se nyní zabývat modulem mod_jk.
Kompilace je díky APXS skriptu banální. Stačí přejít do adresáře src/native/apache1.3 (src/native/apache2.0 pro zbrusu nový Apache) a spustit krátkou kompilaci:
apxs -o mod_jk.so -I../jk -I/usr/local/jdk/include \ -I/usr/local/jdk/include/linux -c *.c ../jk/*.c
Nezapomeňte zaměnit /usr/local/jdk za vámi používanou Javu! Vytvořený mod_jk.so nyní překopírujte k ostatním modulům. Posledním krokem je konfigurace Apache. Tomcat při startu vytvoří soubor mod_jk.conf-auto který stačí nainkludovat do httpd.conf (Include /usr/local/tomcat/conf/mod_jk.conf-auto). Pokud váš Apache nepoužívá pro moduly adresář libexec, tak na mod_jk.so udělejte odkaz, protože Tomcatu se nedá nijak sdělit, když máte moduly na jiné cestě. Vyhnete se tak ruční konfiguraci a pokud vytvoříte nový kontext, po restartu se automaticky doplní do konfigurace Apache.
Nyní stačí přejít do adresáře /examples na vašem www serveru a vyzkoušet, zda to všechno funguje. Pokud Apache „hází pětistovku“ neboli chybu Internal server error – 500 a vy zkoumáte proč tomu tak je, když v error_logu nic není, tak vězte, že tato chyba nastane, když nemáte Tomcat spuštěn. Mod_jk.so se totiž snaží připojit na port 8007 (8009 v AJP 1.3 protokolu), kde nic není.
A co dále? Příště si začneme hrát se Servlety a JSP stránkami a podíváme se na ty podivné kontexty. Slouží k bezpečnému nastavení a zprovoznění webové aplikace.