Avatar billede svedendeko Nybegynder
19. august 2004 - 11:21 Der er 23 kommentarer og
1 løsning

Problemer med apache2 og tomcat 5 integration

Hej alle

Jeg har igennem et stykke tid kæmpet med at få en linuxbox med Redhat 8, Apache 2 og Tomcat 5 til at fungere.

Jeg har fået installeret Apache 2 og Tomcat 5 og de virker fint hver for sig på henholdsvis port 80 og 8080. Men jeg kan ikke få dem til at snakke sammen således at apache tager sig af statiske filer og tomcat af jsp,servlets osv.

Jeg har installeret jk2 connectoren men ved ikke om den virker ? Faktisk ved jeg ikke hvor det går galt ? Jeg er ikke ol-mester i linux men kan de basale ting.

Hjælp hvordan finder jeg ud af hvad der er galt og hvordan retter jeg så dette ?
Avatar billede arne_v Ekspert
19. august 2004 - 11:23 #1
Prøv og post konfigurationen af mod_jk2 ?

(udsnit af httpd.conf eller seperat mod_jk2.conf alt efter hvordan du har lavet det)
Avatar billede arne_v Ekspert
19. august 2004 - 11:24 #2
Og selvfølgelig også din workers2.properties
Avatar billede svedendeko Nybegynder
19. august 2004 - 11:43 #3
Jeg har min jk2.properties ?

## THIS FILE MAY BE OVERRIDEN AT RUNTIME. MAKE SURE TOMCAT IS STOPED
## WHEN YOU EDIT THE FILE.

## COMMENTS WILL BE _LOST_

## DOCUMENTATION OF THE FORMAT IN JkMain javadoc.

# Set the desired handler list
# handler.list=apr,request,channelJni
#
# Override the default port for the socketChannel
# channelSocket.port=8019
# Default:
# channelUnix.file=${jkHome}/work/jk2.socket
# Just to check if the the config  is working
# shm.file=${jkHome}/work/jk2.shm

# In order to enable jni use any channelJni directive
# channelJni.disabled = 0
# And one of the following directives:

# apr.jniModeSo=/opt/apache2/modules/mod_jk2.so

# If set to inprocess the mod_jk2 will Register natives itself
# This will enable the starting of the Tomcat from mod_jk2
# apr.jniModeSo=inprocess
# jk2.properties
# Configured for channel UNIX

# Set the desired handler list
handler.list=apr,request,channelUnix

# UNIX Domain socket location
channelUnix.file=/usr/local/tomcat5/work/jk2.socket

# Dynamic Library
serverRoot=/etc/httpd
apr.NativeSo=/etc/httpd/modules/libjkjni.so
Avatar billede svedendeko Nybegynder
19. august 2004 - 11:44 #4
Min workers2.properties

# workers2.properties

# Shared memory handling. Needs to be set.
[shm]
info=Scoreboard. Required for reconfiguration and status with multiprocess servers
file=/usr/local/tomcat5/logs/jk2.shm
size=1000000
debug=0
disabled=0

# UNIX domain socket
[channel.un:/usr/local/tomcat5/work/jk2.socket]
tomcatId=localhost:8009
debug=0

# define the worker
[ajp13:/usr/local/tomcat5/work/jk2.socket]
channel=channel.un:/usr/local/tomcat5/work/jk2.socket

# Announce a "status" worker
[status:status]
info=Status worker. Displays runtime information.

