2015/07/31 14:17

apache + tomcats ( virtual host 사용 ) Server/WAS



apache와 tomat을 연동하는데, 
tomcat에 올라가는 서비스가 총 3개인 상황에서 
context로 구별하는게 아닌 port로 구별해야 하는 상황이 되었다. 
( 예 : www.a.co.kr:8080 / www.a.co.kr:18080 / www.a.co.kr:28080 )

이 경우 apache와 연동하는 방법은??

처음에 8080 하나만 apache와 연동하는 경우에 
버전을 다운그레이드 하는 수모 후 결국에는 연동을 해 냈는데
추가 요구사항으로 위와 같은 설정을 요구했다.

apache 하나에 tomcat 세개가 연동이 되느나.. 
그것도 port로 구별되는데.. 

처음에는 안될꺼 같단 막연한 생각부터 들었으나,, 
역시, 안되는건 없다.. 

(참고 : http://www.ramkitech.com/2012/03/virtual-host-apache-httpd-server-tomcat.html )

virtual host를 사용하면 된다. 

즉, 처음에 apache 80포트와 tomat 8080과 연동만 하면 되는 경우에는 
아래와 같이 설정하면 된다. 

물론, 적절한 버전의 mod_jk.so 파일은 modules 아래에 들어있다 가정.. 
( 아래 예시의 mod_jk-1.2.28-httpd-2.0.52.so 이름을 적절히 변경 )


httpd.conf ----------------------

LoadModule jk_module modules/mod_jk-1.2.28-httpd-2.0.52.so

<IfModule mod_jk.c>

    JkWorkersFile conf/workers.properties

    JkLogFile logs/mod_jk_new.log
    JkLogLevel error
    JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
    JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
    JkRequestLogFormat "%w %V %T"

    JkMount /* example

</IfModule>


workers.properties ----------------------
workers.tomcat_home=D:\tomcat\apache-tomcat-5.0.30
workers.java_home=D:\tomcat\jdk142_11
ps=\

worker.list=example

# Set properties for worker 'example' (ajp13)
worker.example.type=ajp13
worker.example.host=localhost
worker.example.port=8009

잘 된다.. 

위 요청은 모든 요청을 tomcat으로 넘기고 있다..
web server - was 연동 사상을 지키고 싶다면 
원하는 요청만 넘어가도록 JkMount /* example 을 변경해 준다.

기본적으로 workers.properties 파일은 없다. 
생성해서 위와 비슷하게 만들어 준다.. 





그렇다면, 
다수의 port를 연동해야 한다면,, 아래와 같은 방법을 사용한다... 


httpd.conf ----------------------

LoadModule jk_module modules/mod_jk-1.2.28-httpd-2.0.52.so

<IfModule mod_jk.c>

    JkWorkersFile conf/workers.properties

    JkLogFile logs/mod_jk_new.log
    JkLogLevel error
    JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
    JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
    JkRequestLogFormat "%w %V %T"

</IfModule>


Listen 80
Listen 7301
Listen 7302
NameVirtualHost *:80
NameVirtualHost *:7301
NameVirtualHost *:7302

<VirtualHost *:80>
  ServerName localhost
  JkMount /* example

</VirtualHost>

<VirtualHost *:7301>
  ServerName localhost
  JkMount /* example1

</VirtualHost>

<VirtualHost *:7302>
  ServerName localhost
  JkMount /* example2

</VirtualHost>


workers.properties ----------------------
workers.tomcat_home=D:\tomcat\apache-tomcat-5.0.30
workers.java_home=D:\tomcat\jdk142_11
ps=\

worker.list=example,example1,example2

# Set properties for worker 'example' (ajp13)
worker.example.type=ajp13
worker.example.host=localhost
worker.example.port=8009


# Set properties for worker 'example1' (ajp13)
worker.example1.type=ajp13
worker.example1.host=localhost
worker.example1.port=18009


# Set properties for worker 'example2' (ajp13)
worker.example2.type=ajp13
worker.example2.host=localhost
worker.example2.port=28009

위와 같이 설정한다면,, 

apache 80   ---- tomcat 8080
apache 7301 ---- tomcat 18080
apache 7302 ---- tomcat 28080

가상 호스트 별로 JkMount 설정이 들어가면 된다.



하고 보니, 아무것도 아니지만..... ㅠ


덧글

  • 톰캣하 2019/09/10 17:24 # 삭제 답글

    안녕하세요 다름이 아니라 제가 글 잘읽었는데 ㅜㅠ 혹시 궁금한게 저기 위에서는 톰캣 포트로 톰캣의 구별은 하지만 실제로 톰캣 포트에 따른 실행할 파일 설정은 따로 안하신 건가요..???
댓글 입력 영역