[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 ์ธ์ฝ”๋”ฉ ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜๋Š” ํŠœ๋‹ ์ž‘์—…์„ ์ง„ํ–‰ํ•ด ๋ณด์‹ญ์‹œ์˜ค.

[Apache] Linux ์†Œ์Šค ์ปดํŒŒ์ผ ์„ค์น˜ ๊ฐ€์ด๋“œ (httpd, apr, pcre)

Linux ํ™˜๊ฒฝ์—์„œ yum์ด๋‚˜ apt ๊ฐ™์€ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ๋Œ€์‹ , Apache HTTP Server(httpd)๋ฅผ ์†Œ์Šค ์ฝ”๋“œ๋กœ ์ง์ ‘ ์ปดํŒŒ์ผํ•˜์—ฌ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ๋ฒ„์ „์ด ํ•„์š”ํ•˜๊ฑฐ๋‚˜, ๋ชจ๋“ˆ์„ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•ด์•ผ ํ•  ๋•Œ ํ•„์ˆ˜์ ์ธ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

0. ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— (Why & Prerequsite)

์™œ ์†Œ์Šค ์ปดํŒŒ์ผ์„ ํ•˜๋‚˜์š”?

  • ๋ฒ„์ „ ๊ด€๋ฆฌ: OS ์ €์žฅ์†Œ(Repository)์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ตฌ๋ฒ„์ „์ด ์•„๋‹Œ, ์ตœ์‹  ๋ณด์•ˆ ํŒจ์น˜๊ฐ€ ์ ์šฉ๋œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ตœ์ ํ™”: ๋ถˆํ•„์š”ํ•œ ๋ชจ๋“ˆ์„ ๋นผ๊ฑฐ๋‚˜, ๊ฒฝ๋กœ๋ฅผ /usr/local์ด ์•„๋‹Œ /WAS ๋“ฑ ์›ํ•˜๋Š” ๊ณณ์œผ๋กœ ์ง€์ •ํ•˜์—ฌ ๊ด€๋ฆฌ ํšจ์œจ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•„์ˆ˜ ์ปดํŒŒ์ผ ๋„๊ตฌ ์„ค์น˜

์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ(gcc)์™€ ๋นŒ๋“œ ๋„๊ตฌ(make)๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜ ์ „ ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ํ™˜๊ฒฝ์„ ์ค€๋น„ํ•ด์ฃผ์„ธ์š”.

# CentOS/RHEL ๊ธฐ์ค€
yum install -y gcc gcc-c++ make expat-devel

1. ์†Œ์Šค ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ

๊ฐ ํ”„๋กœ์ ํŠธ์˜ ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ Stable(์•ˆ์ •) ๋ฒ„์ „์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต /usr/local/src ๋‚˜ ์ž„์‹œ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์šด๋กœ๋“œ ๋งํฌ

※ Apache 2.4 ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” APR(Apache Portable Runtime)๊ณผ PCRE(์ •๊ทœํ‘œํ˜„์‹ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)๊ฐ€ ๋‚ด์žฅ๋˜์–ด ์žˆ์ง€ ์•Š์•„ ๋ณ„๋„ ์„ค์น˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.


2. ์˜์กด์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜

Apache ๋ณธ์ฒด๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์ „์— ๊ธฐ์ดˆ๊ฐ€ ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋จผ์ € ๊น”์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ฆฌ ํŽธ์˜๋ฅผ ์œ„ํ•ด ๋ชจ๋“  ๊ฒฝ๋กœ๋Š” /WAS ํ•˜์œ„๋กœ ํ†ต์ผํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

1) APR (Apache Portable Runtime) ์„ค์น˜

OS(Linux, Windows ๋“ฑ)์— ์ƒ๊ด€์—†์ด Apache๊ฐ€ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ํ”Œ๋žซํผ ์ถ”์ƒํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

tar -zxvf apr-1.5.2.tar.gz
cd apr-1.5.2

# --prefix ์˜ต์…˜์œผ๋กœ ์„ค์น˜ ๊ฒฝ๋กœ ์ง€์ •
./configure --prefix=/WAS/apr
make && make install

2) APR-Util ์„ค์น˜

APR์˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ™•์žฅํŒ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋“œ์‹œ ์œ„์—์„œ ์„ค์น˜ํ•œ APR์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

tar -zxvf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4

# --with-apr ์˜ต์…˜ ์ค‘์š”!
./configure --prefix=/WAS/aprutil --with-apr=/WAS/apr
make && make install

3) PCRE (Perl Compatible Regular Expressions) ์„ค์น˜

Apache์˜ URL ์žฌ์ž‘์„ฑ(Rewrite) ๋ชจ๋“ˆ ๋“ฑ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ •๊ทœํ‘œํ˜„์‹ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

tar -zxvf pcre-8.37.tar.gz
cd pcre-8.37

./configure --prefix=/WAS/pcre
make && make install

3. Apache HTTP Server ์„ค์น˜

์ด์ œ ์ฃผ์ธ๊ณต์ธ Apache๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. configure ๋‹จ๊ณ„์—์„œ ์•ž์„œ ์„ค์น˜ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์˜ ๊ฒฝ๋กœ๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.

Configuration ์‹คํ–‰

tar -zxvf httpd-2.4.16.tar.gz
cd httpd-2.4.16

# ํ•œ ์ค„์”ฉ ์˜ต์…˜์„ ํ™•์ธํ•˜๋ฉฐ ์ž…๋ ฅํ•˜์„ธ์š”.
./configure \
--prefix=/WAS/apache \
--enable-mods-shared=all \
--enable-so \
--enable-rewrite \
--enable-auth-digest \
--with-apr=/WAS/apr \
--with-apr-util=/WAS/aprutil \
--with-pcre=/WAS/pcre

์ฃผ์š” ์˜ต์…˜ ์„ค๋ช…

  • --enable-mods-shared=all: ๋ชจ๋“ˆ์„ ๋™์ (Dynamic)์œผ๋กœ ์ปดํŒŒ์ผํ•˜์—ฌ, ์ถ”ํ›„ httpd.conf์—์„œ Load/Unload๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  • --enable-rewrite: URL ์ฃผ์†Œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” Rewrite ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. (์‹ค๋ฌด ํ•„์ˆ˜)

์ปดํŒŒ์ผ ๋ฐ ์„ค์น˜

# ์—๋Ÿฌ ์—†์ด ์™„๋ฃŒ๋˜๋ฉด ์‹คํ–‰
make && make install

4. ๊ธฐ๋™ ๋ฐ ๊ฒ€์ฆ (Verification)

์„ค์น˜๊ฐ€ ๋๋‚ฌ๋‹ค๊ณ  ๋ฐ”๋กœ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์—ด๋ฆฌ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๋ฅผ ๋„์šฐ๊ณ  ํฌํŠธ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

# Apache ๊ธฐ๋™ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰
/WAS/apache/bin/apachectl start

# ํ”„๋กœ์„ธ์Šค ํ™•์ธ (httpd ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ณด์—ฌ์•ผ ํ•จ)
ps -ef | grep httpd

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

์›น ์„œ๋ฒ„์˜ ๊ธฐ๋ณธ ํฌํŠธ์ธ 80๋ฒˆ์ด ์—ด๋ ค์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

netstat -anotp | grep :80