[uri:/jkstatus/*]
group=status:status

# Uri mapping
[uri:/jsp-examples/*]
Avatar billede arne_v Ekspert
19. august 2004 - 11:55 #5
Den sidste siger at hvis:

http://xxxx:8080/jsp-example/

virker så bør:

http://xxxx/jsp-example/

også virke fordi de URL'er forwardes til Tomcat.
Avatar billede arne_v Ekspert
19. august 2004 - 11:57 #6
Den første fil var ikke den jeg var interesseret i.

Har du:

LoadModule jk2_module modules/mod_jk2.so

og

JkSet config.file conf/workers2.properties

i httpd.conf eller i en .conf som bliver includet i httpd.conf ?
Avatar billede svedendeko Nybegynder
19. august 2004 - 12:05 #7
Hvordan ser jeg hvilke filer som bliver includeret i httpd.conf ?

Jeg har lavet en include til jk2 som ligger i biblioteket conf.d, men hvordan ved man om dette bliver inkluderet i configurationen ? Indholdet ses nedenfor.

[root@zeus conf.d]# cat jk2.conf
LoadModule jk2_module modules/mod_jk2.so
JkSet config.file /etc/httpd/conf/workers2.properties

[root@zeus conf.d]#
Avatar billede arne_v Ekspert
19. august 2004 - 12:08 #8
Det ser perfekt ud !

Der skal simpelthen stå:

Include ...

i httpd.conf for at den inkluderer.
Avatar billede svedendeko Nybegynder
19. august 2004 - 12:16 #9
Er det lige meget hvor det står ? skal der være 3 punktummer ?
Avatar billede arne_v Ekspert
19. august 2004 - 12:18 #10
Placering er næsten lige gyldig (der er noget med virtual hosts).

de 3 punktummer er jk2.conf filen

min hedder:

Include conf/mod_jk2.conf
Avatar billede svedendeko Nybegynder
19. august 2004 - 12:18 #11
Avatar billede arne_v Ekspert
19. august 2004 - 12:20 #12
Hvad står der i Apaches log filer ?
Avatar billede svedendeko Nybegynder
19. august 2004 - 12:26 #13
Nu har begynder der at ske noget ..

Jeg får nu følgende fejl i apache loggen :

[Thu Aug 19 12:30:34 2004] [error] lb.getWorker() reenable ajp13:/usr/local/tomcat5/work/jk2.socket
[Thu Aug 19 12:30:34 2004] [error] channelUn.connect() connect failed 13 Permission denied
[Thu Aug 19 12:30:34 2004] [error] ajp13.connect() failed ajp13:/usr/local/tomcat5/work/jk2.socket
[Thu Aug 19 12:30:34 2004] [error] ajp13.service() failed to connect endpoint errno=13 Permission denied
[Thu Aug 19 12:30:34 2004] [error] ajp13.service() Error  forwarding ajp13:/usr/local/tomcat5/work/jk2.socket 1 1
[Thu Aug 19 12:30:34 2004] [error] lb.service() worker failed 120000 for ajp13:/usr/local/tomcat5/work/jk2.socket
[Thu Aug 19 12:30:34 2004] [error] lb_worker.service() all workers in error or disabled state
[Thu Aug 19 12:30:34 2004] [error] mod_jk2.handler() Error connecting to tomcat 120000, status 503


Siger det dig noget ?
Avatar billede svedendeko Nybegynder
19. august 2004 - 12:27 #14
I iøvrigt giver den ikke længere 404 på port 80, men fejl 503 "Service Temporarily Unavailable"

Det er da et godt tegn.
Avatar billede arne_v Ekspert
19. august 2004 - 12:30 #15
Er AJP13 connector enables i Tomcat cond/server.xml ?

Og jeg er lidt bekymret over at det tilsyneladende er sat op til at bruge
Unix socket sog ikke TCP/IP sockets.
Avatar billede svedendeko Nybegynder
19. august 2004 - 12:40 #16
Jeg har ladet mig fortælle at unixsocket performer en del bedre end alm. tcp/ip sockets. Men kan det være fordi at apache useren ikke har rettigheder til at åbne socketten ? Hvordan hitter jeg ud af hvilken user apache kører under ?

Server.xml indeholder:
<!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
    <Connector port="8009"
              enableLookups="false" redirectPort="8443" debug="0"
              protocol="AJP/1.3" />
Avatar billede arne_v Ekspert
19. august 2004 - 12:49 #17
Lyder meget plausibelt.

Men jeg har aldrig prøvet den config.

Og jeg tror ike at der er mange som har.

test/udvikling => TCP/IP performer ok

production => så vil Apache og JSP/Servlet engine aligevel køre på hver sin box
Avatar billede svedendeko Nybegynder
19. august 2004 - 13:44 #18
Havde du nogle idéer til hvad det som står i apache loggen betyder ?
Avatar billede svedendeko Nybegynder
19. august 2004 - 13:51 #19
http://xxx/jkstatus virker i øvrigt, jeg ved ikke præcis hvad man skal bruge den informationer til, men den viser en masse.
Avatar billede arne_v Ekspert
19. august 2004 - 14:12 #20
Jeg er noget lost.

Hvis jeg skal kunne hjælpe mere, så skal jeg nok have sat en tilsvarende config op på min Linux.
Avatar billede svedendeko Nybegynder
19. august 2004 - 14:18 #21
Øv, men din hjælp har det gjort at jeg er kommet noget længere, nu får jeg da i det mindste ikke fejl 404 mere, og det ser ud til at de 2 har fundet hinanden de er bare ikke enige om hvad de skal snakke om ;o)
Avatar billede svedendeko Nybegynder
19. august 2004 - 15:27 #22
Så har jeg fundet fejlen, brugeren "nobody" som apache kører under havde ikke rettigheder til at åbne socketten. Jeg løste det ved at sætte "nobody" brugeren i samme gruppe som tomcat brugeren, tada nu virker jsp-examples på port 80

Arne_V laver du lige et svar, du fortjener absolut point for din indsats.
Avatar billede arne_v Ekspert
19. august 2004 - 15:33 #23
Se det passer jo godt med fejlen "Permission denied"
Avatar billede arne_v Ekspert
19. august 2004 - 15:33 #24
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Uanset kodesprog, så giver vi dig mulighederne for at udvikle det, du behøver.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester