[Docker๐Ÿณ] ์›น์„œ๋ฒ„

Jeong SeongYunยท2022๋…„ 10์›” 19์ผ
1

Docker

๋ชฉ๋ก ๋ณด๊ธฐ
9/10
post-thumbnail

์›น์„œ๋ฒ„๋ž€?

HTTP์˜ ์š”์ฒญ์„ ๋ฐ›๊ณ , ๊ทธ์— ๋Œ€ํ•œ reponse๋ฅผ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. A์ข€ ์ค„๋ž˜? ํ•˜๋ฉด ์‘ ์—ฌ๊ธฐ ใ…Žใ…Ž ํ•˜๊ณ  ์ฃผ๋Š” ์• ๊ฐ€ ๋ฐ”๋กœ ์›น์„œ๋ฒ„๋ผ๋Š” ๊ฑฐ์ฃ .

๊ฐ€์ ธ๋‹ค์ฃผ๋Š” ์ƒํ’ˆ์€ ๋ณดํ†ต HTML ํŒŒ์ผ์ด ๋  ์ˆ˜๋„ ์žˆ๊ณ , ๋ฐ์ดํ„ฐ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋ธ ์ถ”๋ก  ๊ฒฐ๊ณผ์ผ ์ˆ˜๋„ ์žˆ๊ตฌ์š”!



โ— Apache vs Nginx

Apache์™€ Nginx๋Š” ์›น์„œ๋ฒ„์˜ ๋‘ ํฐ ํ˜•๋‹˜๋“ค์ž…๋‹ˆ๋‹ค. ์–ด์ฐจํ”ผ ํ•ด๋ด์•ผ ๋ฉ”๋‰ดํŒ์— ์žˆ๋Š” ์Œ์‹์„ ๊ฐ€์ ธ๋‹ค์ฃผ๋Š” ์—ญํ• ์ด๊ธด ํ•˜์ง€๋งŒ, ๊ฐ€์ ธ๋‹ค์ฃผ๋Š” ๋ฐฉ์‹์ด ์‚ด์ง ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ทธ ๋ฐฉ์‹์˜ ์ฐจ์ด๋ถ€ํ„ฐ ์‚ด์ง ๋ณด๊ณ  ๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.

Apache

์˜คํ”ˆ์†Œ์Šค๋กœ, ์ •๋ง ์˜ค๋žœ ๊ธฐ๊ฐ„ ๋™์•ˆ ์‚ฌ์šฉ๋˜์–ด ์™”๋˜ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.

์›๋ž˜๋Š” Prefork MPM๋ฐฉ์‹์œผ๋กœ ์š”์ฒญ ํ•˜๋‚˜๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ๊ทธ ์š”์ฒญ์„ ํ”„๋กœ์„ธ์Šค์™€ 1:1๋กœ ๋งค์นญํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณต์ œํ•œ ๋‹ค์Œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ–ˆ์ง€๋งŒ.. ๋ง๋งŒ ๋“ค์–ด๋„ ์š”์ฒญ์ด ๋งŽ์•„์ง€๋ฉด ๊ต‰์žฅํžˆ ๋น„ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์ผ ๊ฒƒ๊ฐ™์ง€ ์•Š๋‚˜์š”?

๊ทธ๋ž˜์„œ ๋‚˜์˜จ ๋ฐฉ๋ฒ•์ด Worker MPM์ด๋ผ๋Š” ๋ฐฉ์‹์œผ๋กœ, ์š”์ฒญ ํ•˜๋‚˜๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜ ์•ˆ์— ์“ฐ๋ ˆ๋“œ๋ผ๋Š” ๋‹จ์œ„๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์ƒ์„ฑํ•˜์—ฌ ํ•˜๋‚˜์˜ ๊ทธ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋กœ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ ๊ฒƒ์ด์ฃ !

Nginx