3) ๋ฐฉํ™”๋ฒฝ ์„ค์ • (์ค‘์š”!)

ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋–ด๋Š”๋ฐ ๋ธŒ๋ผ์šฐ์ € ์ ‘์†์ด ์•ˆ ๋œ๋‹ค๋ฉด 99%๋Š” ๋ฐฉํ™”๋ฒฝ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ๋ฐฉํ™”๋ฒฝ์„ ์ž ์‹œ ๋„๊ฑฐ๋‚˜ 80ํฌํŠธ๋ฅผ ์—ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

# CentOS 7 (firewalld) ํฌํŠธ ์˜คํ”ˆ ์˜ˆ์‹œ
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --reload

4) ์ตœ์ข… ์ ‘์† ํ…Œ์ŠคํŠธ

PC ๋ธŒ๋ผ์šฐ์ € ์ฃผ์†Œ์ฐฝ์— http://[์„œ๋ฒ„IP]๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ํ™”๋ฉด์— "It works!"๊ฐ€ ๋ณด์ธ๋‹ค๋ฉด ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค.


Next Step:
์ด์ œ /WAS/apache/conf/httpd.conf ํŒŒ์ผ์„ ์—ด์–ด ServerName ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ , DocumentRoot(์›น ๋ฌธ์„œ ์œ„์น˜)๋ฅผ ์‹ค์ œ ์šด์˜ ๊ฒฝ๋กœ๋กœ ๋ณ€๊ฒฝํ•ด ๋ณด์„ธ์š”.

[Linux] FTP CLI ๋ช…๋ น์–ด ์™„๋ฒฝ ๊ฐ€์ด๋“œ ๋ฐ ์ƒํƒœ ์ฝ”๋“œ(Response Code) ์ •๋ฆฌ

๋ฆฌ๋ˆ…์Šค ์‰˜ ํ™˜๊ฒฝ์—์„œ FTP ์„œ๋ฒ„์— ์ ‘์†ํ•˜์—ฌ ํŒŒ์ผ์„ ์—…๋กœ๋“œ/๋‹ค์šด๋กœ๋“œํ•˜๋Š” ํ•„์ˆ˜ ๋ช…๋ น์–ด์™€ ์ฃผ์š” ์˜ต์…˜์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ์‹œ ์œ ์šฉํ•œ FTP ์‘๋‹ต ์ฝ”๋“œ(Response Code)์˜ ์˜๋ฏธ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

[Image of FTP client server data transfer diagram]

1. ์„œ๋ฒ„ ์ ‘์† ๋ฐ ๋กœ๊ทธ์ธ (Connection)

FTP ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์›๊ฒฉ ์„œ๋ฒ„์— ์ ‘์†ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. open ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ ์‹œ ์ธ์ž๋กœ IP๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

[test@zeroTest]$ ftp 210.xxx.xxx.xxx
Connected to 210.xxx.xxx.xxx.
220 web17 FTP server (Version 5.60) ready.
Name (210.xxx.xxx.xxx:test): [์•„์ด๋”” ์ž…๋ ฅ]
331 Password required for user.
Password: [ํŒจ์Šค์›Œ๋“œ ์ž…๋ ฅ]
230 User test logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

2. ๋””๋ ‰ํ† ๋ฆฌ ํƒ์ƒ‰ (Navigation)

FTP๋Š” ์›๊ฒฉ(Remote) ์„œ๋ฒ„์™€ ๋กœ์ปฌ(Local) ํด๋ผ์ด์–ธํŠธ์˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋™์‹œ์— ์ œ์–ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋กœ์ปฌ ๋ช…๋ น์–ด ์•ž์—๋Š” ์ฃผ๋กœ l(local)์ด ๋ถ™์Šต๋‹ˆ๋‹ค.

์›๊ฒฉ ์„œ๋ฒ„ (Remote) ์ œ์–ด

  • pwd : ์›๊ฒฉ ์„œ๋ฒ„์˜ ํ˜„์žฌ ๊ฒฝ๋กœ ํ™•์ธ
  • ls (๋˜๋Š” dir) : ์›๊ฒฉ ์„œ๋ฒ„์˜ ํŒŒ์ผ ๋ชฉ๋ก ์ถœ๋ ฅ
  • cd [path] : ์›๊ฒฉ ์„œ๋ฒ„์˜ ๋””๋ ‰ํ† ๋ฆฌ ์ด๋™
  • cdup : ์›๊ฒฉ ์„œ๋ฒ„์—์„œ ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™

๋กœ์ปฌ ํด๋ผ์ด์–ธํŠธ (Local) ์ œ์–ด

  • !pwd : ๋กœ์ปฌ ํด๋ผ์ด์–ธํŠธ์˜ ํ˜„์žฌ ๊ฒฝ๋กœ ํ™•์ธ
  • lcd [path] : ๋กœ์ปฌ ํด๋ผ์ด์–ธํŠธ์˜ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ๋ณ€๊ฒฝ (๋‹ค์šด๋กœ๋“œ/์—…๋กœ๋“œ ์œ„์น˜ ๋ณ€๊ฒฝ ์‹œ ํ•„์ˆ˜)
# ๋กœ์ปฌ ๋‹ค์šด๋กœ๋“œ ๊ฒฝ๋กœ๋ฅผ /bin์œผ๋กœ ๋ณ€๊ฒฝ ์˜ˆ์‹œ
ftp> lcd /bin
Local directory now /bin

3. ํŒŒ์ผ ์ „์†ก ์„ค์ • (Transfer Settings)

ํŒŒ์ผ ์ „์†ก ์ „, ์ „์†ก ๋ชจ๋“œ์™€ ์‹œ๊ฐ์  ํ”ผ๋“œ๋ฐฑ ์˜ต์…˜์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ „์†ก ๋ชจ๋“œ (Transfer Mode)

๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ(์ด๋ฏธ์ง€, ์‹คํ–‰ํŒŒ์ผ, ์••์ถ•ํŒŒ์ผ ๋“ฑ) ์ „์†ก ์‹œ ๋ฐ˜๋“œ์‹œ binary ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํŒŒ์ผ ๊นจ์ง์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ascii (๋˜๋Š” as) : ํ…์ŠคํŠธ ํŒŒ์ผ ์ „์†ก ๋ชจ๋“œ
  • binary (๋˜๋Š” bi) : ๋ฐ”์ด๋„ˆ๋ฆฌ ์ „์†ก ๋ชจ๋“œ (๊ถŒ์žฅ)

ํŽธ์˜ ์˜ต์…˜

  • hash : ํŒŒ์ผ ์ „์†ก ์ง„ํ–‰ ์ƒํ™ฉ์„ #(Hash Mark)๋กœ ํ‘œ์‹œ (๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ ์ „์†ก ์‹œ ์œ ์šฉ)
  • prompt : ๋‹ค์ค‘ ํŒŒ์ผ ์ „์†ก(mget/mput) ์‹œ ํŒŒ์ผ๋งˆ๋‹ค ํ™•์ธํ•˜๋Š” ๊ณผ์ •์„ On/Off
ftp> binary
200 Type set to I.
ftp> hash
Hash mark printing on (1024 bytes/hash mark).

4. ํŒŒ์ผ ์—…๋กœ๋“œ ๋ฐ ๋‹ค์šด๋กœ๋“œ

๋‹จ์ผ ํŒŒ์ผ ์ฒ˜๋ฆฌ์™€ ๋‹ค์ค‘ ํŒŒ์ผ(Wildcard * ์‚ฌ์šฉ) ์ฒ˜๋ฆฌ ๋ช…๋ น์–ด๊ฐ€ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.

