S Javou na webovém serveru

10. 1. 2001
Doba čtení: 4 minuty

Sdílet

Jazyk Java se nám začal rozpínat i na webové a aplikační servery. Linux nezůstává pozadu, podpora Javy je v něm vynikající a to i na poli serverových součástí. Hlavním tahounem posledních měsíců je Tomcat, na platformě nezávislá implementace servletů a JSP stránek. V následujícím článku Tomcat nainstalujeme do nejpoužívanějšího webového serveru na světě - Apache.

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/a­pache2.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/tom­cat/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.

ict ve školství 24

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.