ํ๋์ ๋ฌผ๋ฆฌ ์๋ฒ์์ ์ฌ๋ฌ ๋๋ฉ์ธ(์: aaa.com, bbb.com)์ ์๋น์คํ๊ธฐ ์ํด Apache์
VirtualHost์ Tomcat์ ๋ฉํฐService๊ตฌ์ฑ์ ์ฐ๋ํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํฉ๋๋ค. ๋๋ฉ์ธ๋ณ๋ก ๋ค๋ฅธ AJP ํฌํธ๋ฅผ ํ ๋นํ์ฌ ์์ฒญ์ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ํต์ฌ์ ๋๋ค.
1. ์ํคํ ์ฒ ๋ฐ ์๋ฆฌ (Context)
์ค์ ์ ๋ชฉํ๋ ์์ฒญ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ์ด ๋ถ๋ฆฌํ๋ ๊ฒ์ ๋๋ค.
- AAA.test.com (Apache:80) → Worker(aaa) → Tomcat AJP(8009) → Service A
- BBB.test.com (Apache:80) → Worker(bbb) → Tomcat AJP(8010) → Service B
- CCC.test.com (Apache:80) → Worker(ccc) → Tomcat AJP(8011) → Service C
2. Apache ์ค์ (httpd-vhosts.conf)
๊ฐ์ฅ ๋จผ์ Apache๊ฐ ๋ค์ด์ค๋ ๋๋ฉ์ธ(ServerName)์ ๊ตฌ๋ถํ์ฌ ์ ์ ํ mod_jk ์์ปค์๊ฒ ํ ์คํ๋๋ก ์ค์ ํฉ๋๋ค.
์ค์ ํ์ฑํ (httpd.conf)
# ์ฃผ์ ํด์ ํ์ฌ vhosts ์ค์ ํ์ผ ๋ก๋
Include conf/extra/httpd-vhosts.conf
๊ฐ์ ํธ์คํธ ์ ์ (httpd-vhosts.conf)
๊ฐ ๋๋ฉ์ธ๋ณ๋ก VirtualHost ๋ธ๋ก์ ์์ฑํ๊ณ JkMount๋ฅผ ํตํด ์๋ก ๋ค๋ฅธ ์์ปค ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
# 1. AAA ๋๋ฉ์ธ ์ค์
<VirtualHost *:80>
ServerName AAA.test.com
DocumentRoot "/WAS/apps/test1"
ErrorLog "logs/aaa-error_log"
CustomLog "logs/aaa-access_log" common
# ์์ปค 'aaa'์๊ฒ ๋ชจ๋ ์์ฒญ ์ ๋ฌ
JkMount /* aaa
</VirtualHost>
# 2. BBB ๋๋ฉ์ธ ์ค์
<VirtualHost *:80>
ServerName BBB.test.com
DocumentRoot "/WAS/apps/test2"
ErrorLog "logs/bbb-error_log"
CustomLog "logs/bbb-access_log" common
# ์์ปค 'bbb'์๊ฒ ๋ชจ๋ ์์ฒญ ์ ๋ฌ
JkMount /* bbb
</VirtualHost>
# 3. CCC ๋๋ฉ์ธ ์ค์
<VirtualHost *:80>
ServerName CCC.test.com
DocumentRoot "/WAS/apps/test3"
ErrorLog "logs/ccc-error_log"
CustomLog "logs/ccc-access_log" common
# ์์ปค 'ccc'์๊ฒ ๋ชจ๋ ์์ฒญ ์ ๋ฌ
JkMount /* ccc
</VirtualHost>
3. mod_jk ์์ปค ์ค์ (workers.properties)
Apache์์ ์ง์ ํ ์์ปค ์ด๋ฆ(aaa, bbb, ccc)์ด ์ค์ ๋ก ํต์ ํ Tomcat์ AJP ํฌํธ๋ฅผ ์ ์ํฉ๋๋ค.
# ์์ปค ๋ฆฌ์คํธ ์ ์
worker.list=aaa,bbb,ccc
# [aaa] ์์ปค ์ ์ (๊ธฐ๋ณธ ํฌํธ 8009)
worker.aaa.port=8009
worker.aaa.host=localhost
worker.aaa.type=ajp13
# [bbb] ์์ปค ์ ์ (ํฌํธ 8010)
worker.bbb.port=8010
worker.bbb.host=localhost
worker.bbb.type=ajp13
# [ccc] ์์ปค ์ ์ (ํฌํธ 8011)
worker.ccc.port=8011
worker.ccc.host=localhost
worker.ccc.type=ajp13
4. Tomcat ์ค์ (server.xml)
Tomcat ํ๋์์ ์ฌ๋ฌ ํฌํธ๋ฅผ ๋ฆฌ์จํ๊ธฐ ์ํด <Service> ํ๊ทธ๋ฅผ ๋ณต์ ํ์ฌ ๊ตฌ์ฑํฉ๋๋ค. ๊ฐ ์๋น์ค๋ง๋ค ํฌํธ(HTTP, HTTPS, AJP)๊ฐ ๊ฒน์น์ง ์๋๋ก ์ฃผ์ํด์ผ ํฉ๋๋ค.
์๋น์ค A (AAA) ์ค์
<Service name="CatalinaA">
<!-- HTTP Port: 8080 -->
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<!-- AJP Port: 8009 (workers.properties์ aaa์ ๋งคํ) -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="CatalinaA" defaultHost="localhost">
<Host name="localhost" appBase="/WAS/apps/aaa" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="." reloadable="true"/>
</Host>
</Engine>
</Service>
์๋น์ค B (BBB) ์ค์
<Service name="CatalinaB">
<!-- HTTP Port: 8081 (์ถฉ๋ ๋ฐฉ์ง) -->
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8444" />
<!-- AJP Port: 8010 (workers.properties์ bbb์ ๋งคํ) -->
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="CatalinaB" defaultHost="localhost">
<Host name="localhost" appBase="/WAS/apps/bbb" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="." reloadable="true"/>
</Host>
</Engine>
</Service>
์๋น์ค C (CCC) ์ค์
<Service name="CatalinaC">
<!-- HTTP Port: 8082 (์ถฉ๋ ๋ฐฉ์ง) -->
<Connector port="8082" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8445" />
<!-- AJP Port: 8011 (workers.properties์ ccc์ ๋งคํ) -->
<Connector port="8011" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="CatalinaC" defaultHost="localhost">
<Host name="localhost" appBase="/WAS/apps/ccc" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="." reloadable="true"/>
</Host>
</Engine>
</Service>
appBase์ Context docBase ์ค์ ์ด ๊ผฌ์ผ ๊ฒฝ์ฐ 404 ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๊ฐ์ฅ ํ์คํ ๋ฐฉ๋ฒ์ docBase์ ์ ๋ ๊ฒฝ๋ก๋ฅผ ๋ช
์ํ๋ ๊ฒ์
๋๋ค.์:
docBase="/WAS/apps/ccc"
5. ๊ฒ์ฆ ๋ฐ ํ ์คํธ
- Tomcat ์ฌ๊ธฐ๋:
server.xml์์ ํ ์ฌ๊ธฐ๋.netstat -anotp | grep java # 8009, 8010, 8011 ํฌํธ๊ฐ ๋ชจ๋ LISTEN ์ํ์ธ์ง ํ์ธ - Apache ์ฌ๊ธฐ๋: ์ค์ ์ ์ฉ.
./apachectl restart - ๋ธ๋ผ์ฐ์ ์ ์: ๊ฐ ๋๋ฉ์ธ์ผ๋ก ์ ์ํ์ฌ ์๋ก ๋ค๋ฅธ ํ์ด์ง๊ฐ ๋จ๋์ง ํ์ธํฉ๋๋ค.