Apache๋Š” ๊ฒฐ๊ตญ ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ๋งˆ๋‹ค ๋ญ”๊ฐ€๋ฅผ ์ƒ์„ฑํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ Nginx๋Š” ์• ์ดˆ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋– ์žˆ๊ณ , ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์„ Event๋กœ ์ •์˜ํ•˜์—ฌ ์• ์ดˆ์— ๋ณ‘๋ ฌ์ ์œผ๋กœ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ๋“ค์–ด์˜จ ์š”์ฒญ์— ๋Œ€ํ•ด ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ๋‹ค์ฃผ๋ฉด ๋˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋นจ๋ฆฌ ์ค€๋น„๋œ ์• ๋“ค์€ ๋จผ์ € return ํ•ด๋„ ๋œ๋‹ค๋Š” ๊ฒƒ์ด์ฃ .

Apache์— ๋น„ํ•ด ์ƒ๋Œ€์ ์œผ๋กœ ์‹œ์Šคํ…œ ์ž์› ๊ด€๋ฆฌ์ฐจ์›์—์„œ ์žฅ์ ์ด ์žˆ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



Nginx ์‚ฌ์šฉํ•˜๊ธฐ

๊ธฐ๋ณธ ์„ค์ •ํŒŒ์ผ ํ™•์ธ

find -name nginx.conf ๋ฅผ ์ž…๋ ฅํ•˜์‹œ๋ฉด nginx ์„ค์ •ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„์น˜๋ฅผ ํ™•์ธํ•œ ๋‹ค์Œ vi ํŽธ์ง‘๊ธฐ๋ฅผ ํ†ตํ•ด ๋‚ด์šฉ์„ ํ™•์ธํ•˜๋ฉด...

๋ญ ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ์€ ๋‚ด์šฉ๋“ค์ด ์ฃผ๋ฅด๋ฅต ๋œน๋‹ˆ๋‹ค. ๋ชจ๋‘ ์ž์„ธํ•˜๊ฒŒ ์•Œ ํ•„์š”๋Š” ์—†๊ณ , http ๋ธ”๋ก ์ฃผ๋กœ ์ˆ˜์ •๋ฉ๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ์›น์„œ๋น„์Šค๋ณ„๋กœ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ์ˆ˜์ •์ด ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์„œ๋ฒ„๊ฐ€ ์„ค์ •๋จ์— ์žˆ์–ด์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ๋Š” ๊ฒฝ๋กœ ๋•Œ๋ฌธ์— ํ”ผ๋ฅผ ๋ณด๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ด ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ํ•ด๋‹น ์„ค์ •ํŒŒ์ผ์„ ๋ฐฉ๋ฌธํ•˜์—ฌ ํ•œ์ค„ํ•œ์ค„ ์‚ดํŽด๋ณด๋Š” ๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•œ ์„ค์ •์ด ๋‹ด๊ฒจ์ ธ ์žˆ๋Š” ํด๋”์ธ sites-available๊ณผ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•œ ์„ค์ •๋“ค์ด ๋‹ด๊ฒจ์ ธ ์žˆ๋Š” ํด๋”์ธ sites-enabled๊ฐ€ ์žˆ๋Š”๋ฐ,

-enabled ํด๋”๊ฐ€ available ํด๋”์™€ ์‹ฌ๋ณผ๋ฆญ ์—ฐ๊ฒฐ์ด ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— available์—์„œ ์„ค์ •์„ ๋ณ€๊ฒฝํ•ด์ฃผ๋ฉด enabled๋„ ์ž๋™์œผ๋กœ ๋ณ€๊ฒฝ๋˜๊ธด ํ•ฉ๋‹ˆ๋‹ค.

default ์„ค์ •

site-available์˜ default๋ฅผ vi๋กœ ํŽธ์ง‘ํ•ด์ค๋‹ˆ๋‹ค.

์ €ํฌ๋Š” docker run ๋ช…๋ น์–ด์—์„œ -p 80:8080 ๋ช…๋ น์–ด๋กœ ์ปจํ…Œ์ด๋„ˆ์˜ 8080๋ฒˆ ํฌํŠธ๋ฅผ ์—ด์–ด๋†จ๊ธฐ ๋•Œ๋ฌธ์— ์œ„์˜ ์„ค์ •์„ 80์—์„œ 8080์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์œ—์ค„์ด ํฌํŠธ ๋ฒˆํ˜ธ์ง€์ •, ์•„๋ž˜์˜ ์ค„์ด IPv6๋ฅผ ์œ„ํ•œ ์„ค์ •์ด๋ผ๊ณ  ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๊ทธ ์•„๋ž˜์—” root๋ฅผ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด return ํ•ด์ค„ html ํŒŒ์ผ์ด ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฒฝ๋กœ๋ฅผ ๋„ฃ์Šต๋‹ˆ๋‹ค.

