[Tomcat] ์ฃผ์š” ์„ค์ • ํŒŒ์ผ(server.xml, web.xml) ์™„๋ฒฝ ๋ถ„์„ ๋ฐ ํ•„์ˆ˜ ํŠœ๋‹ ํฌ์ธํŠธ

Apache Tomcat์˜ ๋™์ž‘์„ ์ œ์–ดํ•˜๋Š” ํ•ต์‹ฌ ์„ค์ • ํŒŒ์ผ๋“ค์€ ๋ชจ๋‘ /conf ๋””๋ ‰ํ† ๋ฆฌ์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ค‘์š”ํ•œ server.xml(ํฌํŠธ, ์ปค๋„ฅํ„ฐ)๊ณผ web.xml(์„ธ์…˜, MIME)์˜ ์—ญํ• ๊ณผ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์„ค์ • ๋ณ€๊ฒฝ ๊ฐ€์ด๋“œ๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

1. ์„ค์ • ํŒŒ์ผ ๊ฐœ์š” (Configuration Overview)

Tomcat ์„ค์น˜ ๊ฒฝ๋กœ ๋‚ด conf ๋””๋ ‰ํ† ๋ฆฌ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์š” XML ํŒŒ์ผ๋“ค์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ๋ช… ์ฃผ์š” ์—ญํ•  ๋ฐ ์„ค๋ช…
server.xml Tomcat์˜ ๋ฉ”์ธ ์„ค์ • ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.
- HTTP/AJP ํฌํŠธ ์„ค์ •
- ๊ฐ€์ƒ ํ˜ธ์ŠคํŠธ(Host) ๋ฐ Context ์„ค์ •
- ์“ฐ๋ ˆ๋“œ ํ’€(Thread Pool) ๊ด€๋ฆฌ
web.xml ๋ชจ๋“  ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ๋ณธ ์†์„ฑ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
- ์„ธ์…˜ ํƒ€์ž„์•„์›ƒ(Session Timeout) ์„ค์ •
- MIME ํƒ€์ž… ์ •์˜, ๊ธฐ๋ณธ ์„œ๋ธ”๋ฆฟ ๋งคํ•‘
context.xml ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ Context ์„ค์ •์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
- JNDI ๋ฆฌ์†Œ์Šค(DB Connection Pool) ์„ค์ • ์‹œ ์ฃผ๋กœ ์‚ฌ์šฉ
tomcat-users.xml Tomcat Manager/Admin ํŽ˜์ด์ง€ ์ ‘๊ทผ ๊ณ„์ •์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

2. server.xml ์ฃผ์š” ์„ค์ • ๊ฐ€์ด๋“œ

์—”์ง€๋‹ˆ์–ด๊ฐ€ ๊ฐ€์žฅ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ˆ˜์ •ํ•˜๋Š” ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ํฌํŠธ ์ถฉ๋Œ ํ•ด๊ฒฐ์ด๋‚˜ ์ธ์ฝ”๋”ฉ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ํ•„์ˆ˜์ ์œผ๋กœ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

1) HTTP ํฌํŠธ ๋ณ€๊ฒฝ ๋ฐ ์ธ์ฝ”๋”ฉ ์„ค์ •

๊ธฐ๋ณธ 8080 ํฌํŠธ๋ฅผ 80์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜, ํ•œ๊ธ€ ๊นจ์ง ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด URIEncoding์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

<!-- ๊ธฐ๋ณธ ์„ค์ • -->
<Connector port="8080" protocol="HTTP/1.1" 
           connectionTimeout="20000" 
           redirectPort="8443" />

<!-- ํŠœ๋‹ ์„ค์ • ์˜ˆ์‹œ -->
<Connector port="80" protocol="HTTP/1.1" 
           connectionTimeout="20000" 
           redirectPort="8443"
           URIEncoding="UTF-8" />
Tip: GET ๋ฐฉ์‹์œผ๋กœ ๋„˜์–ด์˜ค๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ํ•œ๊ธ€์ด ๊นจ์ง„๋‹ค๋ฉด URIEncoding="UTF-8" ์†์„ฑ์ด ๋ˆ„๋ฝ๋˜์—ˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค.

