[WebSphere] WAS v9.0 CLI ์„ค์น˜ ์™„๋ฒฝ ๊ฐ€์ด๋“œ: IM, WAS, IHS, Plugin ๋ฐ JDK 8 ๋™์‹œ ์„ค์น˜

CentOS 7 ํ™˜๊ฒฝ์—์„œ GUI ์—†์ด imcl ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ WebSphere v9.0.5.1์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. v9.0๋ถ€ํ„ฐ ๋ณ€๊ฒฝ๋œ ์ •์ฑ…์— ๋”ฐ๋ผ JDK 8์„ ๋ฐ˜๋“œ์‹œ ํ•จ๊ป˜ ์„ค์น˜ํ•ด์•ผ ํ•จ์„ ๊ฐ•์กฐํ•˜๋ฉฐ, WAS, IHS, Plugin ์„ค์น˜ ๋ฐ ํŒจ์น˜ ์ ์šฉ ๋ช…๋ น์–ด๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Test Environment

  • OS: CentOS 7 (3.10.0-957.el7.x86_64)
  • Installer: IBM Installation Manager (IM) 1.8.x ์ด์ƒ
  • Target Version: WebSphere Application Server 9.0.5.1

1. Installation Manager (IM) ์„ค์น˜

IBM ์ œํ’ˆ๊ตฐ์„ ์„ค์น˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋„๊ตฌ์ธ IM์„ ๋จผ์ € ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. -repositories์—๋Š” repository.config ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

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

# ์„ค์น˜ ๊ฒฝ๋กœ๋กœ ์ด๋™
cd /sw/img/im

# IM ์„ค์น˜ ์‹คํ–‰
./imcl install com.ibm.cic.agent \
-repositories "/sw/img/im/repository.config" \
-installationDirectory "/sw/IBM/InstallationManager/eclipse" \
-sharedResourcesDirectory "/sw/IBM/IMShared" \
-acceptLicense \
-showProgress -sP
Tip (ํŒจํ‚ค์ง€ ID ํ™•์ธ):
์„ค์น˜ํ•˜๋ ค๋Š” ์ œํ’ˆ์˜ ์ •ํ™•ํ•œ ID(์˜ˆ: com.ibm.websphere...)๋ฅผ ๋ชจ๋ฅธ๋‹ค๋ฉด ์„ค์น˜ ๋ฏธ๋””์–ด ๋‚ด์˜ Offerings ํด๋”๋ฅผ ํ™•์ธํ•˜๊ฑฐ๋‚˜, ./imcl listAvailablePackages -repositories [๊ฒฝ๋กœ] ๋ช…๋ น์–ด๋กœ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ค‘์š”: WAS v9.0์€ ๊ธฐ๋ณธ JDK๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ com.ibm.websphere.BASE... ํŒจํ‚ค์ง€์™€ com.ibm.java.jdk.v8... ํŒจํ‚ค์ง€๋ฅผ ๋™์‹œ์— ์ง€์ •ํ•˜์—ฌ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜ ๋ช…๋ น์–ด (Base + JDK 8)

์„ค์น˜ ๋„๊ตฌ(tools) ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•˜์—ฌ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

cd /sw/IBM/InstallationManager/eclipse/tools

# WAS ๋ฐ JDK ๋™์‹œ ์„ค์น˜
./imcl install com.ibm.websphere.BASE.v90_9.0.5001.20190828_0616 \
com.ibm.java.jdk.v8_8.0.5041.20190924_1031 \
-repositories "/sw/img/base","/sw/img/sdk" \
-installationDirectory "/sw/was/AppServer9" \
-sharedResourcesDirectory "/sw/IBM/IMShared" \
-acceptLicense \
-properties cic.selector.nl=ko \
-showProgress -sP

Fix Pack ์—…๋ฐ์ดํŠธ (Optional)

์„ค์น˜ ํ›„ ํŠน์ • ํ”ฝ์ŠคํŒฉ(์˜ˆ: 9.0.5.3)์œผ๋กœ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

./imcl install com.ibm.websphere.BASE.v90_9.0.5003.20200226_0941 \
-repositories "/sw/img/fixwas" \
-installationDirectory "/sw/was/AppServer9" \
-acceptLicense -sP

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

์›น ์„œ๋ฒ„์ธ IHS๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ JDK ์„ค์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. user.ihs.httpPort ์†์„ฑ์œผ๋กœ ๊ธฐ๋ณธ ํฌํŠธ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# IHS ๋ฐ JDK ๋™์‹œ ์„ค์น˜
./imcl install com.ibm.websphere.IHS.v90_9.0.5001.20190828_0616 \
com.ibm.java.jdk.v8_8.0.5041.20190924_1031 \
-repositories "/sw/img/ihs","/sw/img/sdk" \
-installationDirectory "/sw/web/IHS9" \
-sharedResourcesDirectory "/sw/IBM/IMShared" \
-acceptLicense \
-properties user.ihs.httpPort="80" \
-showProgress -sP

4. Web Server Plugin (PLG) ์„ค์น˜

WAS์™€ ์›น ์„œ๋ฒ„๋ฅผ ์—ฐ๋™ํ•ด์ฃผ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค.

# Plugin ๋ฐ JDK ๋™์‹œ ์„ค์น˜
./imcl install com.ibm.websphere.PLG.v90_9.0.5001.20190828_0616 \
com.ibm.java.jdk.v8_8.0.5041.20190924_1031 \
-repositories "/sw/img/plg","/sw/img/sdk" \
-installationDirectory "/sw/web/Plugins9" \
-sharedResourcesDirectory "/sw/IBM/IMShared" \
-acceptLicense \
-showProgress -sP

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

๋ชจ๋“  ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์„ค์น˜๋œ ํŒจํ‚ค์ง€ ๋ชฉ๋ก๊ณผ ์ƒ์„ธ ๋ฒ„์ „์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜๋œ ํŒจํ‚ค์ง€ ๋ชฉ๋ก ํ™•์ธ

# IM ๋ช…๋ น์–ด๋กœ ํ™•์ธ
./imcl listInstalledPackages

์ƒ์„ธ ๋ฒ„์ „ ๋ฆฌํฌํŠธ ํ™•์ธ

WAS๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋กœ ์ƒ์„ธ ๋ฆฌํฌํŠธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

# WAS ํ™ˆ์˜ bin ๋””๋ ‰ํ† ๋ฆฌ
/sw/was/AppServer9/bin/versionInfo.sh

Next Step:
์—”์ง„ ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ manageprofiles.sh ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์ œ ์„œ๋น„์Šค๋ฅผ ๊ตฌ๋™ํ•  ํ”„๋กœํŒŒ์ผ(Profile)์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

[Windows 10] Microsoft Edge ๊ธฐ๋ณธ ๊ฒ€์ƒ‰ ์—”์ง„ ๋ณ€๊ฒฝ ๋ฐฉ๋ฒ• (Bing -> Google/Naver)

Windows 10 Edge ๋ธŒ๋ผ์šฐ์ €์˜ ์ฃผ์†Œ ํ‘œ์‹œ์ค„์—์„œ ๊ฒ€์ƒ‰ ์‹œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒ€์ƒ‰ ์—”์ง„(Bing)์„ Google, Naver, Daum ๋“ฑ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์„ค์ • ๋ฉ”๋‰ด ๊นŠ์ˆ™์ด ๋“ค์–ด๊ฐˆ ํ•„์š” ์—†์ด ๋‹จ์ถ• URL๋กœ ํ•œ ๋ฒˆ์— ์ด๋™ํ•˜๋Š” ํŒ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

Test Environment

  • OS: Windows 10
  • Browser: Microsoft Edge (Chromium ๊ธฐ๋ฐ˜ ์ตœ์‹  ๋ฒ„์ „)

Method A: ๋‹จ์ถ• URL๋กœ ํ•œ ๋ฒˆ์— ์ด๋™ (์ถ”์ฒœ)

๋ณต์žกํ•œ ๋ฉ”๋‰ด๋ฅผ ์ฐพ์•„๋“ค์–ด๊ฐˆ ํ•„์š” ์—†์ด, ์ฃผ์†Œ์ฐฝ์— ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์„ค์ • ํ™”๋ฉด์œผ๋กœ ๋ฐ”๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