๊ทธ ๋‹ค์Œ ์กฐ๊ธˆ ๋‚ด๋ฆฌ๋ฉด server_name(๋„๋ฉ”์ธ)์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„๋ฉ”์ธ์„ ๊ตฌ๋งคํ–ˆ๋‹ค๋ฉด ๊ทธ๊ฑธ ์ ์œผ๋ฉด ๋˜์ง€๋งŒ... ์ €๋Š” ๋„๋ฉ”์ธ์ด ์—†๋Š” ๊ฑธ์š” ใ… ใ…  ํ‘ํ‘ํ‘ํ‘ ์—†๋Š” ๊ฒฝ์šฐ์—” default ์„ค์ • ๊ทธ๋Œ€๋กœ ๋†”๋‘ฌ๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค.

location ์„ค์ •

์กฐ๊ธˆ ๋ฐ‘์— ๋‚ด๋ ค์˜ค๋ฉด location์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณด์ด๋Š” ์Šฌ๋ ˆ์‰ฌ ๋’ค์— ์˜ค๋Š” ํŠน์ • ์š”์ฒญ์ด ์™”์„ ๋•Œ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ์ง€๋ฅผ ์ ์–ด๋‘๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด naver/blog ๋ผ๋Š” url์ด ๋“ค์–ด์™”์„ ๋•Œ, blog๋ผ๋Š” ํŒŒ์ผ์ด๋‚˜ ํด๋”๋ฅผ ์ฐพ์•„๋ณด๊ณ  ์—†์œผ๋ฉด 404๋ฅผ ๋„์›Œ๋ผ! ์ด๋Ÿฐ ์‹์œผ๋กœ ๋ง์ด์ฃ .

์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ •ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์„ค์ •์ด ์™„๋ฃŒ๋˜๊ณ  ๋‚˜์„œ๋Š” service nginx restart๋กœ ์žฌ์‹œ์ž‘์„ ํ•ด์ค๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๊ณ  ๋‹ค์‹œ ip๋ฅผ ๋“ค์–ด๊ฐ€๋ฉด?

์œ„์™€ ๊ฐ™์€ html ์ด ๋œน๋‹ˆ๋‹ค. ์–ด? ์ €๋Š” html์„ ์„ค์ • ์•ˆ ํ•ด์คฌ๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ์ด๋ ‡๊ฒŒ ๊ธฐ๊น”๋‚˜๊ฒŒ ์•Œ์•„์„œ ๊ฐ€์ ธ๋‹ค ์ฃผ์—ˆ์„๊นŒ์š”?

๊ทธ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ index ์„ค์ •์ž…๋‹ˆ๋‹ค.

์•ž์˜ ๊ฒƒ๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฐพ์•„๋ณธ ๋‹ค์Œ ์—†์œผ๋ฉด ์ด๊ฑธ ์ฐพ์•„๋ณด๊ณ  ์ด๊ฑธ ์ฐพ์•„๋ณด๊ณ ... ์ด๋Ÿฐ ์‹์œผ๋กœ ์ •ํ•ด๋‘” ๊ฒƒ์ด์ฃ . ์ €ํฌ๋Š” ๋งŒ๋“ค์–ด๋‘” ํŒŒ์ผ์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— nginx์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋„ฃ์–ด๋‘” HTML ํŒŒ์ผ์„ ๋„์›Œ์ค€ ๊ฒ๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ์œ„์™€ ๊ฐ™์ด location /blog์™€ /flask๋ฅผ ์„ค์ •ํ•ด์ฃผ๊ณ  ์ดํ›„ ๋ช…๋ น์–ด๋ฅผ root /var/www๋ฅผ ์ง€์ •ํ•ด์คฌ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌ๋ฉด ์–ด๋–ป๊ฒŒ ๋ช…๋ น์„ ์ฒ˜๋ฆฌํ• ๊นŒ์š”?

  1. 123.123.123/blog/asdf.html ์š”์ฒญ์ด ๋“ค์–ด์˜ด
  2. nginx๋Š” ์ด์ œ /blog๋ผ๋Š” ์š”์ฒญ์œผ๋กœ ๋“ค์–ด์™”์œผ๋‹ˆ root ๋ช…๋ น์–ด๋กœ ์ธํ•ด /var/www/blog ๊ฒฝ๋กœ๋กœ ์ด๋™
  3. ํ•ด๋‹น ์žฅ์†Œ์—์„œ asdf.html ์„ ์ฐพ์Œ.
  4. ์ตœ์ข…์ ์œผ๋กœ๋Š” /var/www/blog/asdf.html ํŒŒ์ผ์„ ์ฐพ์•„๋ณด๊ณ  ์žˆ์œผ๋ฉด return ํ•ด์คŒ