๋‹ค์šด๋กœ๋“œ (Server -> Local)

  • get [filename] : ๋‹จ์ผ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ
  • mget [pattern] : ๋‹ค์ค‘ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ (์˜ˆ: mget *.pdf)
ftp> get thinkinjava.pdf
local: R389.PDF remote: R389.PDF
200 PORT command successful.
150 Opening BINARY mode data connection for R389.PDF (44028 bytes).
#######################
226 Transfer complete.

์—…๋กœ๋“œ (Local -> Server)

  • put [filename] : ๋‹จ์ผ ํŒŒ์ผ ์—…๋กœ๋“œ
  • mput [pattern] : ๋‹ค์ค‘ ํŒŒ์ผ ์—…๋กœ๋“œ (์˜ˆ: mput *.html)

5. ๊ธฐํƒ€ ๊ด€๋ฆฌ ๋ช…๋ น์–ด

  • delete [filename] / mdelete [pattern] : ์›๊ฒฉ ํŒŒ์ผ ์‚ญ์ œ
  • mkdir [dirname] / rmdir [dirname] : ์›๊ฒฉ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ ๋ฐ ์‚ญ์ œ
  • chmod [mode] [file] : ์›๊ฒฉ ํŒŒ์ผ ๊ถŒํ•œ ๋ณ€๊ฒฝ (์˜ˆ: chmod 755 run.sh)
  • rename [old] [new] : ํŒŒ์ผ ์ด๋ฆ„ ๋ณ€๊ฒฝ
  • size [filename] : ํŒŒ์ผ ํฌ๊ธฐ(Byte) ํ™•์ธ
  • bye, quit, exit : ์ ‘์† ์ข…๋ฃŒ

6. FTP ์‘๋‹ต ์ฝ”๋“œ (Response Codes)

์„œ๋ฒ„๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” 3์ž๋ฆฌ ์ˆซ์ž๋ฅผ ํ†ตํ•ด ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Code Description (์˜๋ฏธ)
150 ํŒŒ์ผ ์ƒํƒœ ์ •์ƒ. ๋ฐ์ดํ„ฐ ์—ฐ๊ฒฐ์„ ์—ฝ๋‹ˆ๋‹ค. (์ „์†ก ์‹œ์ž‘)
200 ๋ช…๋ น์–ด ์„ฑ๊ณต (OK)
220 ์„œ๋น„์Šค ์ค€๋น„ ์™„๋ฃŒ (์ ‘์† ์ดˆ๊ธฐ ๋ฉ”์‹œ์ง€)
226 ๋ฐ์ดํ„ฐ ์—ฐ๊ฒฐ ๋‹ซํž˜. ์š”์ฒญ ์ž‘์—… ์„ฑ๊ณต (์ „์†ก ์™„๋ฃŒ)
230 ์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ ์„ฑ๊ณต
331 ์‚ฌ์šฉ์ž ์ด๋ฆ„ ํ™•์ธ๋จ. ํŒจ์Šค์›Œ๋“œ ํ•„์š”
421 ์„œ๋น„์Šค ์‚ฌ์šฉ ๋ถˆ๊ฐ€. ์—ฐ๊ฒฐ ์ข…๋ฃŒ
425 ๋ฐ์ดํ„ฐ ์—ฐ๊ฒฐ์„ ์—ด ์ˆ˜ ์—†์Œ (๋ฐฉํ™”๋ฒฝ, Passive ๋ชจ๋“œ ์ด์Šˆ ๋“ฑ)
530 ๋กœ๊ทธ์ธ ์‹คํŒจ (ID/PW ์˜ค๋ฅ˜)
550 ์š”์ฒญ ์ž‘์—… ์‹คํŒจ (ํŒŒ์ผ ์—†์Œ, ๊ถŒํ•œ ๋ถ€์กฑ ๋“ฑ)

Next Step:
FTP๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์ง€ ์•Š์•„ ๋ณด์•ˆ์— ์ทจ์•ฝํ•ฉ๋‹ˆ๋‹ค. OpenSSH์— ํฌํ•จ๋œ sftp ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•”ํ˜ธํ™”๋œ ํŒŒ์ผ ์ „์†ก ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฒ€ํ† ํ•ด๋ณด์‹ญ์‹œ์˜ค.

[WebSphere] JSESSIONID ์ถฉ๋Œ ํ•ด๊ฒฐ: ๋™์ผ ๋„๋ฉ”์ธ ์„ธ์…˜ ๋ถ„๋ฆฌ ์ „๋žต (Cookie Name ๋ณ€๊ฒฝ)

๋™์ผํ•œ ๋„๋ฉ”์ธ(์˜ˆ: www.test.com) ์•„๋ž˜์—์„œ ์ปจํ…์ŠคํŠธ ๋ฃจํŠธ(Context Root)๋งŒ ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์šด์˜ํ•  ๋•Œ, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„ธ์…˜ ์ฟ ํ‚ค(JSESSIONID)๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ๋ชปํ•ด ์„ธ์…˜์ด ๋Š๊ธฐ๊ฑฐ๋‚˜ ๋ฎ์–ด์จ์ง€๋Š” ํ˜„์ƒ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

1. ๋ฌธ์ œ ์ƒํ™ฉ ๋ฐ ์›์ธ (Context)

WAS๋Š” ํด๋ผ์ด์–ธํŠธ ์‹๋ณ„์„ ์œ„ํ•ด JSESSIONID๋ผ๋Š” ์ด๋ฆ„์˜ ์ฟ ํ‚ค๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ตฌ์„ฑ์—์„œ๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  • ์„œ๋น„์Šค A: http://domain.com/app1 (Server1)
  • ์„œ๋น„์Šค B: http://domain.com/app2 (Server2)

๋ธŒ๋ผ์šฐ์ €๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋„๋ฉ”์ธ ๋‹จ์œ„๋กœ ์ฟ ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ '์„œ๋น„์Šค A'๋ฅผ ์ด์šฉํ•˜๋‹ค๊ฐ€ '์„œ๋น„์Šค B'๋กœ ์ด๋™ํ•˜๋ฉด, ๋ธŒ๋ผ์šฐ์ €๋Š” ๊ธฐ์กด '์„œ๋น„์Šค A'์˜ JSESSIONID๋ฅผ '์„œ๋น„์Šค B'์˜ ์ƒˆ๋กœ์šด JSESSIONID๋กœ ๋ฎ์–ด์”Œ์›๋‹ˆ๋‹ค(Overwrite). ๋‹ค์‹œ '์„œ๋น„์Šค A'๋กœ ๋Œ์•„๊ฐ€๋ฉด ์„ธ์…˜ ID๊ฐ€ ๋‹ฌ๋ผ์กŒ์œผ๋ฏ€๋กœ ๋กœ๊ทธ์ธ์ด ํ’€๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.


2. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• 1: ์„œ๋ฒ„ ๋ ˆ๋ฒจ ์„ค์ • (Server Level)

๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ๊ฐ ์„œ๋ฒ„(์ธ์Šคํ„ด์Šค)๋งˆ๋‹ค ์ฟ ํ‚ค ์ด๋ฆ„์„ ๋‹ค๋ฅด๊ฒŒ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์„ค์ • ๊ฒฝ๋กœ

