Apache Tomcat

Apache Tomcat je webový kontajner, ktorý umožňuje spracovať webové aplikácie vo forme Java Servlets a JSP (Java Server Pages).

Balíky systému Tomcat 6.0 v Ubuntu podporujú dva rôzne spôsoby spustenia systému Tomcat. Môžeme ho nainštalovať ako bežnú samostatnú inštanciu systému, ktorá sa spustí pri štarte systému pod obmedzeným používateľom tomcat6. Ale môžeme ho zaviesť aj ako súkromnú inštanciu s vlastnými používateľskými právami, a spúšťať a zastavovať ho ručne. Tento druhý spôsob je vhodný ako server pre vývojárov, na ktorom si viacero používateľov potrebuje otestovať aplikáciu v súkromnej inštancii systému Tomcat.

Samostatná systémová inštalácia

Ak chceme nainštalovať server Tomcat, stačí zadať nasledujúci príkaz do príkazového riadka:

sudo apt-get install tomcat6

Tento príkaz nainštaluje server Tomcat s predvolenou webovou aplikáciou ROOT, ktorá iba zobrazí stránku s textom  "It works" (funguje to).

Konfigurácia

Konfiguračné súbory systému Tomcat môžeme nájsť v priečinku /etc/tomcat6. V tejto časti povieme iba o najzákladnejších voľbách konfigurácie, viac informácii sa nahádza na stránke Tomcat 6.0 documentation.

Zmena predvolených portov

V predvolenom stave Tomcat 6.0 beží s HTTP konektorom, ktorý načúva na porte 8080 a s AJP konektorom, ktorý načúva na porte 8009. Toto predvolené nastavenie portov môžeme zmeniť, aby sme predišli konfliktu s iným serverom v systéme. Urobíme to zmenou nasledujúcich riadkov v súbore /etc/tomcat6/server.xml:

<Connector port="8080" protocol="HTTP/1.1" 
connectionTimeout="20000"
redirectPort="8443" />
...
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Zmena výberu virtuálneho stroja JVM

V predvolenom stave Tomcat bude pre spúšťanie Java aplikácií preferovať virtuálny stroj OpenJDK-6, potom skúsi JVM od spoločnosti Sun, a potom skúsi ostatné JVM. Ak máte nainštalovaná viaceré virtuálne stroje JVM, môžete nastaviť, ktorý z nich má byť použitý pomocou nastavenia JAVA_HOME v súbore /etc/default/tomcat6:

JAVA_HOME=/usr/lib/jvm/java-6-sun

Deklarácia používateľov a rolí

Meno používateľa, heslo a rolu (skupinu) môžete zadefinovať centrálne v kontaineri pre tzv. Servlety. V systéme Tomcat 6.0 sa to robí v súbore /etc/tomcat6/tomcat-users.xml:

<role rolename="admin"/>
<user username="tomcat" password="s3cret" roles="admin"/>

Použite štandardných webových aplikácii systému Tomcat

Tomcat sa dodáva s webovými aplikáciami, ktoré môžeme nainštalovať kvôli dokumentácii, administrácii alebo demo ukážkam.

Dokumentácia systému Tomcat

Balík tomcat6-docs obsahuje dokumentáciu Tomcat 6.0 v tvare webovej aplikácie, ku ktorej sa dostaneme zadaním adresy http://nasserver:8080/docs. Môžeme ju nainštalovať zadaním nasledujúceho príkazu do príkazového riadka:

sudo apt-get install tomcat6-docs

Webové aplikácie na administráciu systému Tomcat

Balík tomcat6-admin obsahuje dve webové aplikácie, ktoré môžeme použiť na administráciu servera Tomcat pomocou webového rozhrania. Môžeme ich nainštalovať tak, že zadáme nasledujúci príkaz:

sudo apt-get install tomcat6-admin

Prvou aplikáciou je manager, ku ktorému sa môžeme dostať zadaním adresy http://nasserver:8080/manager/html. Využíva sa najmä na získanie informácii o stave servera a reštartovanie webových aplikácií.

[Note]

