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.
- A hozzászóláshoz be kell jelentkezni