Tip: ์•„๋ž˜ ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ Edge ์ฃผ์†Œ์ฐฝ์— ๋ถ™์—ฌ๋„ฃ์œผ์„ธ์š”.
edge://settings/search

Method B: ์„ค์ • ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•œ ์ด๋™

๋‹จ์ถ• URL์ด ๊ธฐ์–ต๋‚˜์ง€ ์•Š์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ •์„์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

1. ์„ค์ • ๋ฉ”๋‰ด ์ง„์ž…

  1. Edge ๋ธŒ๋ผ์šฐ์ € ์šฐ์ธก ์ƒ๋‹จ์˜ ์  ์„ธ ๊ฐœ(...) ๋ฒ„ํŠผ ํด๋ฆญ
  2. ์„ค์ •(Settings) ํด๋ฆญ

2. ๊ฐœ์ธ ์ •๋ณด ๋ฐ ์„œ๋น„์Šค ์„ค์ •

  1. ์ขŒ์ธก ๋ฉ”๋‰ด์—์„œ '๊ฐœ์ธ ์ •๋ณด, ๊ฒ€์ƒ‰ ๋ฐ ์„œ๋น„์Šค(Privacy, search, and services)' ์„ ํƒ
  2. ์Šคํฌ๋กค์„ ๋งจ ์•„๋ž˜๋กœ ๋‚ด๋ ค '์ฃผ์†Œ ํ‘œ์‹œ์ค„ ๋ฐ ๊ฒ€์ƒ‰(Address bar and search)' ํด๋ฆญ
Edge Privacy Settings

3. ๊ฒ€์ƒ‰ ์—”์ง„ ๋ณ€๊ฒฝ (Change Engine)

์„ค์ • ํ™”๋ฉด์— ์ง„์ž…ํ–ˆ๋‹ค๋ฉด, ์›ํ•˜๋Š” ๊ฒ€์ƒ‰ ์—”์ง„์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

  • ์ฃผ์†Œ ํ‘œ์‹œ์ค„์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒ€์ƒ‰ ์—”์ง„: ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•˜์—ฌ Google, Naver ๋“ฑ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒˆ ํƒญ์—์„œ์˜ ๊ฒ€์ƒ‰ ์ƒ์ž ๋“ฑ...: '๊ฒ€์ƒ‰ ์ƒ์ž(๊ถŒ์žฅ)' ๋Œ€์‹  '์ฃผ์†Œ ํ‘œ์‹œ์ค„'์„ ์„ ํƒํ•˜๋ฉด ์ƒˆ ํƒญ์—์„œ๋„ ๋ณ€๊ฒฝํ•œ ์—”์ง„์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
Change Search Engine
์ฐธ๊ณ : ๋งŒ์•ฝ ๋ชฉ๋ก์— ์›ํ•˜๋Š” ๊ฒ€์ƒ‰ ์—”์ง„(์˜ˆ: Naver)์ด ์—†๋‹ค๋ฉด, '๊ฒ€์ƒ‰ ์—”์ง„ ๊ด€๋ฆฌ' ๋ฉ”๋‰ด๋กœ ๋“ค์–ด๊ฐ€์„œ ํ•ด๋‹น ์‚ฌ์ดํŠธ(naver.com)๋ฅผ ํ•œ ๋ฒˆ ๋ฐฉ๋ฌธํ•œ ๋’ค ์ˆ˜๋™์œผ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[Linux] ๋ณด์•ˆ ์กฐ์น˜: ํŠน์ • ํ™•์žฅ์ž ํŒŒ์ผ ๊ถŒํ•œ ์ผ๊ด„ ๋ณ€๊ฒฝ (find + chmod ์กฐํ•ฉ)

๋ณด์•ˆ ์ทจ์•ฝ์  ์กฐ์น˜๋ฅผ ์œ„ํ•ด ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ ํ•˜์œ„์˜ ํŒŒ์ผ ๊ถŒํ•œ์„ ์ผ๊ด„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. chmod -R๋กœ ๊ธฐ๋ณธ ๊ถŒํ•œ์„ ์žก๊ณ , find ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด ์„ค์ • ํŒŒ์ผ(xml, properties)์ด๋‚˜ ๋กœ๊ทธ ํŒŒ์ผ์˜ ์‹คํ–‰ ๊ถŒํ•œ์„ ์ œ๊ฑฐํ•˜์—ฌ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค.

0. ๋ฐฐ๊ฒฝ ๋ฐ ์‹œ๋‚˜๋ฆฌ์˜ค (Context)

์ผ๋ฐ˜์ ์œผ๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(WAS) ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ณด์•ˆ ๊ถŒ์žฅ ์„ค์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋””๋ ‰ํ† ๋ฆฌ: 750 (์†Œ์œ ์ž: rwx, ๊ทธ๋ฃน: r-x, ๊ธฐํƒ€: ---) - ์ด๋™(x) ๊ฐ€๋Šฅํ•ด์•ผ ํ•จ
  • ํŒŒ์ผ: 640 (์†Œ์œ ์ž: rw-, ๊ทธ๋ฃน: r--, ๊ธฐํƒ€: ---) - ์‹คํ–‰(x) ๊ถŒํ•œ ์ œ๊ฑฐ

๋‹จ์ˆœํžˆ chmod -R 750์„ ํ•˜๋ฉด ๋ชจ๋“  ํŒŒ์ผ์— ์‹คํ–‰ ๊ถŒํ•œ์ด ๋ถ™์–ด๋ฒ„๋ฆฌ๋ฏ€๋กœ, ํŠน์ • ํ™•์žฅ์ž ํŒŒ์ผ๋“ค์„ ์ฐพ์•„ 640์œผ๋กœ ๋‹ค์‹œ ๋ณ€๊ฒฝํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Test Environment

  • OS: CentOS 7 (3.10.0-957.el7.x86_64)

1. 1๋‹จ๊ณ„: ์†Œ์œ ๊ถŒ ๋ฐ ๊ธฐ๋ณธ ๊ถŒํ•œ ์„ค์ •

๋จผ์ € ๋Œ€์ƒ ๋””๋ ‰ํ† ๋ฆฌ ํ•˜์œ„์˜ ๋ชจ๋“  ํŒŒ์ผ/ํด๋”์˜ ์†Œ์œ ๊ถŒ์„ ๋งž์ถ”๊ณ , ๋””๋ ‰ํ† ๋ฆฌ ๊ธฐ์ค€ ๊ถŒํ•œ(750)์„ ์ผ๊ด„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

