Este artigo, oferece uma visão geral de alguns conceitos básicos para a realização da integração entre o Tomcat e o servidor Web Apache. Além dos conceitos, um passo a passo será mostrado para a configuração. Vale lembrar que esta configuração foi realizada em ambiente Linux / Fedora 8.
O artigo está dividido nos seguintes tópicos:
- requisitos: indica o que é necessário para a configuração e as versões utilizadas.
- conceitos básicos: conceitos básicos de cada item utilizado na configuração.
- Tomcat e os Workers
- Apache e o módulo para conexão com o Tomcat
- Módulo para integração mod_jk
- iniciando a configuração: passo a passo para integração entre o Tomcat e o Apache web server.
- referências
Requisitos
Abaixo segue uma tabela com os programas utilizados
e suas respectivas versões e link para download.
Java - 6 - http://java.sun.com/javase/downloads/index.jsp
Tomcat - 6 - http://tomcat.apache.org/download-60.cgi
Apache - 2.2 - http://httpd.apache.org/download.cgi
mod_jk - 1.2.28 - http://tomcat.apache.org/connectors-doc/index.html
Conceitos básicos
Tomcat e os Workers
Um worker é uma instância do Tomcat que fica aguardando para executar servlets ou outro conteúdo que possa ser processado pelo Tomcat. Desta forma, o Apache pode enviar as solicitações para o Worker que encaminhará para o Tomcat com toda a configuração necessária.
Para uma visão completa dos workers, ver o link:
http://tomcat.apache.org/connectors-doc/reference/workers.html
Um worker é definido através de um arquivo worker.properties
e que será utilizado pelo Apache durante as requisições.
Um arquivo worker, possui propriedades no formato "Properties"
do java, ou seja, atributo
Podemos através deste arquivo definir vários workers conforme
mostrado através da diretiva abaixo:
worker.list=worker1, worker2
Esta é a estrutura básica de um arquivo worker.properties.
Em um worker deve ser definido o host onde será executada a
instância do Tomcat, uma porta onde a instância do Tomcat
irá escutar as requisições e outras propriedades como timeout,
limite para pool de conexões e etc.
O arquivo worker pode ser gravado em algum lugar onde o apache possua acesso posteriormente, pois como será visto no passo a passo para configuração, será definida uma diretiva no arquivo de configuração do apache para indicar o caminho do worker.properties.
Apache e o módulo para conexão com o Tomcat
Para a configuração, é necessária a utilização de algumas diretivas, bem como carregar o módulo de integração "mod_jk" (Veja o próximo tópico para mais detalhes). No arquivo de configuração do apache, será necessário definir o local da aplicação, o nome (ServerName) ( o mesmo nome deve possuir em seu DNS, mesmo que local [ /etc/hosts ] ), e as diretivas para o worker. Caso sua aplicação esteja em um VirtualHost, dentro da Tag de VirtualHost, deverá ser definido o que será redirecionado para o seu worker (pode ser melhor entendido no tópico de passo a passo).
Módulo para integração mod_jk
mod_jk é o módulo que permite a integração entre o Tomcat e o Apache, conectando um ao outro através de socket com o protocolo definido no arquivo workers.properties.
O mesmo deverá ser compilado e após a compilação, o arquivo mod_jk.so deve ser colocado no diretório de módulos do apache.
Iniciando a configuração
1 - instalando o Java
Para a instalação do JDK no linux, segue abaixo o link com todos os detalhes
necessários para a configuração:
http://aeloy.blogspot.com/2008/06/configurao-do-jsdk-no-linux.html
2 - instalando o Tomcat
baixar o tomcat( veja os links no tópico Requisitos ) e descompactar o mesmo
em algum diretório de preferência. Após descompactar o Tomcat, o mesmo já estará pronto para utilização. No meu caso descompactei o mesmo em
/tomcat/apache-tomcat-6.0.16/
Para facilitar a utilização do Tomcat, configure a variável de ambiente que indica a localização do Tomcat. A variável pode ser configurada no arquivo /etc/profile conforme
abaixo:
CATALINA_HOME=/tomcat/apache-tomcat-6.0.16
3 - instalando o Apache httpd web server
Para a instalação do apache no linux temos as opções de compilação e baixar os pacotes.
No meu caso utilizei o yum para instalação do httpd server.
yum install httpd
yum install httpd-devel
4 - compilando o módulo mod_jk
após baixar o arquivo tomcat-connectors-1.2.28-src.tar.gz, descompactar
o mesmo em algum diretório de preferência para iniciar a compilação.
No meu caso, costumo compilar meus programas em /usr/local/src.
[root@skynet src]# tar -xvzf tomcat-connectors-1.2.28-src.tar.gz
[root@skynet src]# cd tomcat-connectors-1.2.28-src
[root@skynet tomcat-connectors-1.2.28-src]# cd native
[root@skynet tomcat-connectors-1.2.28-src]# ./configure --with-apxs=/usr/sbin/apxs
[root@skynet tomcat-connectors-1.2.28-src]# make
[root@skynet tomcat-connectors-1.2.28-src]# make install
Após a compilação, será gerado o arquivo mod_jk.so no diretório (apache-2.0 no meu caso) /usr/local/src/tomcat-connectors-1.2.28-src/native/apache-2.0
Na opção de compilação --with-apxs=/usr/sbin/apxs, caso o seu apache tenha sido instalado através de pacotes via YUM, será necessário instalar o pacote httpd-devel.
5 - adicionar o módulo no Apache
copiar o arquivo criado durante a compilação do Tomcat Connector mod_jk para o diretório de módulos do apache conforme mostrado abaixo:
cd /usr/local/src/tomcat-connectors-1.2.28-src/native/apache-2.0
cp mod_jk.so /usr/lib/httpd/modules/.
Após adicionar o módulo no diretório de módulos do apache, é necessário realizar algumas configurações
no arquivo httpd.conf localizado em /etc/httpd/conf/httpd.conf
Adicionar a diretiva após a última ocorrência de LoadModule:
LoadModule jk_module /usr/lib/httpd/modules/mod_jk.so
O módulo já está adicionado no apache, porém a integração ainda não está sendo realizada.
6 - criar as configurações para o worker ( ver detalhes no tópico Conceitos básicos: Tomcat e os Workers )
criar o arquivo worker.properties ( pode criar em /etc/httpd/ ).
adicionar as seguintes configurações:
workers.tomcat_home=/tomcat/apache-tomcat-6.0.16
workers.java_home=/usr/java/jdk1.6.0_06
ps=/
worker.list=worker1
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.socket_timeout=120
worker.worker1.lbfactor=1
7 - Após criar o arquivo de propriedades do worker, basta referenciá-lo dentro do arquivo de configuração do
apache conforme abaixo:
vim /etc/httpd/conf/httpd.conf
adicionar a diretiva JkWorkesFile e as demais como segue abaixo:
# Where to find workers.properties
JkWorkersFile /etc/httpd/workers.properties
# Where to put jk logs
JkLogFile /var/log/httpd/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel error
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
8 - Configurar a aplicação
Neste caso a aplicação foi distribuída em um VirtualHost.
Obs.:O deploy da aplicação foi realizada através de um arquivo .war e copiado para
o diretório webapps do meu $CATALINA_HOME.
Adicionar o seguinte VirtualHost no httpd.conf
ServerAdmin adolfo_eloy@bla.blabla.br
ServerName myapp.com
DocumentRoot /tomcat/apache-tomcat-6.0.16/webapps/myapp
# requests go to worker1 (worker definido em workers.properties)
JkMount /* worker1
# serve html, jpg and gif using httpd (estes arquivos serão fornecidos pelo apache e não pelo tomcat)
JkUnMount /*.html worker1
JkUnMount /*.jpg worker1
JkUnMount /*.gif worker1
9 - Configurar o contexto da aplicação no Tomcat
editar o arquivo /tomcat/apache-tomcat-6.0.16/conf/server.xml
Dentro da tag Engine, adicionar o elemento Host conforme abaixo:
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
10 - adicionar o nome no DNS local (hosts)
11 - Iniciar os serviços e testar
iniciar o tomcat: $CATALINA_HOME/bin/startup.sh
iniciar o apache: /etc/init.d/httpd start
Teste o link http://myapp.com em seu browser.
Referências
[1] The Apache Tomcat Connector - http://tomcat.apache.org/connectors-doc/index.html
[2] Apache Http Server Project - http://httpd.apache.org/
[3] Apache Tomcat 6.0 - http://www.mbaworld.com/docs/
[4] Java Sun - http://java.sun.com
Nenhum comentário:
Postar um comentário