์„œ๋ฒ„(Servers) > ์„œ๋ฒ„ ์œ ํ˜•(Server Types) > WebSphere Application Servers > [์„œ๋ฒ„๋ช…] > ์„ธ์…˜ ๊ด€๋ฆฌ(Session management) > ์ฟ ํ‚ค ์‚ฌ์šฉ ๊ฐ€๋Šฅ(Enable cookies) ๋งํฌ ํด๋ฆญ

์„ค์ • ๋ณ€๊ฒฝ

  • ์ฟ ํ‚ค ์ด๋ฆ„ (Cookie name): ๊ธฐ๋ณธ๊ฐ’ JSESSIONID๋ฅผ ์‹๋ณ„ ๊ฐ€๋Šฅํ•œ ์ด๋ฆ„์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
    • Server1: JSESSIONID_SVR1
    • Server2: JSESSIONID_SVR2

Pros/Cons: ์„ค์ •์ด ๊ฐ„ํŽธํ•˜์ง€๋งŒ, ํ•˜๋‚˜์˜ ์„œ๋ฒ„ ์•ˆ์— ์—ฌ๋Ÿฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์กด์žฌํ•  ๊ฒฝ์šฐ ๊ทธ ์•ˆ์—์„œ๋Š” ์—ฌ์ „ํžˆ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


3. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• 2: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ๋ฒจ ์„ค์ • (App Level)

๋ณด๋‹ค ์„ธ๋ฐ€ํ•˜๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(WAR/EAR) ๋‹จ์œ„๋กœ ์„ธ์…˜์„ ๊ฒฉ๋ฆฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ถŒ์žฅ๋˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์„ค์ • ๊ฒฝ๋กœ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(Applications) > ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(Enterprise Applications) > [์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ช…] > ์„ธ์…˜ ๊ด€๋ฆฌ(Session management) > ์ฟ ํ‚ค ์‚ฌ์šฉ ๊ฐ€๋Šฅ(Enable cookies) ๋งํฌ ํด๋ฆญ

์„ค์ • ๋ณ€๊ฒฝ

  1. ์„ธ์…˜ ๊ด€๋ฆฌ ๋Œ€์ฒด (Override session management): ๋ฐ˜๋“œ์‹œ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค. (์ƒ์œ„ ์„œ๋ฒ„ ์„ค์ •์„ ๋ฌด์‹œํ•˜๊ณ  ์ด ์„ค์ •์„ ๋”ฐ๋ฅด๊ฒ ๋‹ค๋Š” ์˜๋ฏธ)
  2. ์ฟ ํ‚ค ์ด๋ฆ„ (Cookie name): ํ•ด๋‹น ์•ฑ ์ „์šฉ ์ฟ ํ‚ค ์ด๋ฆ„ ์„ค์ • (์˜ˆ: JSESSIONID_APP1)
  3. ์ฟ ํ‚ค ๊ฒฝ๋กœ (Cookie path): ํ•„์š”์‹œ /app1 ์ฒ˜๋Ÿผ ์ปจํ…์ŠคํŠธ ๋ฃจํŠธ๋กœ ํ•œ์ • ์ง€์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

4. ํ•„์ˆ˜ ํ›„์† ์กฐ์น˜: ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ฐฑ์‹  (Plugin Propagate)

WAS ์„ค์ •๋งŒ ๋ฐ”๊พธ๊ณ  ๋๋‚ด๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์•ž๋‹จ์˜ ์›น ์„œ๋ฒ„(IHS/Apache)๊ฐ€ ๋ณ€๊ฒฝ๋œ ์ฟ ํ‚ค ์ด๋ฆ„์„ ์ธ์‹ํ•˜์—ฌ ์„ธ์…˜ ์–ดํ”ผ๋‹ˆํ‹ฐ(Session Affinity, ์Šคํ‹ฐํ‚ค ์„ธ์…˜)๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก plugin-cfg.xml์„ ๊ฐฑ์‹ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ์ ˆ์ฐจ

  1. WAS ๊ด€๋ฆฌ ์ฝ˜์†”์—์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ €์žฅ.
  2. Environment > Update global Web server plug-in configuration (๋˜๋Š” ์›น ์„œ๋ฒ„ ๋ฉ”๋‰ด์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ƒ์„ฑ/์ „ํŒŒ).
  3. ์›น ์„œ๋ฒ„(IHS) ์žฌ๊ธฐ๋™ (Graceful Restart).

ํ™•์ธ (plugin-cfg.xml)

์ƒ์„ฑ๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ ํŒŒ์ผ์„ ์—ด์–ด AffinityCookie ์†์„ฑ์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

<UriGroup Name="default_host_Cluster_URIs">
    <!-- AffinityCookie ๊ฐ’์ด ๋ณ€๊ฒฝ๋œ ์ด๋ฆ„๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•จ -->
    <Uri AffinityCookie="JSESSIONID_APP1" AffinityURLIdentifier="jsessionid" Name="/*"/>
</UriGroup>

5. ๊ฒ€์ฆ (Verification)

์„ค์ •์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ ์šฉ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

  1. ๋ธŒ๋ผ์šฐ์ €์˜ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ (F12)๋ฅผ ์—ฝ๋‹ˆ๋‹ค.
  2. Application ํƒญ > Cookies ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. ๊ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ‘์†ํ–ˆ์„ ๋•Œ, JSESSIONID๊ฐ€ ์•„๋‹Œ JSESSIONID_APP1, JSESSIONID_APP2 ๋“ฑ์œผ๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ์ด๋ฆ„์˜ ์ฟ ํ‚ค๊ฐ€ ์ƒ์„ฑ๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
์ฃผ์˜ (Warning):
์„ธ์…˜ ์ฟ ํ‚ค ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๋ฉด ๊ธฐ์กด์— ๋กœ๊ทธ์ธ๋˜์–ด ์žˆ๋˜ ์‚ฌ์šฉ์ž๋“ค์˜ ์„ธ์…˜์€ ๋ชจ๋‘ ๋ฌดํšจํ™”๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ์ž‘์—…์€ ์„œ๋น„์Šค ์ ๊ฒ€ ์‹œ๊ฐ„์ด๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ์ ์€ ์‹œ๊ฐ„๋Œ€์— ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

[WebSphere] WAS v8.5 Command Line ์„ค์น˜ ๊ฐ€์ด๋“œ (Installation Manager / imcl)

WebSphere Application Server v8.0 ๋ถ€ํ„ฐ๋Š” Installation Manager(IM)๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์„ค์น˜๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. GUI ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์„œ๋ฒ„์—์„œ imcl ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ IM, WAS ND, JDK, Fix Pack์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์„ค์น˜ํ•˜๋Š” ์ ˆ์ฐจ๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

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

์„ค์น˜๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ ์ œํ’ˆ์˜ ์„ค์น˜ ํŒŒ์ผ(Repository)์ด ์„œ๋ฒ„์— ์ค€๋น„๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Installation Manager: ์„ค์น˜ ์—์ด์ „ํŠธ
  • WAS ND v8.5: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ ๋ณธ์ฒด
  • IBM SDK Java 7: JDK 1.7 (WAS 8.5 ๊ธฐ๋ณธ์€ JDK 1.6)
  • Fix Pack: ์ตœ์‹  ํŒจ์น˜ ํŒŒ์ผ

2. Installation Manager ์„ค์น˜

WAS๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•œ ์—”์ง„์ธ Installation Manager๋ฅผ ๋จผ์ € ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜ ๋ช…๋ น์–ด

  • ์„ค์น˜ ๊ฒฝ๋กœ: C:\IBM\InstallationManager\eclipse
  • Repository ๊ฒฝ๋กœ: D:\WASV8.5\agent.installer...\repository.config
