๋ฐฐํฌ ์๋ตํ ๊ฐ๋ฐํ๊ฒฝ ์คํ
์ด ์น์ฌ์ดํธ๋ ๊ฐ์ธ์ฉ์ผ๋ก ๊ตฌ๋งคํ 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
ย