Integração Apache => Tomcat
Integrando o Apache com o TOMCAT para que as páginas estáticas sejam executadas pelo Apache e as em JSP pelo contêiner TOMCAT, além do direcionamento das aplicações via APACHE, sendo o WebServer de acesso para as aplicações que estão no TOMCAT.
Conceito
Integração APACHE/TOMCAT vou dividir em duas partes e abordar a primeira delas aqui. São elas a integração com apenas “simples”, a qual as páginas ESTÁTICAS serão executadas pelo APACHE (ganho de performance) e as páginas dinâmicas (JSP) executadas pelo contêiner TOMCAT.
Além dessa funcionalidade, nessa primeira integração conseguimos “esconder” as portas do TOMCAT, já que sua aplicação será chamada por uma URL na porta 80 e o APACHE sim, irá pegar sua aplicação no TOMCAT e mostrar ela.
Temos também a segunda integração do APACHE/TOMCAT, que consiste nas vantagens da primeira acrescidas da possibilidade de se realizar LOADBALANCER entre dois TOMCATs usando o APACHE como o WebServer que irá gerenciar essa carga e dividirá ela, porém esse assunto não será abortado aqui.
Pré-requisitos
Iremos instalar os seguintes serviços em um servidor LINUX/UNIX:
- OPENSSL
- APACHE
- TOMCAT
- TOMCAT CONECTOR(MOD_JK)
- JDK+JRE(JAVA)
Instalando OpenSSL, Apache, Tomcat e Java
OpenSSL
Baixar última versão do SOURCE em www.openssl.org.
Consideremos que estamos usando a versão 0.98e do OPENSSL, que está em um diretório de instalação de nosso servidor, vamos descompactar e instalar o mesmo:
# tar -xvf openssl-0.9.8e.tar.tar
# cd openssl-0.9.8e
# ./configure –prefix=/usr/local/ssl
# make
# make install
Apache
Baixar o último SOURCE em www.apache.org.
Consideremos que estamos usando a versão 2.2.6 do APACHE, que está em um diretório de instalação de nosso servidor, vamos descompactar e instalar o mesmo:
# tar -xvf httpd-2.2.6.tar.gz
# cd httpd-2.2.6
# ./configure –prefix=/usr/local/apache2 –enable-ssl=/usr/local/ssl
# make
# make install
# /usr/local/apache2/bin/apachectl start
Pronto, o Apache está instalado com suporte a SSL no diretório padrão que definimos: /usr/local/apache2.
Tomcat e Java
Baixar o último SOURCE em tomcat.apache.org/.
Consideremos que estamos usando a versão 6.0.14 do TOMCAT, que está em um diretório de instalação que iremos usar ele, pois o TOMCAT só precisamos descompactar e não compilar, como os demais.
Usei como padrão o diretório /usr/local para instalação do TOMCAT, por convenção, deixo o nome do diretório com a versão e crio um LINK para ele com o nome “apache-tomcat”, o que me permite mudar de versão sem ter que alterar demais arquivos de configurações do mesmo ou de terceiros.
# cd /usr/local
# tar -xvf apache-tomcat-6.0.14.tar.gz
# ln -s apache-tomcat apache-tomcat-6.0.14/
# vi /etc/profile
Adicionar as seguintes linhas no final do arquivo:
#Tomcat
CATALINA_HOME=/usr/local/apache-tomcat
TOMCAT_HOME=/usr/local/apache-tomcat
export CATALINA_HOME TOMCAT_HOME CLASSPATH
Agora iremos instalar o JAVA, baixe a última versão do BIN JDK no site da SUN e coloque do diretório que iremos instalar ele, no caso /usr/local. Como ele será instalado com o “nome-versão”, também iremos criar um LINK com o nome JAVA apontando para ele, o que também nos permite trocar de versão sem maiores problemas.
# chmod +x jdk-1_5_0_12-linux-i586.bin
# ./ jdk-1_5_0_12-linux-i586.bin
(seguir orientações da instalação – padrão, só YES e ENTER)
# ln -s java jdk1.5.0_12/
# vi /etc/profile
Adicionar as seguintes linhas no final do arquivo:
#Java
JAVA_HOME=”/usr/local/java”
JRE_HOME=”/usr/local/java/jre”
CLASSPATH=”$JAVA_HOME:$JAVA_HOME/lib:$JRE_HOME/lib:.”
MANPATH=”$MANPATH:$JAVA_HOME/man”
JAVA_DOC=”$JAVA_HOME/docs”
PATH=”$PATH:$JAVA_HOME/bin:$JRE_HOME/bin”
export JAVA_HOME JRE_HOME CLASSPATH MANPATH JAVA_DOC PATH
# /usr/local/apache-tomcat/bin/catalina.sh start
Pronto, o TOMCAT foi instalado configurado e iniciado juntamente com o suporte ao JAVA.
Tomcat conector – MOD_JK
Consideremos que estamos usando a versão 1.2.25 do Tomcat-Conector, que está em um diretório de instalação de nosso servidor, vamos descompactar e instalar o mesmo:
# tar -xvf tomcat-connectors-1.2.25-src.tar.gz
# cd tomcat-connectors-1.2.25-src
# cd native/
# ./configure –with-apxs=/usr/local/apache2/bin/apxs
# make
# make install
# vi /usr/local/apache2/conf/httpd.conf
Acrescentar a linha abaixo:
# /usr/local/apache2/bin/apachectl restart
Pronto, o MOD_JK foi instalado e configurado para que o APACHE o carregue em sua inicialização. O MOD_JK será o responsável pela comunicação entre o APACHE e o TOMCAT via o protocolo EJB3 do TOMCAT.
Pronto, agora iremos configurar um linha em nosso TOMCAT e dois arquivos de configurações que iremos criar no CONF do APACHE e nossa integração ficou pronta.
Configuração no TOMCAT
Iremos mudar apenas o arquivo server.xml dentro de /usr/local/apache-tomcat/conf/. Iremos definir um NOME para o TOMCAT, esse nome será buscado pelo MOD_JK e servirá para passadas de parâmetros.
# vi /usr/local/apache-tomcat/conf/server.xml
Procurar por:
<!– You should set jvmRoute to support load-balancing via AJP ie :
<Engine name=”Standalone” defaultHost=”localhost” jvmRoute=”jvm1″>
–>
<Engine name=”Catalina” defaultHost=”localhost”>
Iremos adicionar a propriedade “jvmRoute=”tomcat1″” e ficará assim:
<Engine name=”Standalone” defaultHost=”localhost” jvmRoute=”jvm1″>
–>
<Engine jvmRoute=”tomcat1″ name=”Catalina” defaultHost=”localhost”>
Reiniciar o TOMCAT:
# /usr/local/apache-tomcat/bin/catalina.sh
Configuração no Apache
Vamos criar dois arquivos, um para configurarmos a comunicação com o TOMCAT e outro para configurações básicas do MOD_JK e definição de quais serão os “CONTEX” do TOMCAT que serão executados pelo APACHE.
Arquivo workers.properties:
# vi workers.properties
Adicionar o seguinte conteúdo ao arquivo criado:
# workers.properties
#
# In Unix, we use forward slashes:
ps=/
# list the workers by name
worker.list=tomcat1(nome configurado no arquivo server.xml do TOMCAT)
# ————————
# First tomcat server
# ————————
worker.tomcat1.type=ajp13
worker.tomcat1.host=localhost(nome do servidor onde temos o tomcat)
worker.tomcat1.port=8009
worker.tomcat1.lbfactor=50
worker.tomcat1.cachesize=10
worker.tomcat1.cache_timeout=500
worker.tomcat1.socket_keepalive=1
worker.tomcat1.socket_timeout=300
# Specify the size of the open connection cache.
#worker.tomcat1.cachesize
#
# Specifies the load balance factor when used with
# a load balancing worker.
# Note:
# —-> lbfactor must be > 0
# —-> Low lbfactor means less work done by the worker.
worker.tomcat1.lbfactor=100 //Definindo que toda a carga será usada apenas para um TOMCAT, é o nosso caso.
#
# END workers.properties
É um arquivo bem simples onde definimos o “nome” do TOMCAT para integração via MOD_JK, “worker.list=tomcat1″ e demais parâmetros para configuração de conexão, onde devemos alterar de acordo com nosso ambiente.
Arquivo tomcat.conf:
Adicionar o seguinte conteúdo ao arquivo criado:
JkWorkersFile /usr/local/apache2/conf/workers.properties
JkLogFile /usr/local/apache2/logs/mod_jk.log
JkLogLevel info
JkLogStampFormat “[%a %b %d %H:%M:%S %Y] ”
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat “%w %V %T”
JkMount /examples/servlet/* tomcat1
JkMount /examples/* tomcat1
JkMount /examples/jsp/* tomcat1
JkMount /*.jsp tomcat1
JkMount /aplicacao1/* tomcat1
O que destaco são apenas as linhas com “JKMount”, que é o diretório (CONTEX ROOT) do TOMCAT, é o nome do DIR que você acessa sua aplicação.
Vamos adicionar nosso arquivo “tomcat.conf” no “httpd.conf” do Apache:
# vi /usr/local/apache2/conf/httpd.conf
Adicionar a seguinte linha no arquivo:
Vamos reiniciar o APACHE:
# /usr/local/apache2/bin/apachectl restart
Testando integração
Agora ao invés de acessarmos o endereço do TOMCAT, Ex.:
http://localhost:8080/aplicacao1
Iremos acessar:
http://localhost/aplicacao1
Ele irá mostrar a aplicação que está no TOMCAT e aplicará suas melhorias.
Obs.: Para os diretórios que não estiverem no TOMCAT.CONF, ele irá procurar no DOCUMENT ROOT de nosso APACHE.