2) AJP ํฌํŠธ ์„ค์ • (์›น ์„œ๋ฒ„ ์—ฐ๋™ ์‹œ)

Apache HTTP Server์™€ ์—ฐ๋™ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” AJP ํ”„๋กœํ† ์ฝœ ํฌํŠธ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ฃผ์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

<!-- ๊ธฐ๋ณธ๊ฐ’ 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

3. web.xml ์ฃผ์š” ์„ค์ • ๊ฐ€์ด๋“œ

๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ์šฉ๋˜๋Š” ์ „์—ญ(Global) ์„ค์ •์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

1) ์„ธ์…˜ ํƒ€์ž„์•„์›ƒ (Session Timeout)

์‚ฌ์šฉ์ž ์„ธ์…˜ ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. (๋‹จ์œ„: ๋ถ„)

<session-config>
    <session-timeout>30</session-timeout>
</session-config>

2) ๋””๋ ‰ํ† ๋ฆฌ ๋ฆฌ์ŠคํŒ… ๋น„ํ™œ์„ฑํ™” (๋ณด์•ˆ)

ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ ์ ‘๊ทผ ์‹œ ํŒŒ์ผ ๋ชฉ๋ก์ด ๋…ธ์ถœ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด listings ๊ฐ’์„ false๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

<servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>0</param-value>
    </init-param>
    <init-param>
        <param-name>listings</param-name>
        <param-value>false</param-value> <!-- true๋ฉด ํŒŒ์ผ ๋ชฉ๋ก ๋…ธ์ถœ๋จ -->
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

4. tomcat-users.xml (Manager App)

http://localhost:8080/manager ํŽ˜์ด์ง€์— ์ ‘์†ํ•˜์—ฌ GUI๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๊ฑฐ๋‚˜ ์ค‘์ง€ํ•˜๋ ค๋ฉด ๊ณ„์ • ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

<tomcat-users>
  <!-- ์—ญํ•  ์ •์˜ -->
  <role rolename="manager-gui"/>
  <role rolename="admin-gui"/>
  
  <!-- ์‚ฌ์šฉ์ž ์ •์˜ -->
  <user username="admin" password="password" roles="manager-gui,admin-gui"/>
</tomcat-users>
์ฃผ์˜: Manager App์€ ๊ฐ•๋ ฅํ•œ ๊ถŒํ•œ์„ ๊ฐ€์ง€๋ฏ€๋กœ, ์šด์˜ ํ™˜๊ฒฝ์—์„œ๋Š” ์™ธ๋ถ€ IP ์ ‘๊ทผ์„ ์ฐจ๋‹จํ•˜๊ฑฐ๋‚˜ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

Next Step:
์„ค์ • ํŒŒ์ผ ์ˆ˜์ • ํ›„์—๋Š” ๋ฐ˜๋“œ์‹œ Tomcat์„ ์žฌ๊ธฐ๋™ํ•ด์•ผ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ๋Š” ์‹ค์ œ ์šด์˜ ํ™˜๊ฒฝ์—์„œ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•œ JVM ๋ฉ”๋ชจ๋ฆฌ ์„ค์ •(Heap Size)๊ณผ GC ํŠœ๋‹ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

[Tomcat] Windows ํ™˜๊ฒฝ Apache Tomcat 9 ์„ค์น˜ ๋ฐ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ ์™„๋ฒฝ ๊ฐ€์ด๋“œ

Windows 10 ํ™˜๊ฒฝ์—์„œ Java ๊ธฐ๋ฐ˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์ธ Apache Tomcat 9์„ ์„ค์น˜ํ•˜๋Š” ๊ณผ์ •์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. JDK ์„ค์น˜ ํ™•์ธ๋ถ€ํ„ฐ ๋‹ค์šด๋กœ๋“œ, ์••์ถ• ํ•ด์ œ, ๊ทธ๋ฆฌ๊ณ  ์ฃผ์š” ๋””๋ ‰ํ† ๋ฆฌ(bin, conf, logs)์˜ ์—ญํ• ๊ณผ ๊ตฌ๋™ ํ…Œ์ŠคํŠธ๊นŒ์ง€ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

0. ์‚ฌ์ „ ์ค€๋น„ (Prerequisites)

