Como faço para executar corretamente o Tomcat ao lado do Apache?

1

Eu instalei o Apache Tomcat e o Apache Webserver em um sistema Ubuntu 10.04 Server. Eu basicamente segui essas etapas para configurar o conector mod-jk e meu servidor agora parece redirecionar todo o tráfego para o Tomcat.

Isso significa que, independentemente de eu usar a porta 80 ou 8080, eu recebo o conteúdo do diretório Tomcat ROOT. Tudo bem, mas eu ainda gostaria de poder usar o Apache para servir conteúdo estático e PHP (como o PHPMyAdmin).

    
por mfellner 26.07.2010 / 08:42

2 respostas

2

Se você está indo com mod_jk, que é uma opção popular, a resposta de Oscar está correta. Você precisa limitar o que é processado pelo Tomcat alterando algo assim:

JkMount /* ajp13_worker

... apenas para os caminhos que você gostaria de processar pelo Tomcat, por exemplo:

JkMount /*.jsp ajp13_worker
JkMount /*.cfc ajp13_worker
JkMount /*.cfm ajp13_worker

Se você está procurando opções adicionais, mod_proxy_http ou mod_proxy_ajp também podem ser usados. Vou continuar com alguns exemplos rápidos de proxy para solicitações * .jsp / *. Cfm / *. Cfc para o Tomcat ...

Se você quiser experimentar ambas as opções, comece habilitando ambos os módulos (e quaisquer dependências), o que é muito simples com o Ubuntu 10.04; -)

sudo a2enmod proxy_http proxy_ajp
sudo /etc/init.d/apache2 restart

Eu gosto de adicionar minha configuração de proxy no /etc/apache2/conf/httpd.conf no Ubuntu, mas você também pode colocar isso em apenas uma ou mais configurações do VirtualHost.

Para que qualquer proxy seja permitido, supondo que você esteja executando o Apache e o Tomcat no mesmo servidor, adicione uma diretiva como esta:

<Proxy *>
    Allow from 127.0.0.1
</Proxy>

Aqui está uma configuração usando mod_proxy_ajp:

ProxyPreserveHost On
ProxyPassMatch  ^/(.+\.cf[cm])(/.*)?$  ajp://localhost:8009/$1$2
ProxyPassMatch  ^/(.+\.jsp)$  ajp://localhost:8009/$1

Obviamente, as expressões regulares podem ser ajustadas para atender às suas necessidades (as duas diretivas ProxyPassMatch acima podem até ser combinadas em um único regex com bastante facilidade).

Para realizar o mesmo com o mod_proxy_http, basta alterar o protocolo e a porta:

ProxyPreserveHost On
ProxyPassMatch  ^/(.+\.cf[cm])(/.*)?$  http://localhost:8080/$1$2
ProxyPassMatch  ^/(.+\.jsp)$  http://localhost:8080/$1

Se você deseja fazer proxy de hosts específicos e, talvez, mascarar um caminho de contexto, talvez prefira algo assim dentro de um VirtualHost específico:

ProxyPreserveHost Off
ProxyPass        / http://example.site.com:8080/context/
ProxyPassReverse / http://example.site.com:8080/context/

Por fim, se você precisa se interessar (por exemplo, algo como inspecionar uma string de consulta ou qualquer outra coisa que você possa criar com RewriteCond / RewriteRule), você pode usar mod_rewrite com o proxy (P) como proxy para o Tomcat. . Você precisaria ativar mais um módulo, mod_rewrite:

sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart

Em seguida, dentro de um VirtualHost, você pode fazer proxy de solicitações CFML com:

RewriteEngine On
RewriteRule  ^/(.*\.cf[cm]l?)(/.*)?$  ajp://localhost:8009/$1$2  [P]

Como você pode ver, você pode ser bastante criativo: P Espero que ajude!

    
por 28.07.2010 / 03:42
0

Use o JkUnmount para coisas que você não quer que sejam servidas pelo tomcat:

JkMount /* yourworker
JkUnMount /*.php yourworker
JkUnMount /*.png yourworker
JkUnMount /*.jpg yourworker
etc...

(Not sure if you can do: JkUnMount /*.{php|jpg|gif|png|etc..})

Ou se você usar apenas jsp para o tomcat, tente:

jkMount /*.jsp worker

    
por 27.07.2010 / 20:46