Apache + Tomcat + JK Connector

L'application server Tomcat può essere utilizzato sia in modalità stand-alone che insieme ad Apache, il quale funge da front-end pubblico per l'erogazione delle pagine e del servizio, ma che si avvale in background di Tomcat per quanto concerne l'esecuzione di servlet e pagine JSP.
La comunicazione tramite web server e servlet container viene gestita dal connector JK di cui parleremo successivamente.

I requirement per ottenere un ambiente come quello che vogliamo creare sono i seguenti:
- Apache 2.0.x
- Tomcat 4.1.x
- Tomcat Web Server Connectors JK 1.2
- JDK 1.4.x

INSTALLAZIONE JVM
Prima di tutto bisogna installare la Java Virtual Machine sulla propria Linux Box, per fare ciò bisogna scaricare da http://java.sun.com/j2se/1.4.2/download.html il JDK SE 1.4.x in formato bin per Linux.
Una volta scaricato il pacchetto binario lo si installa in /usr/local (questa è solo una mia preferenza personale).
Successivamente si deve impostare la variabile di ambiente $JAVA_HOME. Il comando è:
JAVA_HOME=/usr/local/j2sdk1.4.2_04
export JAVA_HOME
Fatto questo si può testare il corretto funzionamento eseguendo:
echo $JAVA_HOME
Il risultato ottenuto dovrebbe essere:
/usr/local//usr/local/j2sdk1.4.2_04

INSTALLAZIONE APACHE
A questo punto dobbiamo procedere con la compilazione del server web Apache, nel nostro caso tramite sorgenti di Apache 2.0.49.
cp -p httpd-2.0.49.tar.gz /usr/local/src/
cd /usr/local/src
tar xvzf httpd-2.0.49.tar.gz

Ora possiamo procedere alla compilazione di Apache:
cd /usr/local/src/httpd-2.0.49
./configure --prefix=/usr/local/apache --enable-ssl --enable-so ; make ; make install


INSTALLAZIONE DI TOMCAT
Prima di tutto dobbiamo creare l'utente tomcat in modo tale da far girare l'application server senza i permessi di root (pericolosissimo per la sicurezza del sistema).
groupadd tomcat
useradd -g tomcat -c "Tomcat User" -d /usr/local/tomcat tomcat
passwd tomcat

La password è a vostra discrezione...
Notare che viene scelta come home directory dell'utente /usr/local/tomcat
Dopo aver scaricato Tomcat 4.1.30 in formato binario possiamo procedere all'installazione:
cp -p tomcat-4.1.30.tar.gz /usr/local/
cd /usr/local
tar xvzf tomcat-4.1.30.tar.gz

Verrà creata la cartella /usr/local/jakarta-tomcat-4.1.30 contenente i binary dell'application server Tomcat.
Per una gestione più snella e semplice andiamo ad applicare un link simbolico:
ln -s /usr/local/jakarta-tomcat-4.1.30 /usr/local/tomcat
Fatto questo dobbiamo sistemare i permessi sulla cartella e sul link simbolico, ovvero assegnare come owner della cartella e dei files l'utente tomcat, se non lo facessimo l'utente tomcat non avrebbe la possibilità di far partire il server.
chown tomcat:tomcat /usr/local/tomcat
chown -R tomcat:tomcat /usr/local/jakarta-tomcat-4.1.30

Ora bisogna settare come per $JAVA_HOME la variabile d'ambiente $CATALINA_HOME che non è altro che il path a tomcat.
CATALINA_HOME=/usr/local/tomcat
export CATALINA_HOME

Ora possiamo far partire il server tomcat, ma solo dopo aver settato la variabile d'ambiente $JAVA_HOME anche per l'utente tomcat.
Facciamo quindi partire il servizio con:
su - tomcat -c /usr/local/tomcat/bin/startup.sh
Testiamo il funzionamento di tomcat con http://localhost:8080 (la porta 8080 è il default dell'application server).
In questo momento tomcat sta funzionando da web server stand-alone e da application server.
Ovviamente essendo il nostro obiettivo quello di avere Apache che fornisca l'interfaccia web e Tomcat che funga da servlet container.
Per fare ciò dobbiamo installare il connector JK per Apache e Tomcat.
Prima di tutto però spegnamo tomcat:
su - tomcat -c /usr/local/tomcat/bin/shutdown.sh
Fate attenzione a scaricare il connector JK 1.2 perchè la versione 2 è differente.
Scompattiamo il connector in /usr/local/src
cd /usr/local/src
tar xvzf jakarta-tomcat-connectors-jk-1.2-src-current.tar.gz

Ora configuriamo la variabile $CONNECTOR_HOME con la cartella creata dallo scompattamento del tar.gz
CONNECTOR_HOME=/usr/local/src/jakarta-tomcat-connectors-jk-1.2.5-src
export CONNECTOR_HOME

Configuriamo e compiliamo ora il connector:
cd CONNECTOR_HOME/jk/native
./buildconf.sh
./configure --with-apxs=/usr/local/apache/bin/apxs
make
make install

Questi comandi compileranno mod_jk.so e  lo copieranno in /usr/local/apache/modules.

CONFIGURIAMO APACHE E TOMCAT PER LAVORARE INSIEME
Andiamo ad editare il file server.xml di Tomcat e aggiungiamo questa riga dopo server
Listener className="org.apache.ajp.tomcat4.config.ApacheConfig" modJk="/usr/local/apache/modules/mod_jk.so" /
e dubito dopo la parte dell'host questa riga:
Listener className="org.apache.ajp.tomcat4.config.ApacheConfig" append="true" forwardAll="false" modJk="/usr/local/apache/modules/mod_jk.so" /
Infine aggiungiamo il modulo creato dal connector alla configurazione di Apache (httpd.conf) al termine del file di configurazione:
Include /usr/local/tomcat/conf/auto/mod_jk.conf

Ora creiamo in CATALINA_HOME/conf/jk un file di nome workers.properties
cd $CATALINA_HOME/conf
mkdir jk
chown tomcat:tomcat jk
cd jk
vi workers.properties

Il file sarà composto da queste linee:
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13

Gli diamo i permessi corretti:
chown tomcat:tomcat workers.properties
A questo punto facciamo partire Apache ed il gioco è fatto.
Testiamo con: http://localhost/examples e se vengono processati i files java il lavoro è terminato.

Privacy Policy