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 설정이 들어가면 된다.
하고 보니, 아무것도 아니지만..... ㅠ
덧글
위 내용은 웹에서 톰켓 연동시에 포트 지정하는 방법이었고,
말씀하신 내용은 톰켓을 포트를 변경해가며 여러개 띄우는 걸 말씀하시는것 같습니다.
그렇게 하기 위해서는
톰켓에 conf폴더 내 server.xml 파일 설정을 변경해서 여러개를 띄울 수 있습니다.
server.xml 내용 중에
<Connector connectionTimeout="20000" port="9000" protocol="HTTP/1.1" redirectPort="8443"/>
여기에 있는 port가 실제 톰켓이 구동되는 포트이므로 변경해 주면 됩니다.
단, 그것만 변경해서 되는건 아니고, 같이 위에 있는 redirectPort와 아래 포트도 변경해주셔야 합니다.
<Server port="8005" shutdown="SHUTDOWN">