:: Installation Manager ์„ค์น˜
C:\IBM\InstallationManager_Setup\imcl.exe install com.ibm.cic.agent ^
 -repositories "D:\WASV8.5\agent.installer.win32.win32.x86_1.6.0.20120831_1216\repository.config" ^
 -installationDirectory "C:\IBM\InstallationManager\eclipse" ^
 -acceptLicense ^
 -showProgress -sP

3. WebSphere Application Server (WAS) ์„ค์น˜

Step 1: Package ID ํ™•์ธ

์„ค์น˜ํ•  ์ œํ’ˆ์˜ ์ •ํ™•ํ•œ ID๋ฅผ ํŒŒ์•…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. listAvailablePackages ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

:: ํŒจํ‚ค์ง€ ID ์กฐํšŒ
cd C:\IBM\InstallationManager\eclipse\tools
imcl.exe listAvailablePackages -repositories "D:\WASV8.5\was\was_img" -features -long

:: ์ถœ๋ ฅ ์˜ˆ์‹œ: com.ibm.websphere.ND.v85_8.5.0.20120501_1108

Step 2: WAS ND ์„ค์น˜ ์‹คํ–‰

  • ์„ค์น˜ ๊ฒฝ๋กœ: C:\IBM\WAS_85
  • ๊ณต์œ  ๋ฆฌ์†Œ์Šค ๊ฒฝ๋กœ: C:\IBM\IMShared
:: WAS ND ์„ค์น˜
imcl.exe install com.ibm.websphere.ND.v85_8.5.0.20120501_1108 ^
 -repositories "D:\WASV8.5\was\was_img" ^
 -installationDirectory "C:\IBM\WAS_85" ^
 -sharedResourcesDirectory "C:\IBM\IMShared" ^
 -acceptLicense ^
 -properties cic.selector.nl=ko ^
 -showProgress -sP

4. JDK 7 ์„ค์น˜ (Optional)

WAS 8.5๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ JDK 6์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, JDK 7์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ณ„๋„ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Step 1: Package ID ํ™•์ธ

:: JDK ํŒจํ‚ค์ง€ ID ์กฐํšŒ
imcl.exe listAvailablePackages -repositories "D:\WASV8.5\jdk7\jdk7" -features -long

:: ์ถœ๋ ฅ ์˜ˆ์‹œ: com.ibm.websphere.IBMJAVA.v70_7.0.1000.20120424_1539

Step 2: JDK 7 ์„ค์น˜ ์‹คํ–‰

์ด๋ฏธ ์„ค์น˜๋œ WAS ๊ฒฝ๋กœ(C:\IBM\WAS_85)์— ์ถ”๊ฐ€ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

:: JDK 7 ์ถ”๊ฐ€ ์„ค์น˜
imcl.exe install com.ibm.websphere.IBMJAVA.v70_7.0.1000.20120424_1539 ^
 -repositories "D:\WASV8.5\jdk7\jdk7" ^
 -installationDirectory "C:\IBM\WAS_85" ^
 -acceptLicense ^
 -showProgress -sP

5. Fix Pack ์—…๋ฐ์ดํŠธ

์„ค์น˜๋œ WAS ๋ฒ„์ „์„ ์ตœ์‹  Fix Pack์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

Step 1: Package ID ํ™•์ธ

:: Fix Pack ID ์กฐํšŒ
imcl.exe listAvailablePackages -repositories "D:\WASV8.5\fix\was" -features -long

:: ์ถœ๋ ฅ ์˜ˆ์‹œ: com.ibm.websphere.ND.v85_8.5.2.20130327_1831

Step 2: ์—…๋ฐ์ดํŠธ ์‹คํ–‰

:: Fix Pack ์ ์šฉ
imcl.exe install com.ibm.websphere.ND.v85_8.5.2.20130327_1831 ^
 -repositories "D:\WASV8.5\fix\was" ^
 -installationDirectory "C:\IBM\WAS_85" ^
 -acceptLicense ^
 -showProgress -sP

6. ์„ค์น˜ ๊ฒ€์ฆ (Verification)

๋ชจ๋“  ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด versionInfo ๋ช…๋ น์–ด๋กœ ์„ค์น˜๋œ ์ œํ’ˆ๊ณผ ๋ฒ„์ „์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

cd C:\IBM\WAS_85\bin
versionInfo.bat

Next Step:
์„ค์น˜๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด manageprofiles ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœํŒŒ์ผ(Dmgr, AppSrv)์„ ์ƒ์„ฑํ•˜๊ณ  startNode ๋“ฑ์œผ๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ธฐ๋™ํ•˜์‹ญ์‹œ์˜ค.

[WebSphere] WAS V5/V6 to V7 ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฐ€์ด๋“œ (WASPreUpgrade, WASPostUpgrade)

๊ธฐ์กด WebSphere Application Server(V5.1.x, V6.x) ํ™˜๊ฒฝ์˜ ๊ตฌ์„ฑ์„ ์‹ ๊ทœ ๋ฒ„์ „(V7.x)์œผ๋กœ ์ด๊ด€ํ•˜๋Š” ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ ˆ์ฐจ๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ๋ฐฑ์—…(WASPreUpgrade)๊ณผ ๋ณต๊ตฌ(WASPostUpgrade), ๊ทธ๋ฆฌ๊ณ  WebSphere Virtual Enterprise(XD) ํ™˜๊ฒฝ์˜ ์ด๊ด€ ๋ฐฉ๋ฒ•์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

1. ์‚ฌ์ „ ์ค€๋น„ ๋ฐ ํ”„๋กœ์„ธ์Šค ํ™•์ธ

๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋„๊ตฌ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „, ์›๋ณธ ์„œ๋ฒ„์™€ ๋Œ€์ƒ ์„œ๋ฒ„์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Source WAS (V5/V6): ๊ตฌ์„ฑ ์ •๋ณด๋ฅผ ์ฝ์–ด์•ผ ํ•˜๋ฏ€๋กœ ๊ตฌ๋™ ์ƒํƒœ ํ™•์ธ (๋˜๋Š” ๊ตฌ์„ฑ ํŒŒ์ผ ์ ‘๊ทผ ๊ฐ€๋Šฅ ์ƒํƒœ).
  • Target WAS (V7): ํ”„๋กœํŒŒ์ผ์„ ๋ฎ์–ด์“ฐ๊ฑฐ๋‚˜ ์„ค์ •์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ •์ง€(Stop) ์ƒํƒœ์—ฌ์•ผ ํ•จ.

2. ๊ตฌ์„ฑ ๋ฐฑ์—… (WASPreUpgrade)

๊ตฌ ๋ฒ„์ „ WAS์˜ ๊ตฌ์„ฑ ์ •๋ณด๋ฅผ ๋ฐฑ์—… ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ๋ฌธ (Syntax)

WASPreUpgrade [๋ฐฑ์—…์ €์žฅ๊ฒฝ๋กœ] [๊ตฌ๋ฒ„์ „WAS๊ฒฝ๋กœ] [-oldProfile ํ”„๋กœํŒŒ์ผ๋ฉ] [-machineChange true|false]

์‹คํ–‰ ์˜ˆ์‹œ

Windows ํ™˜๊ฒฝ