Tomcat์€ Java๋กœ ๊ตฌ๋™๋˜๋ฏ€๋กœ JDK(Java Development Kit)๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. ์„ค์น˜ ์ „ ๋ฐ˜๋“œ์‹œ Java ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Java ์„ค์น˜ ํ™•์ธ

:: CMD ์ฐฝ์—์„œ ํ™•์ธ
java -version
javac -version
Check Point: ๋ฒ„์ „ ์ •๋ณด๊ฐ€ ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด JDK๋ฅผ ๋จผ์ € ์„ค์น˜ํ•˜๊ณ , ์‹œ์Šคํ…œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜(JAVA_HOME, PATH)๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Tomcat์€ ์‹คํ–‰ ์‹œ JAVA_HOME์„ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.

1. ๋‹ค์šด๋กœ๋“œ ๋ฐ ์„ค์น˜ (Download & Install)

์„ค์น˜ํ˜•(Installer)๋ณด๋‹ค๋Š” ์••์ถ•ํ˜•(Zip)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋””๋ ‰ํ† ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•˜๊ณ , ์—ฌ๋Ÿฌ ๋ฒ„์ „์„ ๋™์‹œ์— ๊ด€๋ฆฌํ•˜๊ธฐ ์ข‹์Šต๋‹ˆ๋‹ค.

๋‹ค์šด๋กœ๋“œ

  • ๊ณต์‹ ์‚ฌ์ดํŠธ: http://tomcat.apache.org/
  • ๋ฒ„์ „ ์„ ํƒ: Tomcat 9 (Latest Stable) > Binary Distributions > Core: zip (64-bit/32-bit Windows)

์„ค์น˜ (์••์ถ• ํ•ด์ œ)

๋‹ค์šด๋กœ๋“œํ•œ Zip ํŒŒ์ผ์„ ์›ํ•˜๋Š” ๊ฒฝ๋กœ์— ์••์ถ• ํ•ด์ œํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ์„ค์น˜๋Š” ๋๋‚ฉ๋‹ˆ๋‹ค.

  • ์„ค์น˜ ๊ฒฝ๋กœ ์˜ˆ์‹œ: E:\APP\WAS\TOMCAT9

2. ์ฃผ์š” ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ (Directory Structure)

์••์ถ•์„ ํ•ด์ œํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํด๋” ๊ตฌ์กฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ํด๋”์˜ ์—ญํ• ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด WAS ์šด์˜์˜ ์ฒซ๊ฑธ์Œ์ž…๋‹ˆ๋‹ค.

๋””๋ ‰ํ† ๋ฆฌ ์—ญํ•  ๋ฐ ์ฃผ์š” ํŒŒ์ผ
/bin ์„œ๋ฒ„ ์‹คํ–‰ ๋ฐ ์ข…๋ฃŒ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค.
- startup.bat: ์„œ๋ฒ„ ์‹œ์ž‘ (Windows)
- shutdown.bat: ์„œ๋ฒ„ ์ค‘์ง€ (Windows)
- catalina.bat: ์‹คํ–‰ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ฐ ์˜ต์…˜ ์„ค์ •
/conf ์„œ๋ฒ„ ์ „์ฒด ์„ค์ • ํŒŒ์ผ์ด ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค.
- server.xml: ํฌํŠธ(8080, 8009), ์—”์ง„ ์„ค์ •
- web.xml: ์„ธ์…˜ ํƒ€์ž„์•„์›ƒ, MIME ํƒ€์ž… ๋“ฑ ๊ณตํ†ต ์„ค์ •
/lib Tomcat ๊ตฌ๋™์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Jar) ์ €์žฅ์†Œ (JDBC ๋“œ๋ผ์ด๋ฒ„ ๋“ฑ ํฌํ•จ)
/logs ์„œ๋ฒ„ ๋กœ๊ทธ๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
- catalina.yyyy-mm-dd.log: ์—”์ง„ ๋กœ๊ทธ
- localhost_access_log: ์ ‘์† ๋กœ๊ทธ
/webapps ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(WAR ํŒŒ์ผ)์„ ๋ฐฐํฌํ•˜๋Š” ๊ธฐ๋ณธ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

