apache2 와 tomcat5 jk 연동에 관한 문제입니다.
일단 apache2 tomcat5 jk_mod.so 는 재대로 설치한거 같습니다.
그런데 제가 연동이라는걸 잘못 알고있는건지도 모르겠는데 연동이라 하면...
apache2 home 에 있는 jsp 파일을 읽으면 그거에 대한 처리를 tomcat 이 대신 해주는 그런거 아닌가요?
지금 제 설정한거로는 이런식으로 돌아갑니다.
apache2 에 일반 html 파일이 있으면 그건 그냥 나옵니다.
apache2 홈에 jsp 파일이 있으면 tomcat 홈으로 가서 tomcat 홈에 있는 같은 경로의 jsp 파일을 찾아서 실행할려고 합니다.
그러니 아파치와 톰켓 양쪽에 다 같은 jsp 파일을 넣어놔야 실행이 되는 상황인데요...
httpd.conf 에 관한 문서를 보던중 JkAutoAlias 라는게 아마 이런 상황을 해결하는거지 싶어서 그 옵션을 넣어봤더니 이번에는 아예 403 에러 (접근 권한이 없음) 이라고 나옵니다.
이거 어떻게 해야할까요
아래에 제가 수정한 httpd.conf 하고 worker.properties 를 올립니다. 도와주세요
[httpd.conf 일부]
LoadModule jk_module modules/mod_jk.so
JkWorkersFile /usr/apache2/conf/workers.properties
JkLogFile /usr/apache2/logs/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
JkMount /*.jsp worker1
JkMount /*/servlet/ worker1
JkAutoAlias /usr/tomcat/webapps //이거 없이 하면 톰켓 홈에서 .jsp 를 다시 찾습니다. 이거 있으면 403 에러
[workers.properties]
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.recycle_timeout=300
이거 외에는 최초 설치 후 손댄곳이 없습니다.
mod_jk는 apache httpd와
mod_jk는 apache httpd와 tomcat을 연결해 주는 컨넥터와 같은 개념으로 알고 있습니다.
즉 httpd로 들어온 요청 정보를 tomcat으로 보내주고 tomcat에서 받아온 응답 정보를 httpd로 보내주는 역할이라고 봅니다.
에서 보시면 httpd에서 tomcat으로 연결할 주소와 포트가 명시되어 있습니다.
비록 같이 로컬에 있는 파일이라도 httpd의 문서 루트와 tomcat의 문서 루트가 다른 경우 mod_jk가 어떻게 동작 하느냐에 따라 예상 외의 결과가 나올수도 있습니다.
를 보면 /*.jsp로 끝나는 요청이나 /*/servlet/ 으로 된 요청을 mod_jk가 톰캣쪽으로 보낼것 같은데요.. 이거는 정확히 모르겠네요.
상세한 내용은 각각의 로그파일(httpd, mod_jk, tomcat)중 어디에서 에러가 난 것인가에 따라 달라질 수 있습니다.
-- Signature --
青い空大好き。
蒼井ソラもっと好き。
파란 하늘 너무 좋아.
아오이 소라 더좋아.
mod_jk는 아파치에
mod_jk는 아파치에 들어온 요청의 URL이 톰캣에 매핑된 패턴에 포함되면 해당 요청을 톰캣으로 전달하는 것입니다. 따라서 아파치 쪽에는 JSP 파일이 필요없습니다.
네 그래야 할거 같은데
저도 그렇게 생각하는데요 문제는 이상하게 웹브라우저에서 아파치에 있는 jsp 파일을 클릭하면 톰캣이 반응을 하기는 하는데 톰캣 자신의 홈쪽에서 해당 jsp 를 다시 찾으려고 한다는겁니다.
어딘가 설정이 잘못된거 같은데 찾지를 못하겠네요.
httpd.conf 하고 worker.properties 외에 손대야할 다른것이 있는건가요?
JSP가 톰캣쪽에
JSP가 톰캣쪽에 있어야합니다. 아파치는 JSP를 처리하지 못하니까요.
해결했습니다
jsp 가 톰캣쪽에 있으면 되기는 하는데 그냥 아파치쪽에 파일들 다 몰아놓고 싶어서요
톰캣의 홈 디렉토리를 아파치홈쪽으로 링크를 걸어버렸습니다.
그러니 그냥 되네요.
이런식으로 해도 문제가 없을지는 잘 모르겠는데 일단 제가 가진 홈페이지들은 정상작동합니다.
톰캣의 홈 디렉토리를 아파치홈쪽으로 링크를 거는 방법좀 부탁드립니다.
안녕하세요.
저도 님과 같은 고민을 하고 있습니다.
방법 알려주시면 너무 감사하겠습니다.
-----먹고살려면 자바를 하세요--------------
댓글 달기