:: V6.1 Dmgr ํ”„๋กœํŒŒ์ผ์„ C:\mybackup ๊ฒฝ๋กœ๋กœ ๋ฐฑ์—…
C:\IBM\WebSphere70\AppServer\bin\WASPreUpgrade.bat C:\mybackup\v61tov7dmgr01 C:\IBM\WebSphere61\AppServer -oldProfile Dmgr01

Linux/Unix ํ™˜๊ฒฝ

# Dmgr01 ํ”„๋กœํŒŒ์ผ ๋ฐฑ์—… (๋จธ์‹  ๋ณ€๊ฒฝ ์˜ต์…˜ ํฌํ•จ)
cd /app/was/AppServer/bin
./WASPreUpgrade.sh /app/was/backup_config /app/was/WebSphere6/AppServer -oldProfile Dmgr01 -machineChange true

3. ๊ตฌ์„ฑ ๋ณต๊ตฌ (WASPostUpgrade)

๋ฐฑ์—…๋œ ๊ตฌ์„ฑ ์ •๋ณด๋ฅผ ์‹ ๊ทœ ๋ฒ„์ „(V7)์˜ ํ”„๋กœํŒŒ์ผ์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์šฉ๋Ÿ‰ ๊ตฌ์„ฑ์˜ ๊ฒฝ์šฐ ํƒ€์ž„์•„์›ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‚ฌ์ „ ์กฐ์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์ „ ์กฐ์น˜: SOAP Timeout ์„ค์ •

๋ณต๊ตฌ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•ด SOAP ์š”์ฒญ ํƒ€์ž„์•„์›ƒ์„ ๋Š˜๋ ค์ค๋‹ˆ๋‹ค.

  • ํŒŒ์ผ ์œ„์น˜: [Target_Profile_Root]/properties/soap.client.props
  • ์„ค์ • ๋ณ€๊ฒฝ: com.ibm.SOAP.requestTimeout=1800 (๋˜๋Š” 0์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ๋ฌด์ œํ•œ)

๊ตฌ๋ฌธ (Syntax)

WASPostUpgrade [๋ฐฑ์—…์ €์žฅ๊ฒฝ๋กœ] [-profileName ๋Œ€์ƒํ”„๋กœํŒŒ์ผ] [-oldProfile ๊ตฌํ”„๋กœํŒŒ์ผ] [-includeApps true|false] [-keepDmgrEnabled true|false]

์‹คํ–‰ ์˜ˆ์‹œ

Windows ํ™˜๊ฒฝ

C:\IBM\WebSphere70\AppServer\bin\WASPostUpgrade.bat C:\mybackup\v61tov7dmgr01 ^
 -profileName v61tov7dmgr01 ^
 -oldProfile Dmgr01 ^
 -replacePorts TRUE ^
 -keepDmgrEnabled TRUE

Linux/Unix ํ™˜๊ฒฝ

cd /app/was/AppServer/profiles/Dmgr01/bin
./WASPostUpgrade.sh /app/was/backup_config \
 -profileName Dmgr01 \
 -oldProfile Dmgr01 \
 -replacePorts true \
 -backupConfig true \
 -scriptCompatibility true \
 -keepDmgrEnabled true \
 -includeApps true \
 -username wasadmin \
 -password wasadmin

์ฃผ์š” ์˜ต์…˜ ์„ค๋ช…

  • -replacePorts true: ๊ตฌ ๋ฒ„์ „์—์„œ ์‚ฌ์šฉํ•˜๋˜ ํฌํŠธ๋ฅผ ์‹ ๊ทœ ๋ฒ„์ „์—์„œ๋„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. (ํฌํŠธ ์ถฉ๋Œ ์ฃผ์˜)
  • -includeApps true: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(EAR/WAR) ํŒŒ์ผ๋„ ํ•จ๊ป˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค.
  • -keepDmgrEnabled true: Dmgr์ด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ค‘์—๋„ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์œ ์ง€ํ•˜๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

4. WebSphere Virtual Enterprise (XD/VE) ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

WAS ND(Network Deployment) ์œ„์— VE(Virtual Enterprise) ๊ธฐ๋Šฅ์ด ์„ค์น˜๋œ ๊ฒฝ์šฐ, ์ถ”๊ฐ€์ ์ธ ๋‹จ๊ณ„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Step 1: ํ”„๋กœํŒŒ์ผ ๊ธฐ๋Šฅ ๋ณด๊ฐ• (Augment)

์‹ ๊ทœ ์ƒ์„ฑ๋œ V7 ํ”„๋กœํŒŒ์ผ์— VE ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ…œํ”Œ๋ฆฟ์„ ์ถ”๊ฐ€(Augment)ํ•ฉ๋‹ˆ๋‹ค.

# manageprofiles ๋ช…๋ น์–ด๋กœ xd_augment ํ…œํ”Œ๋ฆฟ ์ ์šฉ
./manageprofiles.sh -augment \
 -profileName profile01 \
 -templatePath [WAS_INSTALL_ROOT]/profileTemplates/xd_augment/dmgr

Step 2: VE ๊ตฌ์„ฑ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ (VEUpgrade)

๊ธฐ์กด VE ์…€์˜ ๊ตฌ์„ฑ์„ ์‹ ๊ทœ V7 VE ์…€๋กœ ์ด๊ด€ํ•ฉ๋‹ˆ๋‹ค.

# VEUpgrade ์‹คํ–‰ ์˜ˆ์‹œ
./VEUpgrade.sh \
 -userid wasadmin \
 -password [PASSWORD] \
 -sourcewashome /app/was/WebSphere6/AppServer \
 -sourceprofilepath /app/was/WebSphere6/AppServer/profiles/Dmgr01 \
 -targetprofilepath /app/was/WebSphere/AppServer/profiles/Dmgr01

5. ์™„๋ฃŒ ๋ฐ ํ™•์ธ

  1. ๊ตฌ ๋ฒ„์ „ ์ค‘์ง€: ํฌํŠธ ์ถฉ๋Œ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด Source WAS(V5/V6)๋ฅผ ์™„์ „ํžˆ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.
  2. ์‹ ๊ทœ ๋ฒ„์ „ ๊ธฐ๋™: Target WAS(V7)์˜ Dmgr ๋ฐ NodeAgent๋ฅผ ๊ธฐ๋™ํ•ฉ๋‹ˆ๋‹ค.
    [WAS7_HOME]/profiles/Dmgr01/bin/startManager.sh
  3. ๋กœ๊ทธ ํ™•์ธ: WASPostUpgrade.log ๋ฐ SystemOut.log๋ฅผ ํ™•์ธํ•˜์—ฌ ์—๋Ÿฌ ์—ฌ๋ถ€๋ฅผ ์ ๊ฒ€ํ•ฉ๋‹ˆ๋‹ค.

Next Step:
๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ์™„๋ฃŒ๋œ ํ›„, JDK ๋ฒ„์ „ ์ฐจ์ด(JDK 1.4/5 -> JDK 6)๋กœ ์ธํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ์—†๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•˜์‹ญ์‹œ์˜ค.

[Windows] CMD ํ”„๋กœ์„ธ์Šค ๋ฐ ํฌํŠธ ๊ด€๋ฆฌ ์™„์ „ ์ •๋ณต (tasklist, netstat, taskkill)

Windows CMD ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์กฐํšŒํ•˜๊ณ , ํŠน์ • ํฌํŠธ๋ฅผ ์ ์œ  ์ค‘์ธ ์„œ๋น„์Šค๋ฅผ ์‹๋ณ„ํ•˜๋ฉฐ, ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒํ•˜๋Š” ํ•„์ˆ˜ ๋ช…๋ น์–ด(tasklist, netstat, taskkill) ์‚ฌ์šฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

