apache2 와 tomcat5 jk 연동에 관한 문제입니다.

chazzy1의 이미지

일단 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

이거 외에는 최초 설치 후 손댄곳이 없습니다.

dormael의 이미지

mod_jk는 apache httpd와 tomcat을 연결해 주는 컨넥터와 같은 개념으로 알고 있습니다.
즉 httpd로 들어온 요청 정보를 tomcat으로 보내주고 tomcat에서 받아온 응답 정보를 httpd로 보내주는 역할이라고 봅니다.

worker.worker1.host=localhost
worker.worker1.port=8009

에서 보시면 httpd에서 tomcat으로 연결할 주소와 포트가 명시되어 있습니다.

비록 같이 로컬에 있는 파일이라도 httpd의 문서 루트와 tomcat의 문서 루트가 다른 경우 mod_jk가 어떻게 동작 하느냐에 따라 예상 외의 결과가 나올수도 있습니다.

JkMount /*.jsp worker1
JkMount /*/servlet/ worker1

를 보면 /*.jsp로 끝나는 요청이나 /*/servlet/ 으로 된 요청을 mod_jk가 톰캣쪽으로 보낼것 같은데요.. 이거는 정확히 모르겠네요.

상세한 내용은 각각의 로그파일(httpd, mod_jk, tomcat)중 어디에서 에러가 난 것인가에 따라 달라질 수 있습니다.

-- Signature --
青い空大好き。
蒼井ソラもっと好き。
파란 하늘 너무 좋아.
아오이 소라 더좋아.

kewlbear의 이미지

mod_jk는 아파치에 들어온 요청의 URL이 톰캣에 매핑된 패턴에 포함되면 해당 요청을 톰캣으로 전달하는 것입니다. 따라서 아파치 쪽에는 JSP 파일이 필요없습니다.

chazzy1의 이미지

저도 그렇게 생각하는데요 문제는 이상하게 웹브라우저에서 아파치에 있는 jsp 파일을 클릭하면 톰캣이 반응을 하기는 하는데 톰캣 자신의 홈쪽에서 해당 jsp 를 다시 찾으려고 한다는겁니다.

어딘가 설정이 잘못된거 같은데 찾지를 못하겠네요.

httpd.conf 하고 worker.properties 외에 손대야할 다른것이 있는건가요?

kewlbear의 이미지

JSP가 톰캣쪽에 있어야합니다. 아파치는 JSP를 처리하지 못하니까요.

chazzy1의 이미지

jsp 가 톰캣쪽에 있으면 되기는 하는데 그냥 아파치쪽에 파일들 다 몰아놓고 싶어서요

톰캣의 홈 디렉토리를 아파치홈쪽으로 링크를 걸어버렸습니다.

그러니 그냥 되네요.

이런식으로 해도 문제가 없을지는 잘 모르겠는데 일단 제가 가진 홈페이지들은 정상작동합니다.

nivea1의 이미지

안녕하세요.
저도 님과 같은 고민을 하고 있습니다.
방법 알려주시면 너무 감사하겠습니다.

-----먹고살려면 자바를 하세요--------------

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.