
Modul Kommunikation
Wie Railo unter JBOSS installiert wird habe ich bereits beschrieben.
Für viele ist interessant wie JBOSS mit dem Apache verbunden wird.
Einige Module müssen miteinander kommunizieren. Schematisich sieht
das so aus wie im nebenstehenden Bild dargestellt. Was dafür alles
zu tun ist beschreibe ich hier.
Voraussetzungen:
1. Umgebung
Ihr benötigt eine lauffähige Railo (ich verwende 3.0.0.6) Installation unter JBOSS,
und einen installierten Apache Webserver.
2. benötigte Software
Den Apache Webserver gibts zum Download unter: http://httpd.apache.org
Den Connector MOD_JK gibts unter: http://tomcat.apache.org/download-connectors.cgi
3. Installation / Configuration
Ich habe die Installation unter Windows duchgeführt.
Meine JBOSS (Railo) Installation liegt im Ordner c:\JBOSS\ und mein
Apache Webserver liegt unter C:\APACHE;
Ladet euch den MOD_JK Connector runter (wählt die passende Version -
für mich ist die richtige Version mod_jk-1.2.26-httpd-2.0.59.so)
und kopiert die Datei in das C:\APACHE\modules Verzeichnis.
Benennt die Datei um in mod_jk.so
Mehr Software wird nicht benötigt. Jetzt gehts an die Konfiguration:
3.1 Konfiguration Apache
Öffnet die Apache Config Datei httpd.conf im Ordner c:\APACHE\conf\
Sucht den Block in denen die loadModules Anweisungen stehen und fügt folgende Zeile hinzu:
# JBOSS Connector
LoadModule jk_module modules/mod_jk.so
Geht an das Ende der httpd.conf Datei und fügt folgenden Eintrag hinzu:
# Include mod_jk configuration file
Include conf/mod_jk.conf
Speichert die Datei ab.
3.2 Konfiguration Connector
Geht wieder in das Verzeichnis c:\APACHE\CONF und legt dort eine Datei mit dem
Namen mod_jk.conf an. Öffnet diese und kopiert folgenden Inhalt hinein.
# Where to find workers.properties
JkWorkersFile conf/worker.properties
# Where to put jk logs
JkLogFile logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat “[%a %b %d %H:%M:%S %Y]“
# JkOptions indicates to send SSK KEY SIZE
# Note: Changed from +ForwardURICompat.
# See http://tomcat.apache.org/security-jk.html
JkOptions +ForwardKeySize +ForwardURICompatUnparsed -ForwardDirectories
# JkRequestLogFormat
JkRequestLogFormat “%w %V %T”
# You can use external file for mount points.
# It will be checked for updates each 60 seconds.
# The format of the file is: /url=worker
# /examples/*=loadbalancer
JkMountFile conf/uriworkermap.properties
# Add shared memory.
# This directive is present with 1.2.10 and
# later versions of mod_jk, and is needed for
# for load balancing to work properly
# Note: Replaced JkShmFile logs/jk.shm due to SELinux issues. Refer to
# https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=225452
JkShmFile run/jk.shm
Der Inhalt gibt folgende Anweisungen:
- Da der MOD_JK als Software Loadbalancer arbeiten kann wird über die JSWOrkersFile conf/properties Anweisung ein Verweis auf die Konfigurations
Datei der Worker gegeben
- Die Anweisung JKLogFile konfiguriert wohin die Logfiles des Connectors gespeichert werden sollen
- JKLogLevel spezifiert die Logdetailierung
- JKLogStampFormat steuert die Benennung des Logfiles
- JKRequestLogFormat steuert den Inhaltlichen Aufbau des Logfiles
- Über JKMountFile wird das Mapping für die JBOSS Anwendungen definiert.
Speichert die Datei ab.
3.3 Konfiguration Worker
Erstellt im C:\APACHE\CONF Verzeichnis eine neue Datei mit dem Namen worker.properties
Öffnet die Datei und kopiert folgenden Inhalt hinein:
worker.list=node1
# Define Node1# modify the host as your host IP or DNS name.
worker.node1.port=8009
worker.node1.host=localhost
worker.node1.type=ajp13
worker.node1.lbfactor=1
Da ich aktuell nur eine JBOSS Instanz installiert habe steht bei mir nur ein Worker.
In dieser Datei könnte ich mehrere Worker definieren und auch ein Loadbalancing konfigurieren.
Der Worker versucht mit JBOSS über AJP auf dem Port 8009 zu kommunizieren.
Speichert die Datei ab.
3.4 Konfiguration Application Mapping
Erstellt im C:\APACHE\CONF Verzeichnis eine neue Datei mit dem Namen uriworkermap.properties
Öffnet die Datei und kopiert folgenden Inhalt hinein
# Mount your applications
/jmx-console=node1
/jmx-console/*=node1
/web-console=node1
/web-console/*=node1
/railo=node1
/railo/*=node1
WICHTIG: Überprüft die application.xml Datei im META-INF Verzeichnis von RAILO
(bei mir: C:\JBOSS\server\default\deploy\railo.ear\META-INF\application.xml ob
dort im <context-root>/railo</context-root>
steht.
Speichert die Datei. Der Apache ist jetzt fertig konfiguriert. Jetzt müssen wir nur noch
ein paar Anpassungen an JBOSS durchführen.
3.5 Konfiguration JBOSS (bei mir 4.2.2GA)
Geht in euer JBOSS Server Deployment Verzeichnis. Bei mir ist das C:\JBOSS\server\default\deploy\
Im Deploy Ordner gibt es ein Unterverzeichnis jboss-web.deployer in dem der JBOSS integrierte Webserver installiert ist.
Diesen müssen wir jetzt deaktivieren, bzw. auf AJP einstellen.
Geht also ins Verzeichnis C:\JBOSS\server\default\deploy\jboss-web.deployer\ und öffnet dort die Datei server.xml.
Kommentiert folgende Zeilen aus:
<!– Das ist der Default Webserver Port (HTTP) auf den JBOSS reagiert
<Connector port=”8080″ address=”${jboss.bind.address}”
maxThreads=”250″ maxHttpHeaderSize=”8192″
emptySessionPath=”true” protocol=”HTTP/1.1″
enableLookups=”false” redirectPort=”8443″ acceptCount=”100″
connectionTimeout=”20000″ disableUploadTimeout=”true” /> –>
als nächstes den HTTPS Port (falls der aktiviert ist)
<!–
<Connector port=”8443″ protocol=”HTTP/1.1″ SSLEnabled=”true”
maxThreads=”150″ scheme=”https” secure=”true”
clientAuth=”false” keystoreFile=”${jboss.server.home.dir}/conf/ssl.keystore”
keystorePass=”mypassword” keyAlias=”testkey1″
sslProtocol=”TLS” />
–>
Sucht nun nach nachfolgenden Zeilen und stellt sicher, dass diese nicht auskommentiert sind.
Das ist der AJP Connector Port den wir auch im Apache eingestellt haben
<Connector port=”8009″ address=”${jboss.bind.address}” protocol=”AJP/1.3″
emptySessionPath=”true” enableLookups=”false” redirectPort=”8443″ />
<Engine name=”jboss.web” defaultHost=”node1″>
Speichern - fertig, fast –> JBOSS neu starten. Apache neu starten.
Jetzt sollte der Apache als Webserver eingerichtet sein.