1. ํ”„๋กœ์„ธ์Šค ์กฐํšŒ (tasklist)

ํ˜„์žฌ ์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค ๋ชฉ๋ก์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ํ•„ํ„ฐ(/fi) ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ํ”„๋กœ์„ธ์Šค๋งŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ์ด๋ฆ„์œผ๋กœ ๊ฒ€์ƒ‰

ํŠน์ • ์‹คํ–‰ ํŒŒ์ผ๋ช…(Image Name)์„ ๊ธฐ์ค€์œผ๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. (์˜ˆ: java.exe)

:: ์‚ฌ์šฉ๋ฒ•: tasklist /fi "imagename eq [ํ”„๋กœ์„ธ์Šค๋ช…]"
C:\Users> tasklist /fi "imagename eq java.exe"

์ด๋ฏธ์ง€ ์ด๋ฆ„                    PID ์„ธ์…˜ ์ด๋ฆ„              ์„ธ์…˜#  ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ
========================= ======== ================ =========== ============
java.exe                      1234 Console                    1    150,000 K

2. ํฌํŠธ ์ ์œ  ํ™•์ธ (netstat)

๋„คํŠธ์›Œํฌ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜์—ฌ ํŠน์ • ํฌํŠธ๋ฅผ ๋ฆฌ์Šจ(LISTEN)ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์˜ PID๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

Listening ํฌํŠธ ๋ฐ PID ํ™•์ธ

-ano ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ์—ฐ๊ฒฐ, ์ˆซ์ž ํ˜•์‹์˜ ์ฃผ์†Œ, ๊ทธ๋ฆฌ๊ณ  ์†Œ์œ  ํ”„๋กœ์„ธ์Šค ID(PID)๋ฅผ ํ•จ๊ป˜ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

:: ์‚ฌ์šฉ๋ฒ•: netstat -ano | find "[๋ฌธ์ž์—ด]"
C:\Users> netstat -ano | find "LISTEN"

  ํ”„๋กœํ† ์ฝœ   ๋กœ์ปฌ ์ฃผ์†Œ              ์™ธ๋ถ€ ์ฃผ์†Œ               ์ƒํƒœ            PID
  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       564
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       892

3. PID๋กœ ํ”„๋กœ์„ธ์Šค ์‹๋ณ„ (Reverse Lookup)

netstat์œผ๋กœ ํ™•์ธํ•œ PID(์˜ˆ: 564)๊ฐ€ ์‹ค์ œ๋กœ ์–ด๋–ค ์„œ๋น„์Šค์ธ์ง€ tasklist๋ฅผ ํ†ตํ•ด ์—ญ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.

PID๋กœ ๊ฒ€์ƒ‰

:: ์‚ฌ์šฉ๋ฒ•: tasklist /fi "pid eq [PID]"
C:\Users> tasklist /fi "pid eq 564"

์ด๋ฏธ์ง€ ์ด๋ฆ„                    PID ์„ธ์…˜ ์ด๋ฆ„              ์„ธ์…˜#  ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ
========================= ======== ================ =========== ============
svchost.exe                    564 Services                   0     11,444 K

4. ํ”„๋กœ์„ธ์Šค ๊ฐ•์ œ ์ข…๋ฃŒ (taskkill)

์‘๋‹ตํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ํŠน์ • ํฌํŠธ๋ฅผ ์ ์œ ํ•˜์—ฌ ์ถฉ๋Œ์„ ์ผ์œผํ‚ค๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

PID๋ฅผ ์ด์šฉํ•œ ๊ฐ•์ œ ์ข…๋ฃŒ

/f ์˜ต์…˜์€ ๊ฐ•์ œ ์ข…๋ฃŒ(Force)๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, /pid ์˜ต์…˜์œผ๋กœ ๋Œ€์ƒ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

:: ์‚ฌ์šฉ๋ฒ•: taskkill /f /pid [PID]
C:\Users> taskkill /f /pid 6985

์„ฑ๊ณต: ํ”„๋กœ์„ธ์Šค(PID 6985)๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ์ด๋ฆ„์„ ์ด์šฉํ•œ ๊ฐ•์ œ ์ข…๋ฃŒ

๋™์ผํ•œ ์ด๋ฆ„์˜ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•œ ๋ฒˆ์— ์ข…๋ฃŒํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

:: ์‚ฌ์šฉ๋ฒ•: taskkill /f /im [์ด๋ฏธ์ง€์ด๋ฆ„]
C:\Users> taskkill /f /im notepad.exe

5. ๋„์›€๋ง ๋ฐ ์˜ต์…˜ ํ™•์ธ

๊ฐ ๋ช…๋ น์–ด์˜ ์ƒ์„ธํ•œ ํ•„ํ„ฐ ์˜ต์…˜์ด๋‚˜ ์‚ฌ์šฉ๋ฒ•์ด ๊ถ๊ธˆํ•  ๊ฒฝ์šฐ /? ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

tasklist /?
taskkill /?

Next Step:
CMD ๋ช…๋ น์–ด๋ณด๋‹ค ๋” ๊ฐ•๋ ฅํ•˜๊ณ  ๊ฐ์ฒด ์ง€ํ–ฅ์ ์ธ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด, PowerShell์˜ Get-Process, Stop-Process, Get-NetTCPConnection Cmdlet ์‚ฌ์šฉ๋ฒ•์„ ํ•™์Šตํ•ด ๋ณด์‹œ๊ธธ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

[WebSphere] WAS v6.1/v7.0 Silent Mode ์„ค์น˜, ์—…๋ฐ์ดํŠธ ๋ฐ ์‚ญ์ œ ๊ฐ€์ด๋“œ

GUI ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์„œ๋ฒ„์—์„œ WebSphere Application Server(WAS)์™€ IBM HTTP Server(IHS)๋ฅผ Response File์„ ์ด์šฉํ•˜์—ฌ Silent Mode(๋ฌด์ธ ๋ชจ๋“œ)๋กœ ์„ค์น˜, ์—…๋ฐ์ดํŠธ, ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

1. ์„ค์น˜ ๋กœ๊ทธ ํ™•์ธ ๋ฐฉ๋ฒ• (Log Verification)

Silent Mode๋Š” ์ง„ํ–‰ ์ƒํ™ฉ์ด ํ™”๋ฉด์— ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ๋ฐ˜๋“œ์‹œ ๋กœ๊ทธ ํŒŒ์ผ์„ `tail` ๋ช…๋ น์–ด๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋กœ๊ทธ ๊ฒฝ๋กœ ๋ฐ ํ™•์ธ

# ์„ค์น˜ ๋กœ๊ทธ ๊ฒฝ๋กœ
# Linux/AIX: [WAS_Install_Dir]/logs/install/log.txt
# ๋˜๋Š” /tmp/log.txt (์ดˆ๊ธฐ ์‹คํŒจ ์‹œ)

tail -f log.txt

์ฃผ์š” ์ƒํƒœ ์ฝ”๋“œ

  • INSTCONFSUCCESS: ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ ์„ฑ๊ณต.
  • INSTCONFPARTIALSUCCESS: ๋ถ€๋ถ„ ์„ฑ๊ณต (๊ฒฝ๊ณ  ํฌํ•จ). ๋กœ๊ทธ ํ™•์ธ ํ•„์š”.
  • INSTCONFFAILED: ์„ค์น˜ ์‹คํŒจ. ์›์ธ ๋ถ„์„ ํ•„์š”.

