2.3.1. fejezet, Szerver telepítés

MySQL adatbázisnál ügyeljünk az UTF-8 tartalom kezelésére. Első lépésként készítsünk egy adatbázist, ami alapjául szolgál a tábla karakterkódolásainak

CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;

Adjuk hozzá a kapcsolódó felhasználót, és a neki szabott jogkört:

GRANT ALL ON dbname.* TO USER@localhost IDENTIFIED BY "password";

A fejlesztés a Tomcat 5.5-el indult, 2008 januárban azonban a 6.0 lett a fejlesztés megcélzott futtatókörnyezete. Az Apache szerverhez telepíthető a mod_jk kiegészítő modul, amely segít integrálni a Tomcat szervert egy korábban telepített, és bevált redszerbe.

A Tomcat babelshop.eu oldalba

integrálása

a következő konfigurációval történt:

A letöltött .so fájlt bemásoltam a /usr/lib/apache2/modules/mod_jk.so elérési útra.

server.xml

    <Engine name="Catalina" defaultHost="localhost">
    ...
    <Listener className="org.apache.jk.config.ApacheConfig" modJk="/usr/lib/apache2/modules/mod_jk.so" />
    ...
    </Engine>

Létre kell hozni egy /etc/apache2/logs könyvtárat és a virtualhost localhost részt kikommentezni a mod_jk.conf fájlban.

Tomcat újraindulását követően létrejött a $TOMCAT_HOME/conf/auto/mod_jk.conf fájl. Ezt beemeltem az apache2.conf végére.

Include $TOMCAT_HOME/conf/auto/mod_jk.conf

A generált mod_jk.conf-ot az elérhető szolgáltatásokról generálja a Tomcat. Tartalma az alábbi lehet:

<IfModule !mod_jk.c>
  LoadModule jk_module "/usr/lib/apache2/modules/mod_jk.so"