3. ๊ตฌ๋™ ๋ฐ ๊ฒ€์ฆ (Start & Verify)

์„ค์น˜๊ฐ€ ์ œ๋Œ€๋กœ ๋˜์—ˆ๋Š”์ง€ ์„œ๋ฒ„๋ฅผ ์ผœ์„œ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„ ๊ตฌ๋™

:: bin ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™
cd E:\APP\WAS\TOMCAT9\bin

:: ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ ๋™์ž‘
startup.bat

์ƒˆ๋กœ์šด CMD ์ฐฝ์ด ๋œจ๋ฉด์„œ ๋กœ๊ทธ๊ฐ€ ์˜ฌ๋ผ๊ฐ€๊ณ , ๋งˆ์ง€๋ง‰์— Server startup in [xxx] ms ๋ฉ”์‹œ์ง€๊ฐ€ ๋ณด์ด๋ฉด ๊ตฌ๋™ ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค.

์ ‘์† ํ…Œ์ŠคํŠธ

๋ธŒ๋ผ์šฐ์ €๋ฅผ ์—ด๊ณ  http://localhost:8080 ์— ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค. ๊ณ ์–‘์ด ๊ทธ๋ฆผ์ด ์žˆ๋Š” Tomcat ๊ธฐ๋ณธ ํŽ˜์ด์ง€๊ฐ€ ๋œฌ๋‹ค๋ฉด ์ •์ƒ์ ์œผ๋กœ ์„ค์น˜๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.


Next Step:
๊ธฐ๋ณธ ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š” server.xml์„ ์ˆ˜์ •ํ•˜์—ฌ HTTP ํฌํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜, ์ธ์ฝ”๋”ฉ ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜๋Š” Tomcat ๊ธฐ๋ณธ ์„ค์ • ํŠœ๋‹์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

[Apache/Tomcat] ๋‹ค์ค‘ ๋„๋ฉ”์ธ ๊ตฌ์„ฑ์„ ์œ„ํ•œ VirtualHost ๋ฐ AJP ํฌํŠธ ๋งคํ•‘ ๊ฐ€์ด๋“œ

