Tomcat + Apache

15 respostas
kartler

Estou usando Fedora 2… e o tomcat-5.0.19…

no httpd.conf do apache tá assim.

NameVirtualHost  *:80

<VirtualHost *:80>
    DocumentRoot /var/tomcat5/webapps/examples
     <Location "/*.jsp">
        JkUriSet worker ajp13:localhost:8009
    </Location>
</VirtualHost>

e no work2.properties ficou assim

[uri:localhost/*.jsp]
worker=ajp13:localhost:8009

depois http://localhost/testando.jsp

e o erro!

HTTP Status 404 - /examples/testando.jsp

type Status report

message /examples/testando.jsp

description The requested resource (/examples/testando.jsp) is not available.
Apache Tomcat/5.0.19

Não estou sendo bem sucedido em minhas tentativas de configurar os 2, alguém poderia me dar uma luz ?

Valeus! 8)

15 Respostas

Rafael_Steil

Voce nao precisa da parte

<Location "/*.jsp">
        JkUriSet worker ajp13:localhost:8009
    </Location

Rafael

Luca

Olá

Vc precisou compilar o jk2? No meu Linux eu fiz assim porque não havia binario para baixar no site apache-jakarta. Vou partir do ponto de vista que seu módulo está OK para seu Linux.

Uma boa fonte está no diretório que está dentro do tar.gz do conector jk2. Veja: jakarta-tomcat-connectors-jk2-2.0.4-src/jk/docs/jk2/configweb.html

No fim de httpd.conf:
. . . . .
LoadModule jk2_module modules/mod_jk2.so
No workers2.properties:
# socket channel para o tomcat5.
[channel.socket:localhost:58009]

# define the worker para o tomcat5 usando channel socket
[ajp13:localhost:8009]
info=Ajp13 forwarding over socket
channel=channel.socket:localhost:8009

# Uri mapping para o tomcat5
[uri:/seu_contexto/*]
info=Descricao bla, bla, bla
worker=ajp13:localhost:8009
debug=0

Está meio verboso mas como aqui não uso as portas padrão preciso deixar algumas coisas mais claras. Apesar disto aí em cima ser uma pequena parte do meu workes2.properties, acredito que vá funcionar. principalmente depois que vc ler o configweb.html ou der uma busca no google sobre conector jk2

[]s
Luca

kartler

Blz fiz como disse o rafael tirei o:

<Location "/*.jsp"> 
        JkUriSet worker ajp13:localhost:8009 
    </Location

E tirei tambem o virtualhost no apache.

deixei como luca Falou:

# socket channel para o tomcat5. 
[channel.socket:localhost:58009] 

# define the worker para o tomcat5 usando channel socket 
[ajp13:localhost:8009] 
info=Ajp13 forwarding over socket 
channel=channel.socket:localhost:8009 

# Uri mapping para o tomcat5 
[uri:/seu_contexto/*] 
info=Descricao bla, bla, bla 
worker=ajp13:localhost:8009 
debug=0

Ficou Blz…

Agora Pairou uma dúvida no ar, porque na verdade eu queria tambem que as páginas .php fossem executadas o que não está sendo quando digito http://examples/minha.php pede pra fazer o download.

não sei se isso é possivel, mas na minha cabeça a integração de Tomcat + Apache tornaria a execução de JSP e PHP ao mesmo tempo em meu contexto!

Rafael_Steil

Voce nao deve ter o php configurado corretamente no servidor ( nao integrou com o apache, ou faltou o AddHandler … algo no estilo ).

Rafael

Luca

Olá

Correção:
Na minha mensagem sobrou uma porta 58009 que está errada. O default é 8009.

Vc retirou do workers2.properties aquela linha sem referenciar contexto que havia antes mandando TUDO para o tomcat ([uri:localhost/*.jsp])?

Ele deve estar procurando o examples do tomcat no contexto ROOT

Neste endereço, examples é o nome do seu servidor?

[]s
Luca

kartler

Luca No caso examples está em webapps.

Rafael o php está configurado e Funcional em meu apache :slight_smile:

Meu workes2.properties

[shm]
info=Scoreboard. Requried for reconfiguration and status with multiprocess servers.
file=anon

# Defines a load balancer named lb. Use even if you only have one machine.
[lb:lb]

# Example socket channel, override port and host.
[channel.socket:localhost:8009]
port=8009
host=127.0.0.1



# define the worker
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009
group=lb



[uri:/*.jsp]
info=Mapeando as JSPs
[status:]
info=Status worker, displays runtime information

[uri:/jkstatus/*]
info=The Tomcat /jkstatus handler
group=status:

# Uri mapping para o tomcat5 
[uri:/examples/*] 
info=Integrando Apache + tomcat 
worker=ajp13:localhost:8009 
debug=0
Luca

Olá

Acesse aos PHPs como http://seu_servidor/seu_dir_com_PHPs/seu_arquivo.php

E não chame seu servidor de examples pois está mapeado para ser respondido pelo tomcat.

http://examples/qualquer_coisa -----> quem responde é o tomcat

[]s
Luca

kartler

Olha onde está minhas páginas .php eu chamo da seguinte forma http://localhost/sistesphp/minha.php

e examples eu estou chamando:

http://localhost/examples/minha.jsp

Este diretorio examples está dentro do webapps do tomcat , existe uma maneira de dentro deste examples uma página .php ser executada ?

Luca

Olá

Não, o tomcat não responde PHP

[]s
Luca

kartler

Então no caso é impossivel dentro do mesmo diretório conviver .php e .jsp e ambas serem executadas ?

:?

Mas deve existir uma maneira não sei qual mas creio que existe!

Luca

Olá

Ainda bem que é impossível e isto sai totalmente do que a gente entende por servidor de aplicações Java. E mais, mesmo se fosse possível, seria um pesadelo a manutenção de uma aplicação web em Java junto com outra em PHP. Já imaginou que quando vc fizesse um novo war haveria muita chance de esquecer de incluir todo o site em PHP?

O que a gente faz é colocar o PHP para ser respondido pelo Apache que sabe fazer isto e servlets (e JSPs) serem respondidos pelo servlet engine, no caso o tomcat.

[]s
Luva

Rafael_Steil

“kartler”:
Então no caso é impossivel dentro do mesmo diretório conviver .php e .jsp e ambas serem executadas ?

:?

Mas deve existir uma maneira não sei qual mas creio que existe!

Voce pode ter .jsp e .php no mesmo diretorio, mas como o luca disse, .jsp eh processado pelo tomcat e .php pelo apache.

Rafael

Luca

Olá

Rafael, seria possível fazer a loucura de mapear um host virtual para o diretório no servidor abaixo do webapps onde estaria o contexto e os PHPs. Ou ao contrário, mapear o contexto para um diretório onde estaria a aplicação PHP.

Precisaria de uma atenção especial no workers2.properties para fazer com que o conector funcionasse somente no caso de requisições jsp (ou similares)

Mas tudo isto me pareceu um desatino tão grande que só como pegadinha de estagiário que sai da empresa e deixa para o Luca tentar advinhar o que passou na sua mente insana enquanto esteve a frente do sistema (minha situação atual…argh). Por isso classifiquei como impossível. Na verdade, como vc bem apontou, é possível. Só espero que não sobre para mim.

[]s
Luca

Rafael_Steil

Entao luca, mas isso entra no caso onde voce esta em um servidor de terceiros, como a Locaweb. La voce soh tem um contexto e um diretorio home disponivel para jogar todos os arquivos necessarios para a tua aplicacao.
Em tais ambientes acaba acontecendo de voce ter os arquivos “misturados”, ja que acaba nao tendo uma distincao / organizacao de diretorios especifica para cada tipo de sistem ( htm - php / java ).

Nao entendi a parte que voce comenta sobre a atencao especial no workers2. O meu entendimento eh: o VirtualHost do Apache vai apontar o DocumentRoot para um diretorio X na maquina, onde voce podera colocar a tua aplicacao. Nesse diretorio X pode haver coisas Java, entrando ai o mod_jk, que somente teria um mapeamento para *.jsp, ficando o resto por conta do Apache, como o usual.

Ou eu perdi algo?

Rafael

Luca

Olá

Rafael, qdo falei em atenção especial foi só para lembrar que o Apache precisa saber diferenciar o que ele mesmo vai responder ou o que será respondido pelo tomcat. É só uma questão de escrever os mapeamentos direitinho que acho que não foi o caso do início desta thread.

Há uma alternativa de mixar a configuração entre o próprio httpd.conf e o workers2.properties. Veja isto (está tudo comentado porque não uso, guardo no meu httpd.conf só para centralizar as informações):[list]# Fonte:

jakarta-tomcat-connectors-jk2-2.0.4-src/jk/docs/jk2/configweb.html

JkSet is a top-level directive is used to set global config options

JkUriSet is used to set options for Location sections

#JkSet takes 2 parameters, the property name ( including component name ) and the value.

(Note: probably we should change it to 3 params, and separate the component name from property )

Each Location that has a JkUriSet will automatically create a jk2 [uri] object, using the Location path and the vhost.

All JkUriSet directives will set attributes in this [uri] object, exactly like properties in a ini file section

You can mix workers2.properties and JkUriSet - for example workers and global options can be set in worker2.properties, but all uri properties in httpd.conf. # Some people might preffer to have only one config file and use httpd.conf for all configuration.

The biggest benefit is that Apache2 mapping is used instead of jk2 to detect the requests that need to be sent to tomcat.

Apache2 has been optimized and tuned to server huge number of servers and uris - if you have only few the diference may be hard to notice.

Some people preffer to use the httpd.conf format and some tools could be better used in this mode.

One major problem is that reconfiguration is not supported if httpd.conf is used.

#You can still enable/disable/add workers if you use workers2.properties, and you could add or change uri properties in that file.

#<Location “/meu_contexto”>
#JkUriSet worker ajp13:localhost:48009
#</Location>[/list]
[]s
Luca

Criado 2 de setembro de 2004
Ultima resposta 2 de set. de 2004
Respostas 15
Participantes 3