ํ•œ๋ฒˆ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด๊ธฐ ์œ„ํ•ด /var/www์— blog์™€ flask๋ผ๋Š” ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  ๊ฐ๊ฐ์˜ index๋ฅผ ์ˆ˜์ •ํ•ด์คฌ์Šต๋‹ˆ๋‹ค.

๋จผ์ € ๊ฐ€์žฅ ๊ธฐ๋ณธ์œผ๋กœ ์•„๋ฌด๊ฒƒ๋„ url์— ์ž…๋ ฅํ•ด์ฃผ์ง€ ์•Š์•˜์„ ๋•Œ์˜ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์œผ๋กœ /blog/๊นŒ์ง€ ์ž…๋ ฅํ•ด์ฃผ์—ˆ์„ ๋•Œ์˜ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ /flask/๊นŒ์ง€ ์ž…๋ ฅํ•ด์ฃผ์—ˆ์„ ๋•Œ์˜ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

์ œ๊ฐ€ HTML ํŒŒ์ผ์„ ์ข€ ์ˆ˜์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ๊ฐ ๋‹ค๋ฅธ ํŒŒ์ผ์„ return ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โž• ์—๋Ÿฌ ํ™•์ธ ๋ฐฉ๋ฒ•
nginx๋Š” ๋ณดํ†ต "ใ…‹ใ…‹ ์ผ๋‹จ ์•ˆ ๋จ ใ…‹ใ…‹ ์›์ธ์€ ๋„ˆ๊ฐ€ ์•Œ์•„์„œ ์ฐพ์–ด~" ์‹์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค ใ… ใ…  ๋„ˆ๋ฌด ์•ผ์†ํ•˜์ฃ .. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ต์…˜์„ ์“ฐ๋ฉด ์–ด๋””์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ์ •๋„๋Š” ์•Œ๋ ค์ค๋‹ˆ๋‹ค. (๋„ˆ๋ฌด ์นœ์ ˆํ•˜๊ฒŒ๋„์š”)
(sudo) nginx -t

nginx๋ฅผ restart ํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋‚˜ fail์ด ๋œน๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์›์ธ์€ ๋˜ ๋งํ•ด์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿด ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ nginx -t ๋ช…๋ น์–ด ์ž…๋‹ˆ๋‹ค.

์•„ํ•˜ root๊ฐ€ rot์œผ๋กœ ์ž…๋ ฅ๋˜์–ด ๋ฐœ์ƒํ•œ ์—๋Ÿฌ์˜€์Šต๋‹ˆ๋‹ค. syntex ์—๋Ÿฌ์˜€๋„ค์š”. ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด๋‹น ํŒŒ์ผ๋กœ ๊ฐ€์„œ vi ํŽธ์ง‘์ด๋ฅผ ์ˆ˜์ •ํ•ด์ค๋‹ˆ๋‹ค.

ํ–…์‚ ํ•˜๋„ค์š” ใ…Žใ…Ž


profile
๋ฌผ์–ด๋ณด๋ฉด ๋Œ€๋‹ตํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์Ÿ์ด

0๊ฐœ์˜ ๋Œ“๊ธ€