Prístup do aplikácie manager je v predvolenom stave chránený: pred tým, ako sa ho pokúsite otvoriť, je potrebné zadefinovať používateľa s rolou "manager" v súbore /etc/tomcat6/tomcat-users.xml.

Druhou aplikáciou je host-manager, ktorý otvoríme zadaním adresy http://nasserver:8080/host-manager/html. Používa sa na dynamické vytváranie virtuálnych staníc.

[Note]

Prístup k aplikácii host-manager je tiež chránený: pred tým ako sa ho pokúsite otvoriť, je potrebné definovať používateľa s rolou  "admin" v súbore /etc/tomcat6/tomcat-users.xml.

Kvôli bezpečnosti používateľ tomcat6 v predvolenom stave nemôže zapisovať do priečinka /etc/tomcat6. Niektoré funkcie týchto administrátorských aplikácií (application deployment, virtual host creation) potrebujú zapisovať do tohto priečinka. Ak potrebujeme tieto funkcie spustiť, pridáme skupine tomcat6 potrebné práva:

sudo chgrp -R tomcat6 /etc/tomcat6
sudo chmod -R g+w /etc/tomcat6

Ukážkové webové aplikácie pre Tomcat

Balík tomcat6-examples obsahuje dve webové aplikácie, ktoré sa dajú použiť na otestovanie a demonštrovanie funkcií Servletov a JSP, ktoré môžeme otvoriť zadaním adresy http://nasserver:8080/examples. Môžeme ich nainštalovať zadaním tohto príkazu:

sudo apt-get install tomcat6-examples

Používanie súkromných inštancií

Tomcat sa často používa na vývoj a testovanie aplikácií, kde bežná inštalácia nepostačuje pre potreby viacerých používateľov. Balíky Tomcat 6.0 v Ubuntu obsahujú nástroj, ktorý každému používateľovi umožňuje spustiť svoju vlastnú inštanciu (bez oprávnenia používateľa root), pričom bude používať knižnice nainštalované v systéme.

[Note]

Je možné naraz spúšťať inštancie v bežnom režime aj v súkromnom režime, ak nepoužívajú rovnaké TCP porty.

Inštalácia podpory súkromných inštancií

Všetko potrebné na spusťanie súkromných inštancií nainštalujeme pomocou nasledujúceho príkazu:

sudo apt-get install tomcat6-user

Vytvorenie súkromnej inštancie

Priečinok pre súkromnú inštanciu môžeme vytvoriť zadaním nasledujúceho príkazu do príkazového riadka:

tomcat6-instance-create moja-instancia

Príkaz vytvorí nový priečinok s názvom moja-instancia so všetkými potrebnými podpriečinkami  a skriptami. Teraz môžeme napríklad nainštalovať potrebné knižnice do podpriečinka lib/ a webové aplikácie umiestniť do podpriečinka webapps/. V predvolenom stave tam žiadna aplikácia nie je.

Konfigurácia súkromnej inštancie

Privátna inštancia má bežné konfiguračné súbory pre Tomcat umiestnené v podpriečinku conf/. Napríklad môžeme otvoriť súbor conf/server.xml a zmeniť predvolené porty, ktoré bude súkromná inštancia systému Tomcat používať, aby sme sa vyhli konfliktu s ostatnými bežiacimi inštanciami.

Spustenie a zastavenie súkromnej inštancie

Súkromnú inštanciu môžeme spustiť zadaním nasledujúceho príkazu do príkazového riadka (za predpokladu, že je umiestnená v priečinku moja-instancia):

moja-instancia/bin/startup.sh
[Note]

Chybové hlásenia sa nachádzajú v podpriečinku logs/. Ak vidíte chybu java.net.BindException: Address already in use<null>:8080, znamená to, že port, ktorý používate. už je použitý inou aplikáciou a je potrebné ho zmeniť.

Inštanciu môžeme zastaviť zadaním nasledujúceho príkazu do príkazového riadka (za predpokladu, že je umiestnená v priečinku moja-instancia):

moja-instancia/bin/shutdown.sh

Zdroje