2. WebSphere Application Server (WAS) ์„ค์น˜

Step 1: ์ด๋ฏธ์ง€ ์••์ถ• ํ•ด์ œ

cd /home/wasadmin/was_img
tar -xvf was_image.tar

Step 2: Response File ํŽธ์ง‘

๊ธฐ๋ณธ ์ œ๊ณต๋˜๋Š” responsefile.nd.txt๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

# ์ฃผ์š” ์˜ต์…˜ ์„ค์ • (res.nd.txt)

# 1. ๋ผ์ด์„ ์Šค ๋™์˜ ๋ฐ OS ์‚ฌ์ „ ๊ฒ€์‚ฌ
-OPT silentInstallLicenseAcceptance="true"
-OPT disableOSPrereqChecking="true"
-OPT allowNonRootSilentInstall="true"  # root๊ฐ€ ์•„๋‹Œ ๊ณ„์ •์œผ๋กœ ์„ค์น˜ ์‹œ

# 2. ์„ค์น˜ ํƒ€์ž… (์‹ ๊ทœ ์„ค์น˜)
-OPT installType="installNew"
-OPT profileType="cell"

# 3. ๋ณด์•ˆ ์„ค์ • (์„ค์น˜ ํ›„ ์„ค์ • ๊ถŒ์žฅ -> false)
-OPT PROF_enableAdminSecurity="false"
# -OPT PROF_adminUserName=
# -OPT PROF_adminPassword=

# 4. ์„ค์น˜ ๊ฒฝ๋กœ ์ง€์ •
-OPT installLocation="/home/wasadmin/IBM/WebSphere/AppServer"

Step 3: ์„ค์น˜ ์‹คํ–‰

./install -silent -options res.nd.txt

Step 4: ์„ค์น˜ ๊ฒ€์ฆ

# ๋ฒ„์ „ ํ™•์ธ
cd [WAS_HOME]/bin
./versionInfo.sh

# ํ”„๋กœ์„ธ์Šค ๊ตฌ๋™ (Dmgr -> Node)
[WAS_HOME]/profiles/Dmgr01/bin/startManager.sh
[WAS_HOME]/profiles/AppSrv01/bin/startNode.sh

3. IBM HTTP Server (IHS) ์„ค์น˜

Step 1: Response File ํŽธ์ง‘

IHS์šฉ Response File์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

# ์ฃผ์š” ์˜ต์…˜ ์„ค์ • (ihs.txt)

-OPT silentInstallLicenseAcceptance="true"
-OPT disableOSPrereqChecking="true"
-OPT installLocation="/home/wasadmin/IBM/HTTPServer"

# ํฌํŠธ ์„ค์ • (Non-root ์„ค์น˜ ์‹œ 1024 ์ด์ƒ ํฌํŠธ ์‚ฌ์šฉ)
-OPT httpPort="80"
-OPT adminPort="8008"

# Admin ๊ณ„์ • ์„ค์ • (IHS Admin Console์šฉ)
-OPT createAdminAuth="true"
-OPT adminAuthUser="admin"
-OPT adminAuthPassword="password"
-OPT adminAuthPasswordConfirm="password"

# ๊ถŒํ•œ ์„ค์ • (User/Group)
-OPT createAdminUserGroup="true"
-OPT setupAdminUser="nobody"
-OPT setupAdminGroup="nobody"

# ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜ ์—ฌ๋ถ€ ๋ฐ WAS ํ˜ธ์ŠคํŠธ
-OPT installPlugin="true"
-OPT washostname="localhost"
-OPT webserverDefinition="webserver01"

Step 2: ์„ค์น˜ ์‹คํ–‰

./install -silent -options ihs.txt

Troubleshooting: admin.conf ๊ถŒํ•œ ๋ฌธ์ œ

์„ค์น˜ ํ›„ admin.conf ํŒŒ์ผ์˜ User/Group ์„ค์ •์ด ๋งคํฌ๋กœ ๋ณ€์ˆ˜(@@...)๋กœ ๋‚จ์•„์žˆ๋‹ค๋ฉด ์ˆ˜๋™์œผ๋กœ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

# [IHS_HOME]/conf/admin.conf ์ˆ˜์ •
User nobody
Group nobody

4. Update Installer ๋ฐ Fix Pack ์ ์šฉ

WAS ํŒจ์น˜(Fix Pack)๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € Update Installer๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Step 1: ์‚ฌ์ „ ์ž‘์—… (ํ”„๋กœ์„ธ์Šค ์ •์ง€)

์—…๋ฐ์ดํŠธ ์ „ ๊ด€๋ จ๋œ ๋ชจ๋“  Java ๋ฐ HTTP ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.

# ํ”„๋กœ์„ธ์Šค ํ™•์ธ ๋ฐ ์ข…๋ฃŒ
ps -ef | grep java
kill -9 [PID]

Step 2: Update Installer ์„ค์น˜

# Response File (update_installer.txt)
-OPT silentInstallLicenseAcceptance="true"
-OPT installLocation="/home/wasadmin/IBM/WebSphere/UpdateInstaller"
./install -silent -options update_installer.txt

Step 3: Fix Pack ์ ์šฉ

Update Installer๊ฐ€ ์„ค์น˜๋œ ๊ฒฝ๋กœ์—์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

# Response File (install_fixpack.txt)
# ํ”ฝ์ŠคํŒฉ ํŒŒ์ผ(.pak)์ด ์œ„์น˜ํ•œ ๋””๋ ‰ํ† ๋ฆฌ
-W maintenance.package="/home/wasadmin/was_img/fixpacks"

# ํŒจ์น˜๋ฅผ ์ ์šฉํ•  ๋Œ€์ƒ ์ œํ’ˆ ๊ฒฝ๋กœ (WAS, IHS, Plugin ์ค‘ ํƒ 1)
-W product.location="/home/wasadmin/IBM/WebSphere/AppServer"
# -W product.location="/home/wasadmin/IBM/HTTPServer"
# Update Installer ์‹คํ–‰
cd [UpdateInstaller_HOME]
./update.sh -silent -options install_fixpack.txt

5. ์ œํ’ˆ ์‚ญ์ œ (Uninstallation)

์„ค์น˜๋œ ์ œํ’ˆ์„ ์ œ๊ฑฐํ•  ๋•Œ๋„ Silent Mode๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰ ๋ช…๋ น์–ด

[WAS_HOME]/uninstall ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

# 1. ๊ธฐ๋ณธ ์‚ญ์ œ (ํ”„๋กœํŒŒ์ผ ์œ ์ง€)
./uninstall -silent

# 2. ํ”„๋กœํŒŒ์ผ ํฌํ•จ ์ „์ฒด ์‚ญ์ œ (์˜ต์…˜ ์ถ”๊ฐ€)
./uninstall -silent -OPT removeProfilesOnUninstall="true"

# 3. ํ”„๋กœํŒŒ์ผ ์œ ์ง€ ๋ช…์‹œ
./uninstall -silent -OPT removeProfilesOnUninstall="false"

์‚ญ์ œ ๋กœ๊ทธ ํ™•์ธ

์‚ญ์ œ ์™„๋ฃŒ ํ›„ [WAS_HOME]/logs/uninstall/log.txt ํŒŒ์ผ์—์„œ INSTCONFSUCCESS ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.