๋ฐฐํฌ ํ™˜๊ฒฝ ๊ตฌ์„ฑ

๋ฐฐํฌ ์ƒ๋žตํ•œ ๊ฐœ๋ฐœํ™˜๊ฒฝ ์‹คํ—˜

์ด ์›น์‚ฌ์ดํŠธ๋Š” ๊ฐœ์ธ์šฉ์œผ๋กœ ๊ตฌ๋งคํ•œ NAS ์žฅ๋น„์™€ ๊ฐ€์ •์šฉ ์ธํ„ฐ๋„ท์„ ์ด์šฉํ•˜์—ฌ ๊ตฌ๋™๋˜๊ณ  ์žˆ๋‹ค. ๊ทธ๊ฒƒ๋„ ๊ฐœ๋ฐœ๋ชจ๋“œ๋กœ ใ…Žใ…Ž. ๊ทธ๋ž˜์„œ ์—„์ฒญ ๋ถˆ์•ˆํ•  ์ˆ˜ ์žˆ์Œ. NAS์—์„œ ์ œ๊ณตํ•˜๋Š” ํด๋ผ์šฐ๋“œ ๋“œ๋ผ์ด๋ธŒ์— git ํ”„๋กœ์ ํŠธ๋ฅผ ํด๋ก ํ•˜์—ฌ ๋กœ์ปฌ์ด ์•„๋‹Œ ๋ฆฌ๋ชจํŠธ ์„œ๋ฒ„๋ฅผ ๊ฐœ๋ฐœ๊ณผ ๋™์‹œ์— ์šด์˜ํ•˜๋Š” ์‹คํ—˜์ด๋‹ค.
System: - ISP์—์„œ ์ œ๊ณตํ•œ ํ—ˆ๋ธŒ์—์„œ DMZ ์„œ๋ฒ„๋ฅผ NAS๋กœ ํ• ๋‹น - firejune.io ๋„๋ฉ”์ธ์„ CloudFlare๋กœ ์—ฐ๊ฒฐ - ์œ ๋™IP ์ด์Šˆ ๋•Œ๋ฌธ์— DSM์—์„œ CloudFlare๋ฅผ DDNS๋กœ ์‚ฌ์šฉ - NAS ์žฅ๋น„์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉ์ค‘์ธ 80, 443 ํฌํŠธ๋ฅผ ํ’€์–ด์ฃผ๊ธฐ - NAS์— Node.js ์„ค์น˜ - ํด๋ผ์šฐ๋“œ ๋“œ๋ผ์ด๋ธŒ ์‹ฑํฌ๋ชจ๋“œ ๊ตฌ์„ฑ
Enviroment: - ํด๋ผ์šฐ๋“œ ๋“œ๋ผ์ด๋ธŒ๋กœ ์„ค์ •๋œ ๊ฒฝ๋กœ์—์„œ blog ํ”„๋กœ์ ํŠธ ํด๋ก  - ssh๋กœ NAS์— ์ ‘์†ํ•˜์—ฌ ์‹ฑํฌ๋œ blog ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ - ๋””ํŽœ๋˜์‹œ ์„ค์น˜(npm install) - node_modules, .git, .next ๋””๋ ‰ํ† ๋ฆฌ๋Š” ์‹ฑํฌ ํ•ด์ œ - ํ”„๋กœ์ ํŠธ๋ฅผ pm2์—์„œ ๊ฐœ๋ฐœ๋ชจ๋“œ๋กœ ์‹œ์ž‘ ใ„ด sudo pm2 start npm --name "blog" -- start

์‹œ๋‚˜๋ฆฌ์˜ค

