1.4. fejezet, Apache httpd ajp

Ha Apache httpd alá szeretnénk betenni a JBoss 7.x-et, akkor szerkesszük a standalone.xml-t az alábbiak szerint:

        <subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">
            <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
            <connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp"/>
            <virtual-server name="default-host" enable-welcome-root="true">
                <alias name="localhost"/>
                <alias name="example.com"/>
            </virtual-server>
        </subsystem>

Fontos, hogy az AJP protokoll elérhető legyen a httpd számára. A proxy_module és a proxy_ajp_module alkalmazásával a httpd fogadni és továbbítani tudja a kéréseket az AJP protokollt ismerő szerver felé. Azonban technikai okokból a mod_jk alkalmazását javasoljuk:

  • bináris protokollt használ, emiatt gyorsabb
  • az IP címek megmaradnak, mert nem épül fel új HTTP kérés
  • időtúllépés esetén "együtt" állnak le a szálak
  • a mod_proxy megszakíthatja úgy a kiszolgálást, hogy közben a JBoss még dolgozik

A mod_jk telepítése

Nyissunk egy terminál ablakot, és telepítsük az apache2 mod_jk modult:

sudo apt-get install libapache2-mod-jk

Engedélyezzük az Apache2 mod_jk-t:

sudo a2enmod jk 

Állítsuk be az /etc/libapache2-mod-jk/workers.properties fájlt:

workers.java_home=/home/pzoli/jdk1.7.0_05/jre
worker.list=ajp13_worker,ajp14_worker,ajp15_worker
# Liferay(Tomcat7)
worker.ajp13_worker.port=8009
worker.ajp13_worker.host=pappzdev.integrity.hu
worker.ajp13_worker.type=ajp13
 
#Glassfish
worker.ajp14_worker.port=8109
worker.ajp14_worker.host=localhost
worker.ajp14_worker.type=ajp13
 
#JBoss
worker.ajp15_worker.port=8209
worker.ajp15_worker.host=localhost
worker.ajp15_worker.type=ajp13
worker.ajp13_worker.lbfactor=1
worker.ajp14_worker.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=ajp13_worker

A fenti beállítás 3 AJP worker-t konfigurál, egy terhelés kiegyenlítővel kiegészítve.

Apache virtual server beállítása

Szerkesszük a virtuális szerver konfigurációját (pl.: /etc/apache2/sites-enabled/000-default)

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        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>
 
# 8009 Liferay(Tomcat7)
JkMount /* ajp13_worker
 
# 8109 Glassfish
JkMount /kepeslap/* ajp14_worker
 
# 8209 JBoss
JkMount /kepeslap_jboss/* ajp15_worker
 
JkUnMount /redmine/* ajp13_worker
JkUnMount /kepeslap_jboss/resource/* ajp15_worker
…
</VirtualHost>

A ROOT alkalmazás egy Tomcat-en futó Liferay tartalomszolgáltató, ezt követően egy Glassfish szerveren futó képeslap projek, majd egy statikus tartalmat tároló könyvtár (JkUnMount) válik elérhetővé a /var/www/kepeslap_jboss/ könyvtárból, illetve egy Redmine projektkövető üzemel a weblapon.

Szerkesszük az /etc/apache2/mods-enabled/jk.conf fájlt

JkWorkersFile   /etc/libapache2-mod-jk/workers.properties
JkLogFile       /var/log/apache2/mod_jk.log
JkLogFile       /var/log/apache2/mod_jk.log

Indítsuk újra az Apache httpd-t:

sudo service apache2 restart