# 1. ์†Œ์œ ๊ถŒ ๋ณ€๊ฒฝ (ํ•˜์œ„ ํฌํ•จ)
chown -R wasadm:wasadm ./*

# 2. ๊ธฐ๋ณธ ๊ถŒํ•œ ์„ค์ • (์ผ๋‹จ ๋ชจ๋‘ 750์œผ๋กœ ์„ค์ •)
# ์ฃผ์˜: ์ด ์ƒํƒœ์—์„œ๋Š” ์ผ๋ฐ˜ ํ…์ŠคํŠธ ํŒŒ์ผ๋„ ์‹คํ–‰ ๊ถŒํ•œ(x)์„ ๊ฐ–๊ฒŒ ๋จ
chmod -R 750 ./*

2. 2๋‹จ๊ณ„: ํŠน์ • ํ™•์žฅ์ž ๊ถŒํ•œ ๊ฐ•ํ™” (์‹คํ–‰ ๊ถŒํ•œ ์ œ๊ฑฐ)

find ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์ • ํŒŒ์ผ์ด๋‚˜ ๋กœ๊ทธ ํŒŒ์ผ ๋“ฑ ์‹คํ–‰๋  ํ•„์š”๊ฐ€ ์—†๋Š” ํŒŒ์ผ๋“ค์„ ์ฐพ์•„ ๊ถŒํ•œ์„ 640์œผ๋กœ ๋‚ฎ์ถฅ๋‹ˆ๋‹ค.

๋ช…๋ น์–ด ๊ตฌ๋ฌธ

# ๊ตฌ๋ฌธ: find [๊ฒฝ๋กœ] -name "[ํŒจํ„ด]" -exec chmod [๊ถŒํ•œ] {} \;

# XML ์„ค์ • ํŒŒ์ผ
find . -name "*.xml" -exec chmod 640 {} \;

# ๋กœ๊ทธ ํŒŒ์ผ
find . -name "*.log" -exec chmod 640 {} \;

# ํ”„๋กœํผํ‹ฐ ํŒŒ์ผ
find . -name "*.properties" -exec chmod 640 {} \;

# ์‰˜ ์Šคํฌ๋ฆฝํŠธ ์ œ์™ธํ•œ ๋ชจ๋“  ์ผ๋ฐ˜ ํŒŒ์ผ (๊ณ ๊ธ‰)
# find . -type f ! -name "*.sh" -exec chmod 640 {} \;
์ฃผ์˜ (Quotation):
*.xml๊ณผ ๊ฐ™์ด ์™€์ผ๋“œ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ ๋”ฐ์˜ดํ‘œ(" ")๋กœ ๊ฐ์‹ธ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— xml ํŒŒ์ผ์ด ๋งŽ์„ ๊ฒฝ์šฐ ์‰˜์ด ๋จผ์ € ํ•ด์„ํ•ด๋ฒ„๋ ค "paths must precede expression" ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. Tip: ๋Œ€๋Ÿ‰ ํŒŒ์ผ ์ฒ˜๋ฆฌ ์‹œ ์„ฑ๋Šฅ ์ตœ์ ํ™”

ํŒŒ์ผ์ด ์ˆ˜๋งŒ ๊ฐœ ์ด์ƒ์ผ ๊ฒฝ์šฐ -exec ... \; ๋ฐฉ์‹์€ ํŒŒ์ผ ํ•˜๋‚˜๋งˆ๋‹ค ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋ฏ€๋กœ ๋А๋ฆฝ๋‹ˆ๋‹ค. xargs๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ›จ์”ฌ ๋น ๋ฆ…๋‹ˆ๋‹ค.

# xargs๋ฅผ ์ด์šฉํ•œ ๊ณ ์† ์ฒ˜๋ฆฌ ๋ฐฉ์‹
find . -name "*.log" -print0 | xargs -0 chmod 640

4. ๊ฒ€์ฆ (Verification)

์ž‘์—… ์™„๋ฃŒ ํ›„ ls -l ๋ช…๋ น์–ด๋กœ ๋””๋ ‰ํ† ๋ฆฌ์™€ ํŒŒ์ผ์˜ ๊ถŒํ•œ์ด ์˜๋„ํ•œ ๋Œ€๋กœ ๋ถ„๋ฆฌ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

drwxr-x---  2 wasadm wasadm 4096 ...  logs/       (750, ๋””๋ ‰ํ† ๋ฆฌ)
-rw-r-----  1 wasadm wasadm 1024 ...  server.xml  (640, ํŒŒ์ผ)
-rwxr-x---  1 wasadm wasadm  512 ...  start.sh    (750, ์Šคํฌ๋ฆฝํŠธ)

[WebSphere/IHS] ๋ณด์•ˆ ์ทจ์•ฝ์  ์กฐ์น˜: Server ํ—ค๋” ์ˆจ๊ธฐ๊ธฐ ๋ฐ ๋ฒ„์ „ ์ •๋ณด ๋…ธ์ถœ ๋ฐฉ์ง€ ์ „๋žต

HTTP ์‘๋‹ต ํ—ค๋”์˜ Server ํ•„๋“œ(์˜ˆ: Apache/2.4, WebSphere Application Server/8.5)๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์˜ ์ข…๋ฅ˜์™€ ๋ฒ„์ „์ด ๋…ธ์ถœ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์•ž๋‹จ์˜ IBM HTTP Server(IHS)์™€ ๋’ท๋‹จ์˜ WebSphere(WAS) ์–‘์ชฝ ๋ชจ๋‘์˜ ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

0. ๋ฐฐ๊ฒฝ ๋ฐ ์›์ธ (Context)

์„œ๋ฒ„์˜ ๊ตฌ์ฒด์ ์ธ ๋ฒ„์ „ ์ •๋ณด๊ฐ€ ๋…ธ์ถœ๋˜๋ฉด, ํ•ด์ปค๋Š” ํ•ด๋‹น ๋ฒ„์ „์— ์•Œ๋ ค์ง„ ์ทจ์•ฝ์ (CVE)์„ ์ฐพ์•„ ๋งž์ถคํ˜• ๊ณต๊ฒฉ์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณด์•ˆ ๋ชจ๋ฒ” ์‚ฌ๋ก€(Best Practice)์—์„œ๋Š” ์„œ๋ฒ„ ์ •๋ณด๋ฅผ ์ˆจ๊ธฐ๊ฑฐ๋‚˜ ์ตœ์†Œํ™”ํ•  ๊ฒƒ์„ ๊ถŒ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

Test Environment

  • OS: CentOS 7.2
  • Web Server: IBM HTTP Server (Apache ๊ธฐ๋ฐ˜)
  • WAS: WebSphere Application Server v8.5

1. IBM HTTP Server (Web Server) ์„ค์ •

๊ฐ€์žฅ ์•ž๋‹จ์—์„œ ์š”์ฒญ์„ ๋ฐ›๋Š” ์›น ์„œ๋ฒ„์˜ ์„ค์ •์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. httpd.conf ํŒŒ์ผ์— ์•„๋ž˜ ์ง€์‹œ์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

์„ค์ • ๋‚ด์šฉ (httpd.conf)

# 1. ์„œ๋ฒ„ ์ •๋ณด ์ตœ์†Œํ™” (Apache/x.y.z -> Apache)
ServerTokens Prod

# 2. ์—๋Ÿฌ ํŽ˜์ด์ง€ ํ•˜๋‹จ(Footer)์— ์„œ๋ฒ„ ์ •๋ณด ์ˆจ๊น€
ServerSignature Off

# 3. Server ํ—ค๋” ์ž์ฒด๋ฅผ ์‘๋‹ต์—์„œ ์ œ๊ฑฐ (IHS ์ „์šฉ ๊ธฐ๋Šฅ, ๊ฐ€๋Šฅํ•  ๊ฒฝ์šฐ ๊ถŒ์žฅ)
AddServerHeader Off
Tip: AddServerHeader Off๋Š” ํ‘œ์ค€ Apache์—๋Š” ์—†๊ณ  IBM HTTP Server์—๋งŒ ์กด์žฌํ•˜๋Š” ์ง€์‹œ์–ด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ ์šฉ ํ›„ Syntax Error๊ฐ€ ๋‚œ๋‹ค๋ฉด ServerTokens Prod๊นŒ์ง€๋งŒ ์ ์šฉํ•˜์‹ญ์‹œ์˜ค.

2. WebSphere (WAS) ์„ค์ •

WAS๊ฐ€ ์ง์ ‘ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ต์„ ์ค„ ๋•Œ ๋ถ™๋Š” ํ—ค๋”๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. WAS v8.5.0.2 ์ด์ƒ๋ถ€ํ„ฐ๋Š” ๊ธฐ๋ณธ ๋™์ž‘์ด ๋ณ€๊ฒฝ๋˜์—ˆ์œผ๋‚˜, ๋ช…์‹œ์ ์œผ๋กœ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด HTTP ์ „์†ก ์ฑ„๋„(Transport Channel) ์„ค์ •์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

์„ค์ • ๊ฒฝ๋กœ

์„œ๋ฒ„ > WebSphere Application Server > [์„œ๋ฒ„๋ช…] > ์›น ์ปจํ…Œ์ด๋„ˆ ์„ค์ • > ์›น ์ปจํ…Œ์ด๋„ˆ ์ „์†ก ์ฒด์ธ > WCInboundDefault > HTTP ์ธ๋ฐ”์šด๋“œ ์ฑ„๋„ (HTTP_2) > ์‚ฌ์šฉ์ž ์ •์˜ ํŠน์„ฑ (Custom properties)

์ฃผ์š” ์†์„ฑ (ํƒ 1)

์ƒํ™ฉ์— ๋งž์ถฐ ์•„๋ž˜ ๋‘ ๊ฐ€์ง€ ์†์„ฑ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์—ฌ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์†์„ฑ ์ด๋ฆ„ (Name) ์„ค๋ช… ๋ฐ ๊ถŒ์žฅ ๊ฐ’
RemoveServerHeader ๊ฐ’: true
Server ํ—ค๋” ์ž์ฒด๋ฅผ ์•„์˜ˆ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ๋ณด์•ˆ ์„ค์ •์ž…๋‹ˆ๋‹ค.
ServerHeaderValue ๊ฐ’: (์ž„์˜์˜ ๋ฌธ์ž์—ด)
๊ธฐ๋ณธ๊ฐ’์ธ "WebSphere Application Server..." ๋Œ€์‹  ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ๋ฌธ์ž์—ด(์˜ˆ: "AppServer")๋กœ ์น˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์ฐธ๊ณ  (WebContainer ์†์„ฑ):
์ „์†ก ์ฑ„๋„ ์„ค์ • ์™ธ์—๋„, ์›น ์ปจํ…Œ์ด๋„ˆ > ์‚ฌ์šฉ์ž ์ •์˜ ํŠน์„ฑ์—์„œ com.ibm.ws.webcontainer.disableServerHeader ๊ฐ’์„ true๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. (์ตœ์‹  ๋ฒ„์ „์—์„œ ๊ถŒ์žฅ)

3. ๊ฒ€์ฆ (Verification)

IHS์™€ WAS๋ฅผ ๋ชจ๋‘ ์žฌ๊ธฐ๋™ํ•œ ํ›„, curl ๋ช…๋ น์–ด๋กœ ์‘๋‹ต ํ—ค๋”๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

# ํ—ค๋” ํ™•์ธ
curl -I http://localhost/

# [Before]
HTTP/1.1 200 OK
Server: IBM_HTTP_Server/8.5 ...
...

# [After] 
HTTP/1.1 200 OK
# Server ํ—ค๋”๊ฐ€ ์•„์˜ˆ ์—†๊ฑฐ๋‚˜ "Apache" ๋˜๋Š” ์ง€์ •ํ•œ ๊ฐ’์œผ๋กœ ํ‘œ์‹œ๋จ
...

Next Step:
ํ—ค๋” ์ˆจ๊น€ ์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ๋Š” HTTP ๋ฉ”์†Œ๋“œ(PUT, DELETE, TRACE) ์ฐจ๋‹จ ์„ค์ •์„ ํ†ตํ•ด ๋ถˆํ•„์š”ํ•œ ์š”์ฒญ์„ ๋ง‰๋Š” ์›น ์„œ๋ฒ„ ๊ฐ•ํ™” ์ž‘์—…์„ ์ง„ํ–‰ํ•ด ๋ณด์‹ญ์‹œ์˜ค.

[WebSphere] ๋ณด์•ˆ ์ทจ์•ฝ์  ์กฐ์น˜: X-Powered-By ๋ฐ Server ํ—ค๋” ์ˆจ๊ธฐ๊ธฐ ์„ค์ •

์›น ์„œ๋ฒ„ ์‘๋‹ต ํ—ค๋”์— ํฌํ•จ๋œ X-Powered-By ์ •๋ณด(์˜ˆ: Servlet/3.1)๋Š” ๋ถˆํ•„์š”ํ•œ ์„œ๋ฒ„ ์ •๋ณด๋ฅผ ๋…ธ์ถœํ•˜์—ฌ ๋ณด์•ˆ ์ทจ์•ฝ์ ์œผ๋กœ ๋ถ„๋ฅ˜๋ฉ๋‹ˆ๋‹ค. IBM WebSphere Application Server(WAS) v8.5 ์ด์ƒ์—์„œ ์›น ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ์„ ํ†ตํ•ด ์ด ํ—ค๋”๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

0. ๋ฐฐ๊ฒฝ ๋ฐ ์›์ธ (Context)

๊ธฐ๋ณธ์ ์œผ๋กœ WAS๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ต์„ ๋ณด๋‚ผ ๋•Œ, ์ž์‹ ์ด ์‚ฌ์šฉํ•œ ๊ธฐ์ˆ  ์Šคํƒ์„ ํ—ค๋”์— ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

  • X-Powered-By: ๊ตฌํ˜„ ๊ธฐ์ˆ  ์ •๋ณด (์˜ˆ: Servlet/3.0, JSP/2.2)
  • Server: ์›น ์„œ๋ฒ„ ์†Œํ”„ํŠธ์›จ์–ด ์ •๋ณด (์˜ˆ: WebSphere Application Server/8.5)

๊ณต๊ฒฉ์ž๋Š” ์ด ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํŠน์ • ๋ฒ„์ „์— ์กด์žฌํ•˜๋Š” ์•Œ๋ ค์ง„ ์ทจ์•ฝ์ (CVE)์„ ๊ณต๊ฒฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์šด์˜ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฐ˜๋“œ์‹œ ์ˆจ๊ฒจ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Test Environment

  • OS: CentOS 7.2
  • WAS: WebSphere Application Server v8.5.5

1. X-Powered-By ํ—ค๋” ์ œ๊ฑฐ ์„ค์ •

WAS ๊ด€๋ฆฌ ์ฝ˜์†”(Admin Console)์—์„œ ์›น ์ปจํ…Œ์ด๋„ˆ ์„ค์ •์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

์„ค์ • ๊ฒฝ๋กœ

์„œ๋ฒ„(Servers) > ์„œ๋ฒ„ ์œ ํ˜•(Server Types) > WebSphere application servers > [์„œ๋ฒ„๋ช…] > ์›น ์ปจํ…Œ์ด๋„ˆ ์„ค์ •(Web Container Settings) > ์›น ์ปจํ…Œ์ด๋„ˆ(Web container) > ์‚ฌ์šฉ์ž ์ •์˜ ํŠน์„ฑ(Custom properties)

์†์„ฑ ์ถ”๊ฐ€ (New)

์ด๋ฆ„ (Name) ๊ฐ’ (Value)
com.ibm.ws.webcontainer.disablexPoweredBy true
Tip (Server ํ—ค๋”๋„ ๊ฐ™์ด ์ˆจ๊ธฐ๊ธฐ):
๋ณด์•ˆ ๊ฐ•๋„๋ฅผ ๋” ๋†’์ด๋ ค๋ฉด com.ibm.ws.webcontainer.disableServerHeader ์†์„ฑ๋„ true๋กœ ์„ค์ •ํ•˜์—ฌ WAS ๋ฒ„์ „ ์ •๋ณด๊นŒ์ง€ ์ˆจ๊ธฐ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

2. ๊ฒ€์ฆ (Verification)

์„ค์ • ์ €์žฅ ํ›„ ์„œ๋ฒ„๋ฅผ ๋ฐ˜๋“œ์‹œ ์žฌ๊ธฐ๋™ํ•ด์•ผ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. curl ๋ช…๋ น์–ด๋‚˜ ๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์ž ๋„๊ตฌ(F12)๋ฅผ ํ†ตํ•ด ์‘๋‹ต ํ—ค๋”๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋ช…๋ น์–ด ํ™•์ธ (Linux)

# -I ์˜ต์…˜์œผ๋กœ ํ—ค๋”๋งŒ ์กฐํšŒ
curl -I http://localhost:9080/

# ์ ์šฉ ์ „ (๋…ธ์ถœ๋จ)
HTTP/1.1 200 OK
X-Powered-By: Servlet/3.0
Content-Type: text/html
...

# ์ ์šฉ ํ›„ (์‚ฌ๋ผ์ง)
HTTP/1.1 200 OK
Content-Type: text/html
...

๋ธŒ๋ผ์šฐ์ € ํ™•์ธ

Chrome ๊ฐœ๋ฐœ์ž ๋„๊ตฌ > Network ํƒญ > ์•„๋ฌด ์š”์ฒญ ํด๋ฆญ > Response Headers ์„น์…˜์—์„œ ํ•ด๋‹น ํ•ญ๋ชฉ์ด ์‚ฌ๋ผ์กŒ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.


Next Step:
WAS ์„ค์ •๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์•ž๋‹จ์˜ ์›น ์„œ๋ฒ„(IHS/Apache)์—์„œ๋„ ServerTokens Prod ์„ค์ •์„ ํ†ตํ•ด Apache ๋ฒ„์ „ ์ •๋ณด ๋…ธ์ถœ์„ ์ตœ์†Œํ™”ํ•ด์•ผ ์™„๋ฒฝํ•œ ๋ณด์•ˆ ์กฐ์น˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

[Linux/AIX] ์œˆ๋„์šฐ ํŒŒ์ผ ์—…๋กœ๋“œ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ๊ฐœํ–‰ ๋ฌธ์ž(^M) ์ œ๊ฑฐ ๋ฐฉ๋ฒ• (Perl, vi, sed)

Windows(CRLF)์—์„œ ์ž‘์„ฑํ•œ ํŒŒ์ผ์„ Unix/Linux(LF) ๊ณ„์—ด ์„œ๋ฒ„๋กœ ์—…๋กœ๋“œํ•˜๋ฉด, ๋ผ์ธ ๋์— ^M ํŠน์ˆ˜๋ฌธ์ž๊ฐ€ ๋ถ™์–ด ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ์—๋Ÿฌ(bad interpreter)๋ฅผ ์œ ๋ฐœํ•ฉ๋‹ˆ๋‹ค. AIX ํ™˜๊ฒฝ์—์„œ๋„ ํ™•์‹คํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋Š” Perl ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•œ ์ผ๊ด„ ์ œ๊ฑฐ ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

0. ์›์ธ ๋ฐ ์ฆ์ƒ (Context)

์šด์˜์ฒด์ œ๋งˆ๋‹ค ์ค„๋ฐ”๊ฟˆ(New Line)์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

  • Windows: CR(Carriage Return, \r) + LF(Line Feed, \n)
  • Unix/Linux/AIX: LF(\n)

FTP ์ „์†ก ์‹œ ASCII ๋ชจ๋“œ๊ฐ€ ์•„๋‹Œ Binary ๋ชจ๋“œ๋กœ ์ „์†กํ•˜๊ฑฐ๋‚˜, ๋‹จ์ˆœ ๋ณต์‚ฌ/๋ถ™์—ฌ๋„ฃ๊ธฐ๋ฅผ ํ•  ๊ฒฝ์šฐ Windows์˜ CR(\r) ๋ฌธ์ž๊ฐ€ ๊ทธ๋Œ€๋กœ ๋‚จ์•„ vi ์—๋””ํ„ฐ์—์„œ ^M์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Test Environment

  • OS: AIX (๋˜๋Š” Linux)
  • Shell: sh, ksh, bash

1. ๋ฌธ์ œ ํ™•์ธ (Issue Identification)

์‰˜ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ์‹œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜, vi๋กœ ํŒŒ์ผ์„ ์—ด์—ˆ์„ ๋•Œ ๋ผ์ธ ๋๋งˆ๋‹ค ^M์ด ๋ถ™์–ด์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

vi ์—๋””ํ„ฐ ํ™”๋ฉด

#!/bin/sh^M
#./startServer.sh server_name^M
#./stopServer.sh server_name -username username -password password^M

2. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• A: Perl ๋ช…๋ น์–ด ์‚ฌ์šฉ (๊ถŒ์žฅ)

AIX์˜ ๊ธฐ๋ณธ sed ๋ช…๋ น์–ด๋Š” -i(ํŒŒ์ผ ์ง์ ‘ ์ˆ˜์ •) ์˜ต์…˜์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Perl์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํ˜ธํ™˜์„ฑ์ด ์ข‹๊ณ  ๊ฐ„ํŽธํ•ฉ๋‹ˆ๋‹ค.

๋ช…๋ น์–ด ๊ตฌ๋ฌธ

^M์„ ์ง์ ‘ ์ž…๋ ฅํ•˜๊ธฐ ๋ฒˆ๊ฑฐ๋กœ์šฐ๋ฏ€๋กœ, 8์ง„์ˆ˜ ์ฝ”๋“œ์ธ \015๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

# ๊ตฌ๋ฌธ: perl -pi -e 's/์ฐพ์„๋ฌธ์ž/๋ฐ”๊ฟ€๋ฌธ์ž/g' [ํŒŒ์ผ๋ช…]
perl -pi -e 's/\015//g' stopWasAll.sh

๋‹ค์ค‘ ํŒŒ์ผ ์ผ๊ด„ ์ฒ˜๋ฆฌ

์™€์ผ๋“œ์นด๋“œ(*)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ํ•œ ๋ฒˆ์— ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# ํ˜„์žฌ ๊ฒฝ๋กœ์˜ ๋ชจ๋“  .sh ํŒŒ์ผ์—์„œ CR ์ œ๊ฑฐ
perl -pi -e 's/\015//g' *.sh

3. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• B: vi ์—๋””ํ„ฐ ๋‚ด๋ถ€ ์น˜ํ™˜

ํŒŒ์ผ์„ ์—ด์–ด๋†“์€ ์ƒํƒœ์—์„œ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  1. vi๋กœ ํŒŒ์ผ ์—ด๊ธฐ
  2. ๋ช…๋ น ๋ชจ๋“œ(ESC)์—์„œ ์น˜ํ™˜ ๋ช…๋ น์–ด ์ž…๋ ฅ
:%s/^M//g
Tip: ์œ„ ๋ช…๋ น์–ด์˜ ^M์€ Shift + 6, M์„ ํƒ€์ดํ•‘ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.
๋ฐ˜๋“œ์‹œ Ctrl + V๋ฅผ ๋ˆ„๋ฅธ ์ƒํƒœ์—์„œ Ctrl + M์„ ๋ˆŒ๋Ÿฌ์•ผ ์ž…๋ ฅ๋ฉ๋‹ˆ๋‹ค.

4. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• C: dos2unix ์œ ํ‹ธ๋ฆฌํ‹ฐ

๋ฆฌ๋ˆ…์Šค(CentOS/Ubuntu) ํ™˜๊ฒฝ์ด๋ผ๋ฉด ์ „์šฉ ๋„๊ตฌ๋ฅผ ์„ค์น˜ํ•˜์—ฌ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์‰ฝ์Šต๋‹ˆ๋‹ค.

# ์„ค์น˜ (CentOS)
yum install -y dos2unix

# ๋ณ€ํ™˜
dos2unix stopWasAll.sh

5. ๊ฒ€์ฆ (Verification)

๋ณ€ํ™˜ ํ›„ ๋‹ค์‹œ vi๋กœ ํŒŒ์ผ์„ ์—ด์–ด ^M ๋ฌธ์ž๊ฐ€ ์‚ฌ๋ผ์กŒ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

test1 root [/was8/bin]# vi stopWasAll.sh

#!/bin/sh
#./startServer.sh server_name
#./stopServer.sh server_name -username username -password password
#PropFilePasswordEncoder.sh
#export LANG=en_us.utf8

๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[Apache] CentOS 7 ์†Œ์Šค ์ปดํŒŒ์ผ ์„ค์น˜ ์™„๋ฒฝ ๊ฐ€์ด๋“œ: ์˜์กด์„ฑ(APR, PCRE, OpenSSL) ํฌํ•จ

CentOS 7 ํ™˜๊ฒฝ์—์„œ Apache HTTP Server 2.4๋ฅผ ์†Œ์Šค ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผํ•˜์—ฌ ์„ค์น˜ํ•˜๋Š” ์ „์ฒด ๊ณผ์ •์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. APR, APR-Util, PCRE, OpenSSL ๋“ฑ ํ•„์ˆ˜ ์˜์กด์„ฑ ํŒจํ‚ค์ง€๋ฅผ ๋ณ„๋„ ๊ฒฝ๋กœ(Custom Path)์— ์„ค์น˜ํ•˜๊ณ  ์ด๋ฅผ Apache์™€ ์—ฐ๋™ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ค‘์ ์ ์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

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

์†Œ์Šค ์ปดํŒŒ์ผ์„ ์œ„ํ•ด ํ•„์š”ํ•œ C ์ปดํŒŒ์ผ๋Ÿฌ์™€ ๊ธฐ๋ณธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

OS ๋ฐ ์ปดํŒŒ์ผ ๋„๊ตฌ ํ™•์ธ

  • OS: CentOS 7 (Kernel 3.10.0)
  • ํŒจํ‚ค์ง€ ์„ค์น˜: yum -y install gcc make gcc-c++ pcre-devel expat-devel

1. ์˜์กด์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ (Dependencies)

Apache 2.4 ๊ตฌ๋™์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ /SW/web/tools ํ•˜์œ„์— ๊ฒฉ๋ฆฌํ•˜์—ฌ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์‹œ์Šคํ…œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€์˜ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.

1) APR (Apache Portable Runtime)

OS ๊ฐ„์˜ ์ฐจ์ด๋ฅผ ์ถ”์ƒํ™”ํ•ด ์ฃผ๋Š” ํ•ต์‹ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

# ๋‹ค์šด๋กœ๋“œ ๋ฐ ์••์ถ• ํ•ด์ œ ํ›„ ์ด๋™
./configure --prefix=/SW/web/tools/apr
make && make install

2) APR-Util

APR์˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ™•์žฅํŒ์ด๋ฉฐ, ๋ฐ˜๋“œ์‹œ APR์ด ๋จผ์ € ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

# --with-apr ์˜ต์…˜์œผ๋กœ ์œ„์—์„œ ์„ค์น˜ํ•œ ๊ฒฝ๋กœ ์ง€์ • ํ•„์ˆ˜
./configure --prefix=/SW/web/tools/apr-util --with-apr=/SW/web/tools/apr
make && make install

3) PCRE (Perl Compatible Regular Expressions)

URL ์žฌ์ž‘์„ฑ(Rewrite) ๋ชจ๋“ˆ ๋“ฑ ์ •๊ทœ ํ‘œํ˜„์‹ ์ฒ˜๋ฆฌ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

./configure --prefix=/SW/web/tools/pcre
make && make install

4) OpenSSL (HTTPS ์ง€์›)

๋ณด์•ˆ ํ†ต์‹ (SSL/TLS)์„ ์œ„ํ•ด OpenSSL ์†Œ์Šค๋ฅผ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค.

# config ๋ช…๋ น์–ด๋กœ ๊ฒฝ๋กœ ์„ค์ •
./config --prefix=/SW/web/tools/openssl --openssldir=/SW/web/tools/openssl

make && make install

2. Apache (HTTPD) ์ปดํŒŒ์ผ ๋ฐ ์„ค์น˜

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

Configure ์‹คํ–‰

tar -zxvf httpd-2.4.41.tar.gz
cd httpd-2.4.41

# ์„ค์ • (ํ•œ ์ค„๋กœ ์ž…๋ ฅ)
./configure \
--prefix=/SW/web/httpd24 \
--enable-so \
--enable-rewrite \
--enable-proxy \
--enable-ssl \
--enable-mods-shared=all \
--enable-modules=shared \
--enable-mpms-shared=all \
--with-mpm=worker \
--with-apr=/SW/web/tools/apr \
--with-apr-util=/SW/web/tools/apr-util \
--with-pcre=/SW/web/tools/pcre \
--with-ssl=/SW/web/tools/openssl \
--enable-unique-id

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

  • --enable-so: DSO(Dynamic Shared Object) ๋ชจ๋“ˆ ์ ์žฌ ๊ธฐ๋Šฅ ํ™œ์„ฑํ™” (ํ•„์ˆ˜)
  • --enable-mods-shared=all: ๋ชจ๋“  ๋ชจ๋“ˆ์„ ๋™์  ๋ชจ๋“ˆ๋กœ ์ปดํŒŒ์ผ
  • --with-mpm=worker: ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ๋ชจ๋“ˆ(MPM)์„ Worker ๋ฐฉ์‹์œผ๋กœ ์ง€์ • (์„ฑ๋Šฅ ์œ ๋ฆฌ)
  • --with-[lib]: ์•ž์„œ ์„ค์น˜ํ•œ ์˜์กด์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฒฝ๋กœ ์—ฐ๊ฒฐ

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

make && make install

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

์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์„œ๋น„์Šค๋ฅผ ๊ธฐ๋™ํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ € ์ ‘์†์„ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.

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

# Apache ์ปจํŠธ๋กค๋Ÿฌ ์‹คํ–‰
/SW/web/httpd24/bin/apachectl start

# ํ”„๋กœ์„ธ์Šค ํ™•์ธ
ps -ef | grep httpd
netstat -anotp | grep :80

๋ฐฉํ™”๋ฒฝ ์„ค์ • (CentOS 7)

ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋–  ์žˆ์–ด๋„ ๋ฐฉํ™”๋ฒฝ์ด ๋ง‰ํ˜€์žˆ์œผ๋ฉด ์ ‘์†์ด ์•ˆ ๋ฉ๋‹ˆ๋‹ค. 80 ํฌํŠธ๋ฅผ ์—ด์–ด์ค๋‹ˆ๋‹ค.

firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --reload

์ ‘์† ํ™•์ธ

๋ธŒ๋ผ์šฐ์ € ์ฃผ์†Œ์ฐฝ์— ์„œ๋ฒ„ IP๋ฅผ ์ž…๋ ฅํ•˜์—ฌ "It works!" ํŽ˜์ด์ง€๊ฐ€ ๋œจ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

Apache It Works Page

[๊ทธ๋ฆผ] ์„ค์น˜ ์„ฑ๊ณต ์‹œ ํ™•์ธ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋ณธ ํŽ˜์ด์ง€


Next Step:
๊ธฐ๋ณธ ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์šด์˜ ํ™˜๊ฒฝ์— ๋งž์ถฐ httpd.conf์—์„œ ServerName ๊ฒฝ๊ณ ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ , httpd-mpm.conf์—์„œ Worker ํ”„๋กœ์„ธ์Šค ํŠœ๋‹์„ ์ง„ํ–‰ํ•ด ๋ณด์‹ญ์‹œ์˜ค.

[Linux] find ๋ช…๋ น์–ด ์‹ค๋ฌด ํŒจํ„ด 3๊ฐ€์ง€: ํŒŒ์ผ๋ช…, ์ˆ˜์ • ์‹œ๊ฐ„, ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰(grep) ํ™œ์šฉ

๋ฆฌ๋ˆ…์Šค(CentOS 7) ํ™˜๊ฒฝ์—์„œ ์›ํ•˜๋Š” ํŒŒ์ผ์„ ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•œ find ๋ช…๋ น์–ด์˜ ํ•„์ˆ˜ ์˜ต์…˜์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์—†๋Š” ๊ฒ€์ƒ‰, ์ตœ๊ทผ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ ํƒ์ƒ‰, ๊ทธ๋ฆฌ๊ณ  xargs๋ฅผ ์กฐํ•ฉํ•œ ํŒŒ์ผ ๋‚ด์šฉ ๊ฒ€์ƒ‰ ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

Test Environment

  • OS: CentOS 7 (3.10.0-957.el7.x86_64)
  • Shell: Bash

1. ํŒŒ์ผ๋ช…์œผ๋กœ ๊ฒ€์ƒ‰ (By Name)

๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ๋ฒ•์ž…๋‹ˆ๋‹ค. -name ์˜ต์…˜์€ ์ •ํ™•ํ•œ ์ด๋ฆ„์„, -iname ์˜ต์…˜์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๊ฒ€์ƒ‰

# ์ „์ฒด ๊ฒฝ๋กœ(/)์—์„œ Mem.sh ํŒŒ์ผ ์ฐพ๊ธฐ
find /sw -name "Mem.sh"

# ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ(.)์—์„œ ์ฐพ๊ธฐ
find . -name "Mem.sh"

๋Œ€์†Œ๋ฌธ์ž ๋ฌด์‹œ ๊ฒ€์ƒ‰ (Insensitive)

ํŒŒ์ผ๋ช…์˜ ๋Œ€์†Œ๋ฌธ์ž๊ฐ€ ํ™•์‹คํ•˜์ง€ ์•Š์„ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

# Mem.sh, MEM.sh ๋ชจ๋‘ ๊ฒ€์ƒ‰๋จ
find /sw -iname "Mem.sh"
Tip (์—๋Ÿฌ ์ˆจ๊ธฐ๊ธฐ):
๊ฒ€์ƒ‰ ๋„์ค‘ Permission denied ๋ฉ”์‹œ์ง€๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์ด ๋œฌ๋‹ค๋ฉด ๋ช…๋ น์–ด ๋’ค์— 2>/dev/null์„ ๋ถ™์—ฌ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฒ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ: find / -name "test" 2>/dev/null

2. ์ˆ˜์ • ์‹œ๊ฐ„์œผ๋กœ ๊ฒ€์ƒ‰ (By Time)

์žฅ์•  ๋ฐœ์ƒ ์‹œ์ ์ด๋‚˜ ๋กœ๊ทธ ๋ถ„์„ ์‹œ, ํŠน์ • ์‹œ๊ฐ„ ๋‚ด์— ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ์„ ์ฐพ์„ ๋•Œ -mtime(Modification Time) ์˜ต์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์˜ˆ์‹œ

# ์ตœ๊ทผ 1์ผ(24์‹œ๊ฐ„) ์ด๋‚ด์— ์ˆ˜์ •๋œ .sh ํŒŒ์ผ ๊ฒ€์ƒ‰
find /sw -name "*.sh" -mtime -1

์˜ต์…˜ ์ƒ์„ธ ์„ค๋ช…

  • -mtime -n: ์ตœ๊ทผ n์ผ ์ด๋‚ด์— ๋ณ€๊ฒฝ๋จ (Today)
  • -mtime +n: n์ผ ์ด์ „์— ๋ณ€๊ฒฝ๋จ (Old files)
  • -mtime n: ์ •ํ™•ํžˆ n์ผ ์ „์— ๋ณ€๊ฒฝ๋จ

3. ํŒŒ์ผ ๋‚ด์šฉ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰ (With Grep)

find๋กœ ์ฐพ์€ ํŒŒ์ผ๋“ค์˜ ๋‚ด์šฉ(Content)์„ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ, ํŒŒ์ดํ”„(|)์™€ xargs๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ grep์œผ๋กœ ๋„˜๊ฒจ์ค๋‹ˆ๋‹ค.

๊ฒ€์ƒ‰ ํŒŒ์ดํ”„๋ผ์ธ

[ํŒŒ์ผ ์ฐพ๊ธฐ][๋ชฉ๋ก ์ „๋‹ฌ][๋‚ด์šฉ ๊ฒ€์ƒ‰]์˜ ํ๋ฆ„์ž…๋‹ˆ๋‹ค.

# 1์ผ ์ด๋‚ด ์ˆ˜์ •๋œ sh ํŒŒ์ผ๋“ค ์ค‘์—์„œ "Mem"์ด๋ผ๋Š” ๊ธ€์ž๊ฐ€ ํฌํ•จ๋œ ๋ผ์ธ ์ถœ๋ ฅ
find /sw -name "*.sh" -mtime -1 | xargs grep "Mem"

์‹คํ–‰ ๊ฒฐ๊ณผ ํ•ด์„

/sw/Mem.sh:MEMINFO=`cat /proc/meminfo...`  <-- ํŒŒ์ผ๋ช…:๋‚ด์šฉ
/sw/Mem1.sh: TOTAL=`free | grep ^Mem...`
/sw/Mem1.sh: USED=`free | grep ^Mem...`

grep์ด find๊ฐ€ ์ฐพ์•„๋‚ธ ํŒŒ์ผ๋“ค์„ ํ•˜๋‚˜์”ฉ ์—ด์–ด์„œ "Mem" ํ‚ค์›Œ๋“œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ํ•ด๋‹น ๋ผ์ธ์„ ํŒŒ์ผ๋ช…๊ณผ ํ•จ๊ป˜ ์ถœ๋ ฅํ•ด ์ค๋‹ˆ๋‹ค.


Next Step:
ํŒŒ์ผ์„ ๋‹จ์ˆœํžˆ ์ฐพ๋Š” ๊ฒƒ์„ ๋„˜์–ด, -exec ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰๋œ ํŒŒ์ผ์˜ ๊ถŒํ•œ์„ ์ผ๊ด„ ๋ณ€๊ฒฝ(chmod)ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œ(rm)ํ•˜๋Š” ๋“ฑ์˜ ๊ณ ๊ธ‰ ํ™œ์šฉ๋ฒ•์„ ์ตํ˜€๋ณด์„ธ์š”.

[Linux] ํŒŒ์ผ/๋””๋ ‰ํ† ๋ฆฌ ์†Œ์œ ๊ถŒ(Owner/Group) ๋ณ€๊ฒฝ: chown ๋ช…๋ น์–ด ์‚ฌ์šฉ๋ฒ• ๋ฐ ์ฃผ์˜์‚ฌํ•ญ

๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ(CentOS 7)์—์„œ ํŒŒ์ผ ๋ฐ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์†Œ์œ ์ž(User)์™€ ๊ทธ๋ฃน(Group)์„ ๋ณ€๊ฒฝํ•˜๋Š” chown ๋ช…๋ น์–ด ์‚ฌ์šฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํ•˜์œ„ ๊ฒฝ๋กœ๊นŒ์ง€ ์ผ๊ด„ ๋ณ€๊ฒฝํ•˜๋Š” -R ์˜ต์…˜๊ณผ ์‹ค๋ฌด ์˜ˆ์ œ๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

0. ๋ฐฐ๊ฒฝ ์ง€์‹ (Context)

๋ฆฌ๋ˆ…์Šค์˜ ๋ชจ๋“  ํŒŒ์ผ์€ ํŠน์ • ์‚ฌ์šฉ์ž์™€ ๊ทธ๋ฃน์— ์†ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต root ๊ถŒํ•œ์œผ๋กœ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ๋ณต์‚ฌํ•œ ํŒŒ์ผ์€ ์†Œ์œ ๊ถŒ์ด root๋กœ ๋˜์–ด ์žˆ์–ด, ์ผ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ •(์˜ˆ: wasadm, tomcat ๋“ฑ)์—์„œ ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ํ•  ๋•Œ "Permission denied" ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ chown์„ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ์œ ๊ถŒ์„ ์ ์ ˆํ•œ ๊ณ„์ •์œผ๋กœ ๋„˜๊ฒจ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Test Environment

  • OS: CentOS 7 (3.10.0-957.el7.x86_64)
  • User: root (๋ช…๋ น์–ด ์‹คํ–‰ ์ฃผ์ฒด), wasadm (๋Œ€์ƒ ๊ณ„์ •)

1. ๊ธฐ๋ณธ ๋ฌธ๋ฒ• (Syntax)

chown(Change Owner) ๋ช…๋ น์–ด์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ๋ฃจํŠธ(Superuser) ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

# ์†Œ์œ ์ž๋งŒ ๋ณ€๊ฒฝ
chown [USER] [FILE]

# ์†Œ์œ ์ž์™€ ๊ทธ๋ฃน ๋™์‹œ ๋ณ€๊ฒฝ (๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ)
chown [USER]:[GROUP] [FILE]

# ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๊นŒ์ง€ ์žฌ๊ท€์  ๋ณ€๊ฒฝ
chown -R [USER]:[GROUP] [DIRECTORY]

2. ์‹ค๋ฌด ์‚ฌ์šฉ ์˜ˆ์‹œ (Examples)

์ œ๊ณตํ•ด์ฃผ์‹  ๋กœ๊ทธ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ƒํ™ฉ๋ณ„ ๋ช…๋ น์–ด ์‚ฌ์šฉ๋ฒ•์„ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

Step 1: ์ „์ฒด ์ดˆ๊ธฐํ™” (root ๊ถŒํ•œ์œผ๋กœ ์„ค์ •)

-R ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ(*)์˜ ๋ชจ๋“  ํŒŒ์ผ๊ณผ ํด๋”๋ฅผ root:root ์†Œ์œ ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

[root@localhost sw]# chown -R root:root *

# ํ™•์ธ
[root@localhost sw]# ls -alrt
drwxrwxrwx.  2 root root   6 Feb  5 01:49 img
drwx------.  2 root root   6 Feb  5 01:49 was
...
์ฃผ์˜ (Warning):
chown -R์€ ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค. ์‹ค์ˆ˜๋กœ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ(/)๋‚˜ ์‹œ์Šคํ…œ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์‹คํ–‰ํ•  ๊ฒฝ์šฐ ์‹œ์Šคํ…œ ๋ถ€ํŒ…์ด ๋ถˆ๊ฐ€๋Šฅํ•ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์‹คํ–‰ ์ „ ํ˜„์žฌ ๊ฒฝ๋กœ(pwd)๋ฅผ ๋ฐ˜๋“œ์‹œ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

Step 2: ํŠน์ • ์„œ๋น„์Šค ๊ณ„์ •์œผ๋กœ ์ด๊ด€

WAS๋‚˜ ์›น ์„œ๋ฒ„ ์šด์˜์„ ์œ„ํ•ด ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ(img, was)์™€ ์Šคํฌ๋ฆฝํŠธ(Mem.sh)์˜ ์†Œ์œ ๊ถŒ์„ wasadm ๊ณ„์ •์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

# ๋””๋ ‰ํ† ๋ฆฌ ๋ฐ ํŒŒ์ผ ์†Œ์œ ๊ถŒ ๋ณ€๊ฒฝ (wasadm ๊ณ„์ •, wasadm ๊ทธ๋ฃน)
[root@localhost sw]# chown wasadm:wasadm img
[root@localhost sw]# chown wasadm:wasadm was
[root@localhost sw]# chown wasadm:wasadm Mem.sh

Step 3: ๋ณ€๊ฒฝ ๊ฒฐ๊ณผ ๊ฒ€์ฆ (Verification)

ls -l ๋ช…๋ น์–ด๋กœ ๋ณ€๊ฒฝ๋œ ์†Œ์œ ๊ถŒ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. 3๋ฒˆ์งธ ์ปฌ๋Ÿผ(Owner)๊ณผ 4๋ฒˆ์งธ ์ปฌ๋Ÿผ(Group)์ด ๋ณ€๊ฒฝ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[root@localhost sw]# ls -alrt
total 8
# ๋ณ€๊ฒฝ๋œ ํ•ญ๋ชฉ (wasadm)
drwxrwxrwx.  2 wasadm wasadm   6 Feb  5 01:49 img
drwx------.  2 wasadm wasadm   6 Feb  5 01:49 was
-rwxr-xr-x.  1 wasadm wasadm 428 Feb  8 01:16 Mem.sh

# ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ํ•ญ๋ชฉ (root ์œ ์ง€)
drwx------.  2 root   root     6 Feb  5 01:49 web
drwxr-xr-x.  2 root   root     6 Feb  5 01:49 bin
...

Next Step:
์†Œ์œ ๊ถŒ ๋ณ€๊ฒฝ์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด, ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ํŒŒ์ผ์— ๋Œ€ํ•ด ์–ด๋–ค ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ถŒํ•œ(Permission) ์„ค์ •(chmod) ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ€์•ผ ํ•ฉ๋‹ˆ๋‹ค.

[Linux] CentOS 7 ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ  ๋ถ„์„ ์™„๋ฒฝ ๊ฐ€์ด๋“œ: free ๋ช…๋ น์–ด ๋ณ€ํ™”์™€ ์‹ค์งˆ ์‚ฌ์šฉ๋Ÿ‰ ๊ณ„์‚ฐ

CentOS 7(RHEL 7)๋ถ€ํ„ฐ free ๋ช…๋ น์–ด์˜ ์ถœ๋ ฅ ํ˜•์‹์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ buffers/cache ๋ผ์ธ์ด ์‚ฌ๋ผ์ง€๊ณ  available ์ปฌ๋Ÿผ์ด ์ถ”๊ฐ€๋œ ๋ฐฐ๊ฒฝ์„ ์ดํ•ดํ•˜๊ณ , ์ •ํ™•ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ ์„ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

0. ๋ฐฐ๊ฒฝ ์ง€์‹: CentOS 6 vs 7 ์ฐจ์ด์ 

๋ฆฌ๋ˆ…์Šค๋Š” ๋‚จ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ๊ทน์ ์œผ๋กœ ์บ์‹œ(Cache)๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๋†’์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 'Used'๊ฐ€ ๋†’๋‹ค๊ณ  ํ•ด์„œ ๋ฐ˜๋“œ์‹œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

  • CentOS 6 ์ดํ•˜: -/+ buffers/cache ํ–‰์„ ํ†ตํ•ด ์‹ค์งˆ ์‚ฌ์šฉ๋Ÿ‰์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.
  • CentOS 7 ์ด์ƒ: ์ปค๋„์ด ์ง์ ‘ ๊ณ„์‚ฐํ•œ available ์ปฌ๋Ÿผ์„ ํ†ตํ•ด "์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ"๋ฅผ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค.

Test Environment

  • OS: CentOS 7 (Kernel 3.10.0-957.el7.x86_64)

1. ๋ฉ”๋ชจ๋ฆฌ ํ™•์ธ ๋ช…๋ น์–ด (free)

๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํ™•์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. -m ์˜ต์…˜์€ Megabyte ๋‹จ์œ„๋กœ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

[root@localhost sw]# free -m
              total        used        free      shared  buff/cache   available
Mem:           7803         892        4686         263        2224        6277
Swap:          8064           0        8064

์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์ƒ์„ธ ๋ณด๊ธฐ

-w(wide) ์˜ต์…˜์„ ์ฃผ๋ฉด buffer์™€ cache๋ฅผ ๋ถ„๋ฆฌํ•ด์„œ ๋ณผ ์ˆ˜ ์žˆ๊ณ , -s(seconds) ์˜ต์…˜์œผ๋กœ ๋ฐ˜๋ณต ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

# 1์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ buffer/cache๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ์ถœ๋ ฅ
free -mw -s 1

2. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ  ๊ณ„์‚ฐ ๊ณต์‹ (Calculation)

๋‹จ์ˆœํžˆ used / total๋กœ ๊ณ„์‚ฐํ•˜๋ฉด ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๊นŒ์ง€ ์‚ฌ์šฉ๋Ÿ‰์— ํฌํ•จ๋˜์–ด ์ˆ˜์น˜๊ฐ€ ๊ณผ๋„ํ•˜๊ฒŒ ๋†’๊ฒŒ ๋‚˜์˜ต๋‹ˆ๋‹ค. ๋ชฉ์ ์— ๋”ฐ๋ผ ๊ณ„์‚ฐ ๋ฐฉ์‹์„ ๋‹ฌ๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ณต์‹ A: OS ๊ด€์ ์˜ ์‚ฌ์šฉ๋ฅ  (์บ์‹œ ํฌํ•จ)

๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์‹ค์ œ๋กœ ์–ผ๋งˆ๋‚˜ ํ• ๋‹น๋˜์–ด ์žˆ๋Š”์ง€(๋ฐ˜๋‚ฉ๋˜์ง€ ์•Š์€ ์ƒํƒœ) ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

$$ Usage(\%) = \frac{used}{total} \times 100 $$

๊ณต์‹ B: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ด€์ ์˜ ์‹ค์งˆ ์‚ฌ์šฉ๋ฅ  (๊ถŒ์žฅ)

"์‹ค์ œ๋กœ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•œ๊ฐ€?"๋ฅผ ํŒ๋‹จํ•  ๋•Œ๋Š” available ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

$$ Usage(\%) = \frac{total - available}{total} \times 100 $$

Tip: sar -r 1 ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด์„œ๋„ %memused(๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ )๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ์ฃผ์š” ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค๋ช… (Parameters)

CentOS 7 free ๋ช…๋ น์–ด์˜ ๊ฐ ์ปฌ๋Ÿผ์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค๋ช…
total ์„ค์น˜๋œ ์ „์ฒด ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ
used ํ˜„์žฌ ํ• ๋‹น๋˜์–ด ์‚ฌ์šฉ ์ค‘์ธ ๋ฉ”๋ชจ๋ฆฌ (total - free - buff/cache)
free ์•„๋ฌด ์šฉ๋„๋กœ๋„ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์™„์ „ํ•œ ์œ ํœด ๋ฉ”๋ชจ๋ฆฌ
shared tmpfs(๋žจ๋””์Šคํฌ) ๋“ฑ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๊ณต์œ ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ
buff/cache ์ปค๋„ ๋ฒ„ํผ ๋ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ ์บ์‹œ (ํ•„์š”์‹œ ์ฆ‰์‹œ ๋ฐ˜ํ™˜ ๊ฐ€๋Šฅ)
available (ํ•ต์‹ฌ) ์Šค์™€ํ•‘(Swapping) ์—†์ด ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค ์‹คํ–‰์— ์ฆ‰์‹œ ํ• ๋‹น ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ถ”์ •์น˜

Next Step:
๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ ์ด ๋น„์ •์ƒ์ ์œผ๋กœ ๋†’๋‹ค๋ฉด(available ๋ถ€์กฑ), top ๋ช…๋ น์–ด๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(Leak)๊ฐ€ ์˜์‹ฌ๋˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐพ๊ฑฐ๋‚˜, echo 3 > /proc/sys/vm/drop_caches ๋ช…๋ น์–ด๋กœ ์บ์‹œ๋ฅผ ๊ฐ•์ œ ๋ฐ˜ํ™˜ํ•˜์—ฌ ๊ฐ€์šฉ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฒ€ํ† ํ•ด ๋ณด์„ธ์š”.