IDE์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์—ด๊ณ  ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๋ฉด ์›น์‚ฌ์ดํŠธ์— ๋ณ€๊ฒฝ๋‚ด์—ญ์ด ์‹ค์‹œ๊ฐ„ ๋ฐ˜์˜๋œ๋‹ค. ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋ฐ˜์˜๋˜๊ธฐ ๊นŒ์ง€ 1, 2์ดˆ ์ •๋„ ๋กœ์ปฌ์—์„œ ๊ฐœ๋ฐœ ์„œ๋ฒ„ ๋„์šด๊ฒƒ๊ณผ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š์Œ, ๊ฐœ๋ฐœํ•˜๋Š” ๊ณผ์ •์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋‹ค ๋…ธ์ถœ๋จ ์‹ค์ˆ˜ํ•˜๋Š” ๊ฒƒ ๊นŒ์ง€ ใ„ทใ„ทใ„ทใ„ท, Next.js๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜ค๋ฅ˜๋ฅผ ๋‚ด๋ฉด ์ด๋ฅผ ํ”ผ๋“œ๋ฐฑํ•˜๊ธฐ ์œ„ํ•œ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋‚ด์žฅํ•˜๊ณ  ์žˆ์–ด ์„œ๋ฒ„๊ฐ€ ์ฃฝ์„์ผ์€ ์—†์Œ

๊ด€์ฐฐ

๊ฐœ๋ฐœ ๋ชจ๋“œ๋ฅผ ๋ฆฌ์–ผ๋กœ ์šด์˜ํ•˜๋ฉด ์–ผ๋งˆ๋‚˜ ์•ˆ์ •์ ์ผ ์ˆ˜ ์žˆ์„๊นŒ? ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ์™„์„ฑ๋  ๋•Œ ๊นŒ์ง€ ํ˜„์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๊ด€์ฐฐํ•ด ๋ณผ ์˜ˆ์ •์ด๋‹ค. ์ฃฝ์„์ผ์€ ์—†๊ฒ ์ง€๋งŒ ๋…ธํŒŒ์‹ฌ์— pm2๋กœ ์˜ฌ๋ ธ๋‹ค. next.js๋„ ๋กœ์ปฌ์—์„œ ์„œ๋ฒ„๋ฅผ ์˜ค๋žœ์‹œ๊ฐ„ ๋Œ๋ฆฌ๊ณ  ์žˆ์œผ๋ฉด v8์—์„œ ๋ป‘๋‚˜๋Š” ํ˜„์ƒ์ด ์ข…์ข… ์žˆ๊ธฐ๋Š” ํ•จ. ๊ดœ์ฐฎ์€ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•ด ๋‚ด๋ฉด ๊ทธ์ง€๊ฐ™์€ ์นดํŽ˜24 ๊ฐ€์ƒ์„œ๋ฒ„ ํ˜ธ์ŠคํŒ…์€ ์ด์ œ ์•ˆ๋…•์ด์•ผ.

๊ฒฐ๊ณผ

๊ฐœ๋ฐœ ๋ชจ๋“œ๋Š” ๋„ˆ๋ฌด ๋Š๋ฆฌ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด build ๋””๋ž™ํ† ๋ฆฌ๊ฐ€ ์‹ฑํฌ๋˜๋„๋ก ํ•˜๊ณ  pm2์˜ watch ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด์„œ ๋กœ์ปฌ์—์„œ ๋นŒ๋“œํ•˜๋ฉด pm2์—์„œ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ฐฑ์‹ ํ•˜๋„๋ก ๋˜๋„๋ก ๊ตฌ์„ฑํ•ด ๋ณด์ž.
- pm2.config.js ์ž‘์„ฑ - ๋ณ€ํ™” ๊ฐ์ง€๋ฅผ ์œ„ํ•ด ๋นŒ๋“œID ์ถ”์ถœ ใ„ด export BUILD_ID=$(git rev-parse --short HEAD) - BUILD_ID๊ฐ€ ๊ฐฑ์‹ ๋˜๋ฉด watch์— client๊ฐ€ ์—…๋ฐ์ดํŠธ ๋˜๋„๋ก pm2 config ๊ตฌ์„ฑ ใ„ด sudo pm2 start pm2.config.js --update-env
ย