Apache HTTP server e Tomcat, o HowTo fácil sem o mod_jk
Postado em 25. set, 2006 por Paulo Silveira em Java
Migramos os nossos sitemas do servidor compartilhado da locaweb para um servidor dedicado, porém enfrentamos o clássico problema: responder php e java na mesma porta de acordo coma URL. O nosso blog é gerenciado pelo wordpress, que precisa do PHP, já os nossos outros serviços precisam de Java 5 e tomcat 5.5.
Eu e o Guilherme Moreira somos apenas usuários comuns do linux, sem conhecimentos avançados. Para piorar estamos acostumados com o debian, e o servidor novo é um fedora. Tentamos fugir do apache http server (daqui em diante referido apenas como apache) e mais ainda do mod_jk.
A vantagem de usar o mod_jk é que o apache poderia servir o conteúdo estático das nossas web applications, mas já sabemos a algum tempo que o tomcat e o apache têm performance muito parecida quando estão servindo arquivos estáticos (htmls e imagens, por exemplo).
Corremos então atrás de alternativas mais simples, no meio do caminho encontramos soluções estranhas que não gostamos, e a melhor a que chegamos foi usar o mod_proxy.
Vamos então a um tutorial bem sucinto para essa instalação em qualquer distribuição linux, omitindo qualquer detalhe sobre descompactação e download de arquivos básicos. Caso você queira instalar tudo isso no windows, só que com o mod_jk, você pode acessar o excelente howto de 15 minutos que o Diego Plentz criou.
Baixe os fontes do Apache 2.2 e configure o build com o que precisamos (mod_rewrite para o wordpress):
./configure—prefix=/usr/local/apache —enable-rewrite \ —enable-shared=max \
—enable-so \
—enable-proxy
Você poderia adicionar outros módulos. Agora basta o make e o make install.
Vamos ao PHP, baixe o fonte e configure o build:
./configure—prefix=/usr/local \
—enable-xslt \
—with-apxs2=/usr/local/apache/bin/apxs \
—with-mysql=/usr/bin/mysql_config
make e o make install aqui também.
Pronto. Considere que o diretório /var/www/blog.caelum.com.br possui o nosso wordpress. No seu /usr/local/apache/conf (ou diretório similar) edite o httpd.conf e permita o acesso aos arquivos do diretório do wordpress:
<Directory /var/www/blog.caelum.com.br>
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Crie a associação de blog.caelum.com.br para o diretório /var/www/blog.caelum.com.br:
<VirtualHost *:80> ServerName blog.caelum.com.br DocumentRoot /var/www/blog.caelum.com.br </VirtualHost>
Já, os outros sites que você quiser que sejam servidor pelo tomcat, você vai configurar o apache para agir como proxy, e delegar todas as requisições, e configuramos também para que ele tome o cuidado de reescrever alguns headers para que, por exemplo, não volte uma resposta com redirect para uma URL na porta 8080:
<VirtualHost *:80> ServerName www.caelum.com.br ServerAlias caelum.com.br www.caelum.com.br ProxyPass / http://caelum.com.br:8080/ ProxyPassReverse / http://caelum.com.br:8080/ </VirtualHost>
Aí no seu server.xml do tomcat, basta direcionar o host caelum.com.br:
<Host name="caelum.com.br" appBase="/xxx/yyy/webapps/caelum.com.br" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Alias>www.caelum.com.br</Alias> </Host>
Pronto! Muito simples para até para que é apenas usuário do linux. E bem mais fácil que com o mod_jk! Agora tudo parece estar rodando corretamente, com apenas um probleminha ou outro. Fica aí a receita de bolo para quem precisar, qualquer sugestão é muito bem vinda!
ASSINE NOSSO RSS




Urubatan
25. set, 2006
faz uma semana que fiz um post parecido com este
aqui
Paulo Silveira
25. set, 2006
brincadeira! boa urubatan… agora poe tambem o ProxyPassreverse se não voce vai ter problemas com redirects e outras coisas que passam URLs nos cabecalhos http…
Eu ja vi tambem que o mod_proxy do 2.2 agora tem opções para voce configurar o pool dele de conexoes com o servidor de baixo.
Luiz Claudio
30. set, 2006
Então, legal o texto, eu nunca consegui instalar nem o mod_jk
acho que isso pode ser uma alternativa, mas agora tô com um problema mais básico, num consigo instalar o jdk da sun no Red Rat enterprise 3, alguém indica um tutorial….
Diego Pires Plentz
03. out, 2006
Luiz, tutoriais existem aos montes na Internet…
Integrating Tomcat and Apache on Red Hat Linux
Simple Apache 2 Tomcat 5 mod_jk Integration
Otávio
30. jun, 2007
A idéia é simples e excelente, porém usando proxy perdemos o IP de quem está acessando. No meu caso tanto o tomcat como o apache ficam na mesma maquina, então aparece como sendo sempre o localhost conectado.
Abs
Fabrício
28. abr, 2008
Muito bom o tuturial, mas agora eu estou precisando de 2 Tomcat na mesma máquina, o 4 e 5, e não tô conseguindo usar os dois. Como devo fazer?
Abraços
Paulo Silveira
28. abr, 2008
Oi Fabricio. Da pra usar tranquilamento, so cuidado com o uso das portas no server.xml para nao dar conflito e ele nao reclamar de JVM: port already bind.
Acho que esse artigo mereceria uma atualizacao: tivemos alguns problemas de performance com mod proxy e no final acabamos mudando para o velho mod JK.
Alexsandro
06. out, 2009
Bom dia a todos. O artigo é realmente muito bom! mas estou tendo alguns problemas: segui este tutorial em uma maquina com o fedora 9 tomcat5 e apache httpd e nao estou conseguindo manter objetos na sessao da minha aplicacao no tomcat. quando clico em qualquer link da minha pagina .jsp, é criada uma nova sessao e perco o conteudo da antiga (sei disso porque estou imprimindo o id da sessao para testar) como posso resolver este problema?
fico no aguardo e desde ja agradeco.
Robson Ramos Barreto
05. dez, 2009
Prezados,
Implementando o seguinte tutorial
http://plentz.org/2005/11/10/webserver-em-15-minutos/
Nao estou conseguindo colocar online acesso a projetos jee
Mostra o erro 404. Mas localhost consegui implementar
No momento tenho acesso externo com no-ip e virtual host no apache(WAMP). O acesso externo esta funcionando ok
Estou com o objetivo de implementar um servidor dedicado com apache e tomcat para por em producao. Para pegar a logica de como funciona estou implementando em windows para depois em linux com este tutorial
O autor do topico me disse que desta forma seria somente para desenvolvimento e nao em producao, e tambem que um servidor em producao seria bem diferente as configuraçoes (motivo talvez por nao estar dando certo). Estou buscando alternativas para este meu objetivo.
Se puderes me ajudar ficarei muito Grato!
Att.
Robson Ramos Barreto