</IfModule>
 
 
<VirtualHost localhost>
    ServerName localhost
 
    JkMount /manager ajp13
    JkMount /manager/* ajp13
 
    JkMount /docs ajp13
    JkMount /docs/* ajp13
 
    JkMount /examples ajp13
    JkMount /examples/* ajp13
 
    JkMount /host-manager ajp13
    JkMount /host-manager/* ajp13
 
    JkMount /OmegaDocumentStore ajp13
    JkMount /OmegaDocumentStore/* ajp13
</VirtualHost>

Mivel virtuális szerverek futnak ezen a gépen, kivágtam a mod_jk.conf fájlból az átirányításokat végző sorokat (ajp13 végűek), és átemeltem az /etc/apache2/sites-enabled könyvtárban tárolt babelshop konfigurációs fájlba, a VirtualHost tagok közé.

JkMount /OmegaDocumentStore ajp13
JkMount /OmegaDocumentStore/* ajp13

Ha Tomcat 7-est használunk Ubuntu 11.10-en, akkor ne tegyük a server.xml fájlba a Listenert. A mod_jk telepítését követően az /etc/libapache2-mod-jk/workers.properties definiálja az ajp13_worker kapcsolatot az apache2-nek, és a virtuális szerverekhez hasonlóan lehet az /etc/apache2/sites-enabled/000-default fájlba bemásolni a Java alkalmazásokat. Ha nincs egyéb virtuális szerver a gépen, a 000-default a következőként nézhet ki:

<VirtualHost *:80>
	ServerAdmin webmaster@localhost
        ServerName localhost
 
    JkMount /manager ajp13_worker
    JkMount /manager/* ajp13_worker
 
    JkMount /docs ajp13_worker
    JkMount /docs/* ajp13_worker
 
    JkMount /examples ajp13_worker
    JkMount /examples/* ajp13_worker
 
    JkMount /host-manager ajp13_worker
    JkMount /host-manager/* ajp13_worker
 
    JkMount /ServiceRequestHandlerWithWebflow ajp13_worker
    JkMount /ServiceRequestHandlerWithWebflow/* ajp13_worker
 
	DocumentRoot /var/www
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>
 
	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
	<Directory "/usr/lib/cgi-bin">
		AllowOverride None
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		Order allow,deny
		Allow from all
	</Directory>
 
	ErrorLog ${APACHE_LOG_DIR}/error.log
 
	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn
 
	CustomLog ${APACHE_LOG_DIR}/access.log combined
 
    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
 
</VirtualHost>

Az Apache szerver újraindítását követően a Java szerver elérhetővé válik a 80-as porton. Így akár scriptekből is generálhatóvá válik a válasz, ami teszteléskor AJAX kéréseknél lehet érdekes. Az egyszerűbb nyelvezettel (pl.:PHP, PERL, Ruby, BASH) gyorsabban készíthető olyan program, ami a HTML beviteli mezőkbe véletlen tartalmat generál, és így JavaScript-el automatizálható a böngészőben megjelenő oldal tesztelése. Nem kell folyton kézzel kitölteni a mezőket, hogy egy-egy tesztesetet ellenőrizzünk.

Ha WampServer 2.0-t használunk, kapcsoljuk be az Apache modulok közül a proxy_module-t és a proxy_ajp_modul-t. Ezek biztosítják az átjárást Tomcat alkalmazásunk felé. A httpd.conf végéhez adjuk hozzá az alkalmazásunk gyökerét:

ProxyPass /EppWebClient ajp://localhost:8009/EppWebClient

és indítsuk újra az Apache szolgáltatást. Ha mindent ügyesen beállítottunk, a faces könyvtárban található index.xhtml-t http://localhost/EppWebClient/faces/index.xhtml URL-en elérjük. Bővebb leírást itt találunk a beállításokról.

A Tomcat 6.0-tól kikerült a telepítőcsomagból az admin alkalmazás. Ennek pótlásaként letölthető a LambdaProbe alkalmazása. További információkat adhat a szerver magáról, ha a Java futtatási paraméterek közé felveszünk egy -Dcom.sun.management.jmxremote paramétert, engedélyezve a JMX felügyeletet. A JDK-ban található JConsole alkalmazással ezt követően megtaláljuk a tomcat szálakat, memória használatot, és minden JVM-el kapcsolatos információt.

A fejezet írásakor a probe1.7b.zip verzió volt elérhető. Letöltését követően a benne található probe.war fájlt a Tomcat webapps könyvtárába másoljuk, majd a böngészőbe az adminisztrációs
felületet betölthetjük a http://localhost:8080/probe/ oldalon.

Hogy szerverünk titkosított csatornán kommunikálhasson, létre kell hozni egy kulcstárat. Generáljunk szerver kulcsot a következő parancsal:

keytool -genkey -alias tomcat -keyalg RSA -keystore c:\tomcat6\keystore.key


A Tomcat szervert az SSL titkosításhoz konfiguráljuk a server.xml módosításával:

<connector port="443" maxhttpheadersize="8192" maxthreads="150"
minsparethreads="25" maxsparethreads="75" 
enablelookups="false" disableuploadtimeout="true" 
acceptcount="100" scheme="https" 
secure="true" clientauth="false" sslprotocol="TLS" 
keystorefile="c:\tomcat6\keystore.key" keystorepass="changeit"/> 

E mellett a Tomcat Monitor - Java Options fülön be kell vennünk két paramétert (Linuxon a CATALINA_OPTS környezeti változóba):

-Djavax.net.ssl.trustStore=c:\tomcat6\keystore.key
-Djavax.net.ssl.trustStorePassword=changeit

A szerverünk titkosított csatornán kommunikálna más szerverrel, ezért szükséges a távoli szerver publikus kulcsát importálnunk a kulcstárba a következő parancsal:

keytool -import -alias babelshop.eu -keystore c:\tomcat6\keystore.key -file babelshop.cer

Publikus kulcsokat lementhetjük az IE-vel, vagy a Firefox-ba és Thunderbird-be egyaránt használható Cert Viewer Plus beépülő modullal. Az exportálás X.509 Certificate (DER) formátumú legyen. Ezt követően a connector tagba meg kell adnunk a kulcstárat, mint megbízható szerverek kulcstárát a következő módon:

<connector port="8080" protocol="HTTP/1.1" 
connectiontimeout="20000" redirectport="8443" 
truststorefile="c:\tomcat6\keystore.key" truststorepass="changeit"/>

A fent megjelölt connector tagok telepítéskori alapértékeikkel megtalálhatók a server.xml-be. A titkosított csatorna, azaz a 8443-as port ki van kapcsolva, mivel a használatához a fentieknek megfelelően először készítenünk kell hozzá egy saját kulcstárat, saját privát és publikus kulcsokkal. Ezért a módosításokat követően a connector tag elött és után található, xml-nek megfelelő kommenteket (<!-- és -->) ki kell szedni, mielőtt újra indítjuk a szervert.