ํ•˜๋‚˜์˜ ๋ฌผ๋ฆฌ ์„œ๋ฒ„์—์„œ ์—ฌ๋Ÿฌ ๋„๋ฉ”์ธ(์˜ˆ: 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>
Tip (docBase ์„ค์ •):
appBase์™€ Context docBase ์„ค์ •์ด ๊ผฌ์ผ ๊ฒฝ์šฐ 404 ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ํ™•์‹คํ•œ ๋ฐฉ๋ฒ•์€ docBase์— ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ๋ช…์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์˜ˆ: docBase="/WAS/apps/ccc"

5. ๊ฒ€์ฆ ๋ฐ ํ…Œ์ŠคํŠธ

  1. Tomcat ์žฌ๊ธฐ๋™: server.xml ์ˆ˜์ • ํ›„ ์žฌ๊ธฐ๋™.
    netstat -anotp | grep java 
    # 8009, 8010, 8011 ํฌํŠธ๊ฐ€ ๋ชจ๋‘ LISTEN ์ƒํƒœ์ธ์ง€ ํ™•์ธ
  2. Apache ์žฌ๊ธฐ๋™: ์„ค์ • ์ ์šฉ.
    ./apachectl restart
  3. ๋ธŒ๋ผ์šฐ์ € ์ ‘์†: ๊ฐ ๋„๋ฉ”์ธ์œผ๋กœ ์ ‘์†ํ•˜์—ฌ ์„œ๋กœ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๊ฐ€ ๋œจ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
Apache Tomcat VirtualHost mapping test result

[๊ทธ๋ฆผ] ๋„๋ฉ”์ธ๋ณ„ ์—ฐ๋™ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ํ™”๋ฉด

[Apache/Tomcat] ์›น ์„œ๋ฒ„ ์—ฐ๋™ ๊ฐ€์ด๋“œ: mod_jk (AJP) ์„ค์ • ์™„๋ฒฝ ์ •๋ฆฌ

Apache HTTP Server์™€ Tomcat์„ ์—ฐ๋™(Interlink)ํ•˜์—ฌ ์ •์  ์ปจํ…์ธ  ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์„ ๋†’์ด๊ณ  ๋ถ€ํ•˜ ๋ถ„์‚ฐ(Load Balancing) ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” mod_jk ๋ชจ๋“ˆ์˜ ์„ค์น˜(์ปดํŒŒ์ผ)๋ถ€ํ„ฐ workers.properties ์„ค์ •๊นŒ์ง€์˜ ์ „์ฒด ๊ณผ์ •์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

0. ๊ธฐ๋ณธ ๊ฐœ๋… (Concepts)

  • mod_jk: Apache๊ฐ€ Tomcat๊ณผ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค.
  • AJP (Apache JServ Protocol): ์›น ์„œ๋ฒ„์™€ WAS ๊ฐ„์˜ ํšจ์œจ์ ์ธ ํ†ต์‹ ์„ ์œ„ํ•ด ์ตœ์ ํ™”๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. (Tomcat ๊ธฐ๋ณธ AJP ํฌํŠธ: 8009)

1. mod_jk ์„ค์น˜ (Compile)

mod_jk๋Š” Apache ๋ฐฐํฌํŒ์— ๊ธฐ๋ณธ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ, ์†Œ์Šค๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์ปดํŒŒ์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ Apache์˜ ํ™•์žฅ ๋„๊ตฌ์ธ apxs๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์šด๋กœ๋“œ ๋ฐ ์••์ถ• ํ•ด์ œ

์ตœ์‹  ๋ฒ„์ „์€ Tomcat Connectors ๋‹ค์šด๋กœ๋“œ ํŽ˜์ด์ง€์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

# 1. ์†Œ์Šค ๋‹ค์šด๋กœ๋“œ (๋ฒ„์ „์€ ์‹œ์ ์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ)
wget http://apache.mirror.cdnetworks.com/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.41-src.tar.gz

# 2. ์••์ถ• ํ•ด์ œ
tar -zxvf tomcat-connectors-1.2.41-src.tar.gz

Configure ๋ฐ ์ปดํŒŒ์ผ

native ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•˜์—ฌ ์ปดํŒŒ์ผ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์˜: --with-apxs ์˜ต์…˜์—๋Š” ํ˜„์žฌ ์„ค์น˜๋œ Apache์˜ apxs ๋ฐ”์ด๋„ˆ๋ฆฌ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์ •ํ™•ํžˆ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

cd tomcat-connectors-1.2.41-src/native

# Apache ์„ค์น˜ ๊ฒฝ๋กœ์— ๋งž์ถฐ apxs ๊ฒฝ๋กœ ์ง€์ • (/WAS/apache/bin/apxs)
./configure --with-apxs=/WAS/apache/bin/apxs

# ์ปดํŒŒ์ผ ๋ฐ ์„ค์น˜
make && make install

์„ค์น˜ ํ™•์ธ (Verification)

์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด Apache์˜ modules ๋””๋ ‰ํ† ๋ฆฌ์— mod_jk.so ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

ls -l /WAS/apache/modules/mod_jk.so

2. ์›Œ์ปค ์„ค์ • (workers.properties)

Apache์—๊ฒŒ "์–ด๋–ค Tomcat ์ธ์Šคํ„ด์Šค์™€ ํ†ต์‹ ํ• ์ง€" ์•Œ๋ ค์ฃผ๋Š” ์„ค์ • ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ conf ๋””๋ ‰ํ† ๋ฆฌ์— ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ ์ƒ์„ฑ

vi /WAS/apache/conf/workers.properties

์„ค์ • ๋‚ด์šฉ ์ž‘์„ฑ

# Tomcat ๋ฐ Java ๊ฒฝ๋กœ (ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์ˆ˜์ •)
workers.tomcat_home="/WAS/tomcat8"
workers.java_home="/usr/bin/java"
ps=/

# ์›Œ์ปค ๋ชฉ๋ก ์ •์˜ (์ฝค๋งˆ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋‹ค์ˆ˜ ์ •์˜ ๊ฐ€๋Šฅ)
worker.list=test1

# [test1] ์›Œ์ปค ์ƒ์„ธ ์„ค์ •
worker.test1.port=8009
worker.test1.host=localhost
worker.test1.type=ajp13
# worker.test1.lbfactor=1 (๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ์‹œ ์‚ฌ์šฉ)
Note: worker.test1.port๋Š” Tomcat์˜ server.xml ๋‚ด <Connector protocol="AJP/1.3" ... /> ์— ์„ค์ •๋œ ํฌํŠธ์™€ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (๊ธฐ๋ณธ๊ฐ’: 8009)

3. Apache ์„ค์ • (httpd.conf)

๋งˆ์ง€๋ง‰์œผ๋กœ Apache๊ฐ€ mod_jk ๋ชจ๋“ˆ์„ ๋กœ๋“œํ•˜๊ณ , ํŠน์ • ์š”์ฒญ์„ Tomcat(์›Œ์ปค)์œผ๋กœ ๋ณด๋‚ด๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ ์ˆ˜์ •

vi /WAS/apache/conf/httpd.conf

์ถ”๊ฐ€ ๋‚ด์šฉ

# 1. mod_jk ๋ชจ๋“ˆ ๋กœ๋“œ
LoadModule jk_module modules/mod_jk.so

<IfModule jk_module>
    # 2. ์›Œ์ปค ์„ค์ • ํŒŒ์ผ ์œ„์น˜ ์ง€์ •
    JkWorkersFile "conf/workers.properties"

    # 3. ๋กœ๊ทธ ์„ค์ • (ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…์„ ์œ„ํ•ด ํ•„์ˆ˜)
    JkLogFile "logs/mod_jk.log"
    JkLogLevel info
    JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
    JkRequestLogFormat "%w %V %T"
    
    # 4. URL ๋งคํ•‘ (JkMount)
    # /* : ๋ชจ๋“  ์š”์ฒญ์„ test1 ์›Œ์ปค(Tomcat)๋กœ ์ „๋‹ฌ
    # ํŠน์ • ํ™•์žฅ์ž๋งŒ ๋ณด๋‚ด๋ ค๋ฉด: JkMount *.jsp test1
    JkMount /* test1
</IfModule>

4. ๊ธฐ๋™ ๋ฐ ์—ฐ๋™ ํ…Œ์ŠคํŠธ

์„ค์ •์ด ์™„๋ฃŒ๋˜๋ฉด Apache์™€ Tomcat์„ ์žฌ๊ธฐ๋™ํ•ฉ๋‹ˆ๋‹ค. ์ˆœ์„œ๋Š” Tomcat ๊ตฌ๋™ -> Apache ๊ตฌ๋™ ์ˆœ์„œ๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

์„ค์ • ๊ฒ€์ฆ (Syntax Check)

# Apache ์„ค์ • ๋ฌธ๋ฒ• ๊ฒ€์‚ฌ
/WAS/apache/bin/apachectl -t
# "Syntax OK" ์ถœ๋ ฅ ํ™•์ธ

์„œ๋น„์Šค ์žฌ๊ธฐ๋™

# Tomcat ์žฌ๊ธฐ๋™
/WAS/tomcat8/bin/shutdown.sh
/WAS/tomcat8/bin/startup.sh

# Apache ์žฌ๊ธฐ๋™
/WAS/apache/bin/apachectl restart

์ตœ์ข… ํ™•์ธ

๋ธŒ๋ผ์šฐ์ €์—์„œ Apache ํฌํŠธ(๋ณดํ†ต 80)๋กœ ์ ‘์†ํ–ˆ์„ ๋•Œ, Tomcat์˜ ํŽ˜์ด์ง€๊ฐ€ ๋ณด์ธ๋‹ค๋ฉด ์—ฐ๋™์— ์„ฑ๊ณตํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Apache Tomcat ์—ฐ๋™ ์„ฑ๊ณต ํ™”๋ฉด


Next Step:
์—ฐ๋™์— ์„ฑ๊ณตํ–ˆ๋‹ค๋ฉด ์ •์  ํŒŒ์ผ(์ด๋ฏธ์ง€, CSS, JS)์€ Apache๊ฐ€ ์ฒ˜๋ฆฌํ•˜๊ณ , ๋™์  ํŒŒ์ผ(JSP)๋งŒ Tomcat์ด ์ฒ˜๋ฆฌํ•˜๋„๋ก JkMount์™€ JkUnMount ์„ค์ •์„ ํŠœ๋‹ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•ด ๋ณด์„ธ์š”.

[Tomcat] Linux ํ™˜๊ฒฝ Apache Tomcat 8.x ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ ๊ฐ€์ด๋“œ (Java, Firewall ์„ค์ • ํฌํ•จ)

Apache Tomcat์€ ์ „ ์„ธ๊ณ„์ ์œผ๋กœ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ๋Ÿ‰ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„(WAS)์ž…๋‹ˆ๋‹ค. Java ๊ธฐ๋ฐ˜์˜ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์ด๋ฏ€๋กœ JDK ์„ค์น˜๊ฐ€ ์„ ํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณธ ํฌ์ŠคํŒ…์—์„œ๋Š” Linux(CentOS) ํ™˜๊ฒฝ์—์„œ Java ์„ค์น˜๋ถ€ํ„ฐ Tomcat ๊ตฌ๋™, ๊ทธ๋ฆฌ๊ณ  ๋ฐฉํ™”๋ฒฝ ์„ค์ •๊นŒ์ง€์˜ ์ „์ฒด ๊ณผ์ •์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

[Image of Apache Tomcat architecture]

1. ์‚ฌ์ „ ์ค€๋น„: Java (JDK) ์„ค์น˜ ํ™•์ธ

Tomcat์€ Java๋กœ ์ž‘์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ฏ€๋กœ ์„œ๋ฒ„์— JDK(Java Development Kit)๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ๊ตฌ๋™๋ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœ JRE๋ณด๋‹ค๋Š” ๊ฐœ๋ฐœ ๋ฐ ๋””๋ฒ„๊น… ๋„๊ตฌ๊ฐ€ ํฌํ•จ๋œ JDK ์„ค์น˜๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜ ์—ฌ๋ถ€ ํ™•์ธ

# Java ๋ฒ„์ „ ํ™•์ธ
java -version

# ์„ค์น˜ ๊ฒฝ๋กœ ํ™•์ธ
which java

๋ช…๋ น์–ด ์‹คํ–‰ ์‹œ ๋ฒ„์ „ ์ •๋ณด๊ฐ€ ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด JDK๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

JDK ์„ค์น˜ (yum ์‚ฌ์šฉ ์‹œ)

Oracle JDK๋Š” ๋ผ์ด์„ ์Šค ์ด์Šˆ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ, ์˜คํ”ˆ์†Œ์Šค์ธ OpenJDK ์„ค์น˜๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

# OpenJDK 1.8 ์„ค์น˜ ์˜ˆ์‹œ
yum install -y java-1.8.0-openjdk-devel

# ์„ค์น˜ ํ›„ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ํ™•์ธ (ํ•„์ˆ˜)
# Tomcat์€ JAVA_HOME ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋ฏ€๋กœ ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
echo $JAVA_HOME
Note: JAVA_HOME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด /etc/profile ๋“ฑ์— ๊ฒฝ๋กœ๋ฅผ ๋“ฑ๋กํ•ด์•ผ Tomcat์ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

2. Tomcat ์„ค์น˜ (Download & Install)

ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €(yum)๋กœ ์„ค์น˜ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์‹ค๋ฌด์—์„œ๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ์™€ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์„ ์œ„ํ•ด Binary Core(tar.gz)๋ฅผ ์ง์ ‘ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ์‹์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์šด๋กœ๋“œ ๋ฐ ์••์ถ• ํ•ด์ œ

์ตœ์‹  ๋ฒ„์ „์€ Apache Tomcat ๊ณต์‹ ์‚ฌ์ดํŠธ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

# 1. ์„ค์น˜ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ (wget)
# (๋งํฌ๋Š” ๋ฒ„์ „์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์œผ๋‹ˆ ๊ณต์‹ ์‚ฌ์ดํŠธ ์ฐธ์กฐ)
wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.27/bin/apache-tomcat-8.0.27.tar.gz

# 2. ์••์ถ• ํ•ด์ œ
tar -zxvf apache-tomcat-8.0.27.tar.gz

# 3. ๋””๋ ‰ํ† ๋ฆฌ ์ด๋™ ๋ฐ ์ •๋ฆฌ (๊ด€๋ฆฌ ํŽธ์˜์„ฑ)
# /WAS ๋””๋ ‰ํ† ๋ฆฌ ํ•˜์œ„๋กœ ์ด๋™ํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
mv apache-tomcat-8.0.27 /WAS/tomcat8

3. Tomcat ๊ตฌ๋™ ๋ฐ ๋กœ๊ทธ ํ™•์ธ

Tomcat์˜ ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ๋Š” bin ๋””๋ ‰ํ† ๋ฆฌ์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๊ธฐ๋™

cd /WAS/tomcat8/bin

# ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ
./startup.sh

๊ตฌ๋™ ๋กœ๊ทธ ํ™•์ธ (์ค‘์š”)

startup.sh๋ฅผ ์‹คํ–‰ํ–ˆ๋‹ค๊ณ  ํ•ด์„œ ๋ฌด์กฐ๊ฑด ์„ฑ๊ณตํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ฐ˜๋“œ์‹œ ๋กœ๊ทธ ํŒŒ์ผ(catalina.out)์„ ์—ด์–ด ์—๋Ÿฌ ์—†์ด "Server startup in [xxxx] ms" ๋ฉ”์‹œ์ง€๊ฐ€ ๋œจ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

# ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ ํ™•์ธ
tail -f /WAS/tomcat8/logs/catalina.out

4. ๋ฐฉํ™”๋ฒฝ ์„ค์ • ๋ฐ ์ ‘์† ํ…Œ์ŠคํŠธ

Tomcat์ด ์ •์ƒ ๊ตฌ๋™๋˜์—ˆ๋”๋ผ๋„ ์™ธ๋ถ€์—์„œ ์ ‘์†์ด ์•ˆ ๋œ๋‹ค๋ฉด ๋ฐฉํ™”๋ฒฝ(Firewall) ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. Tomcat์˜ ๊ธฐ๋ณธ ํฌํŠธ๋Š” 8080์ž…๋‹ˆ๋‹ค.

ํฌํŠธ ๋ฆฌ์Šจ ํ™•์ธ

# 8080 ํฌํŠธ๊ฐ€ LISTEN ์ƒํƒœ์ธ์ง€ ํ™•์ธ
netstat -anotp | grep 8080

๋ฐฉํ™”๋ฒฝ ์˜คํ”ˆ (CentOS 7 ์ด์ƒ)

# 8080 ํฌํŠธ ์˜๊ตฌ ํ—ˆ์šฉ
firewall-cmd --permanent --zone=public --add-port=8080/tcp

# ๋ฐฉํ™”๋ฒฝ ์„ค์ • ์žฌ๋กœ๋“œ
firewall-cmd --reload

์ตœ์ข… ์ ‘์† ํ™•์ธ

๋ธŒ๋ผ์šฐ์ € ์ฃผ์†Œ์ฐฝ์— http://[์„œ๋ฒ„IP]:8080 ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  • ์„ฑ๊ณต: Apache Tomcat ๊ณ ์–‘์ด ๋กœ๊ณ ๊ฐ€ ๊ทธ๋ ค์ง„ ๊ธฐ๋ณธ ํŽ˜์ด์ง€๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.
  • ์‹คํŒจ: "์‚ฌ์ดํŠธ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Œ"์ด ๋œฌ๋‹ค๋ฉด ๋ฐฉํ™”๋ฒฝ ์„ค์ •์ด๋‚˜ ํด๋ผ์šฐ๋“œ ๋ณด์•ˆ ๊ทธ๋ฃน(Security Group) ์„ค์ •์„ ๋‹ค์‹œ ํ™•์ธํ•˜์„ธ์š”.

Next Step:
์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด, ์šด์˜ ํ™˜๊ฒฝ์— ๋งž์ถฐ /WAS/tomcat8/conf/server.xml ํŒŒ์ผ์—์„œ ํฌํŠธ(Port)๋ฅผ 80์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜, UTF-8 ์ธ์ฝ”๋”ฉ ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜๋Š” ํŠœ๋‹ ์ž‘์—…์„ ์ง„ํ–‰ํ•ด ๋ณด์‹ญ์‹œ์˜ค.