terça-feira, 11 de agosto de 2009

Integração APACHE2 + TOMCAT através do mod_jk connector

1.Introdução


Apache é um programa (software) que permite tornar um computador acessível via o protocolo HTTP, da Internet. É o servidor web mais utilizado atualmente no mundo e funciona em qualquer sistema operacional. Permite que linguagens de programação sejam agregadas a ele como módulos, o que gera mais segurança, estabilidade e performance.

TomCat é um servidor de aplicações Java para web, é um Contêiner Web. O Tomcat tem a capacidade de atuar também como servidor web/HTTP autônomo, ou pode funcionar integrado a um servidor web dedicado, como Apache httpd ou Microsoft IIS, ou ainda como parte integrante de um servidor de aplicações mais amplo, como JBoss AS, provendo os recursos de Java Servlet e JSP.

A integração do Apache com o TOMCAT é feita 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.

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.

A integração permite "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.

Possibilidade de se realizar LOADBALANCER entre dois ou mais TOMCATs usando o APACHE como o WebServer que irá gerenciar essa carga e dividirá ela.

Quando o servidor é instalado, a configuração inicial do Tomcat contém um conector que recebe pedidos de HTTP utilizando AJP (Apache Jserv Protocol). Embora o Tomcat seja capaz de recebe pedidos de HTTP diretamente da rede, esse conector permite que o Tomcat receba pedidos de software em uma camada inferior. Por exemplo, o Tomcat pode receber pedidos de servidores da Web (como o Apache HTTP Server), servidores proxy e sistemas de balanceamento de carga que suportem os protocolos AJP.

O objetivo deste artigo é integrar os Servidores Apache e Tomcat, a validação deste tutorial foi feito na máquina virtual Ubuntu 8.0.Lembrando que esse tutorial pode ser utilizado para qualquer sistema operacional Linux/Unix.


2.Pré-Requisitos


Para o funcionamento da integração do TomCat com Apache que foi instalado no Ubuntu 8.0, serão necessários ter os seguintes serviços instalados:


· UBUNTU 8.0

· APACHE

· TOMCAT

· TOMCAT CONECTOR(MOD_JK)

· JDK+JRE(JAVA)


3.Instalação do 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.


4.Instalação do TomCat e Java Baixar o último SOURCE em tomcat.apache.org/. Usar como padrão o diretório /usr/local para instalação do TOMCAT

# 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:

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_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
Startando o Tomcat:

# /usr/local/apache-tomcat/bin/catalina.sh start

5.Integração Apache com TomCat

1º Baixar o Tomcat Connector para instalar o MOD_JK


http://archive.apache.org/dist/jakarta/tomcat-connectors/jk2/source/jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz
2º Descompactar e instalar# tar -xzvf 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

3º Configurar o MOD_JK


# vim /usr/local/apache2/conf/httpd.conf

Acrescentar a linha abaixo:

LoadModule jk_module modules/mod_jk.so


4º Inicializar o Apache


# /usr/sbin/apachectl start


6.Configuração do TOMCAT

1º Mudar o arquivo server.xml dentro de /usr/local/apache-tomcat/conf/


# vim /usr/local/apache-tomcat/conf/server.xml

Procurar por:




Adicionar a propriedade "jvmRoute="tomcat1"" e ficará assim:



2º Reiniciar o TOMCAT:

# /usr/local/apache-tomcat/bin/catalina.sh


7.Configuração do Apache

1º Criar dois arquivos, um para configurarmos a comunicação com o TOMCAT e outro para configurações básicas do MOD_JK.
# vim /usr/local/etc/apache2/conf/workers.properties

Adicionar o conteúdo abaixo:


#
# 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


8.Configurar o arquivo tomcat.conf

# vim /usr/local/apache2/conf/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


9.Adicionar o arquivo "tomcat.conf" no "httpd.conf" do Apache.

# vim /usr/local/apache2/conf/httpd.conf


Adicionar a seguinte linha no arquivo:

Include conf/tomcat.conf


10.Reiniciar o APACHE # /usr/local/apache2/bin/apachectl start 11.Testando a integração

Agora ao invés de acessarmos o endereço do TOMCAT


http://localhost:8080/

Iremos acessar:

http://localhost/examples/



IMPORTANTE: Arquivo: /etc/hosts

# Do not remove the following line, or various programs
# that require network functionality will fail.

127.0.0.1 sl02.xxxx.br sl02 localhost.localdomain localhost intranet
172.18.0.29 sl09.xxxx.br sl09



Referências a:
http://www.vivaolinux.com.br/artigo/Integracao-Apache-=%3E-Tomcat/?pagina=5
http://www.vivaolinux.com.br/dica/Integracao-simples-do-Apache-2-com-Tomcat-5

Nenhum comentário: