๐Ÿ“Œ ๋“ค์–ด๊ฐ€๋ฉฐ

EC2๋ฅผ ์ด์šฉํ•ด ์„œ๋ฒ„ ๋ฐฐํฌ๋ฅผ ํ•œ ํ›„, ์žฅ์‹œ๊ฐ„ ์ž…๋ ฅ์ด ์—†์œผ๋ฉด ์„œ๋ฒ„๊ฐ€ ๋‹ซํžˆ๊ฒŒ ๋œ๋‹ค.

์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค ๋งค๋‹ˆ์ € ์ฆ‰, PM2๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

โœ” ์‹ค์Šต์€ vscode ํ„ฐ๋ฏธ๋„์—์„œ ์ง„ํ–‰ํ•˜๋ ค๊ณ ํ•œ๋‹ค. ์ด๋ฅผ ec2 ํ„ฐ๋ฏธ๋„์—์„œ ๋™์ผํ•˜๊ฒŒ ์ง„ํ–‰ํ•˜๋ฉด ๋œ๋‹ค!

 

 

 ๐Ÿ“Œ PM2 ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ๋ฒ•

1. ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ์—์„œ PM2๋ฅผ ์ „์—ญ์œผ๋กœ ์„ค์น˜ํ•œ๋‹ค.

$ cd <ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ>
$ yarn global add pm2

โœ” yarn ๋Œ€์‹  npm์„ ์‚ฌ์šฉํ•  ์‹œ (-g๋Š” ์ „์—ญ ์„ค์น˜ ์˜ต์…˜)

$ npm install pm2 -g

2. yarn build๋ฅผ ํ†ตํ•ด typescript์ฝ”๋“œ๋ฅผ javascript๋กœ ๋ณ€ํ™˜ (์‹คํ–‰์ด ์ œ๋Œ€๋กœ ๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•จ)

$ yarn build

์„œ๋ฒ„๊ฐ€ ์ž˜ ์‹คํ–‰๋œ๋‹ค๋ฉด ์„ฑ๊ณต!

 

3. dist ํด๋” ํ™•์ธ

ํ•ด๋‹น ์ฝ”๋“œ์— dist ํด๋”๊ฐ€ ์ƒ๊ธด๋‹ค.

๋งŒ์•ฝ dist ํด๋”๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š์•˜๋‹ค๋ฉด tsconfig.json๋กœ ๋“ค์–ด๊ฐ€์„œ "outDir"๊ฐ€ "./dist"๋กœ ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

{
  "compilerOptions": {
    "target": "es6",
    "allowSyntheticDefaultImports": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "forceConsistentCasingInFileNames": true,
    "skipLibCheck": true,
    "moduleResolution": "node",
    "module": "commonjs",
    "pretty": true,
    "sourceMap": true,
    "outDir": "./dist", //์—ฌ๊ธฐ!!
    "allowJs": true,
    "noEmit": false,
    "esModuleInterop": true,
    "typeRoots": ["./src/types/express.d.ts", "./node_modules/@types"]
  },
  "include": ["./src/**/*"],
  "exclude": ["node_modules", "tests"]
}

โœ” ํ•ด์ปคํ†ค ๋•Œ build ์˜ค๋ฅ˜๊ฐ€ ๋‚œ ์ ์ด ์žˆ์—ˆ๋Š”๋ฐ mongoose ๊ด€๋ จ ์—๋Ÿฌ์˜€๋‹ค.

๋ชฝ๊ตฌ์Šค ๋ฒ„์ „์ด ์—…๋ฐ์ดํŠธ ๋˜๋ฉด์„œ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์™€ ์ถฉ๋Œ์ด ๋‚ฌ๋˜ ๊ฒƒ์ด๋‹ค.

์ด๋Ÿด ๊ฒฝ์šฐ pakage.json์—์„œ "mongoose": "^5.12.10" ๋ฒ„์ „์œผ๋กœ ๋ฐ”๊พธ๋ฉด ๋œ๋‹ค!

 

4. PM2 ์‹คํ–‰

yarn buildํ•ด์„œ ์‹คํ–‰์‹œ์ผฐ๋˜ ์„œ๋ฒ„๋Š” ^C๋กœ ์ค‘์ง€ํ•˜๊ณ  ํ•ด๋‹น ํ„ฐ๋ฏธ๋„์—์„œ pm2๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

$ pm2 start dist

 

 

 ๐Ÿ“Œ PM2 ๊ธฐ๋ณธ ๋ช…๋ น์–ด ๋ฐ ์œ ์šฉํ•œ ์˜ต์…˜

  • pm2 start <jsํŒŒ์ผ>: pm2๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค. (ํ˜„์žฌ ์‹ค์Šต์—์„œ๋Š” ts์—์„œ js๋กœ ๋ฐ”๊พผ ํŒŒ์ผ์ด dist)
  • --watch ์˜ต์…˜: ์ž๋™ ๋ฆฌ๋กœ๋“œํ•ด์ค€๋‹ค. (pm2๋ฅผ ์‹คํ–‰์‹œํ‚จ ํ›„ ์ฝ”๋“œ ์ˆ˜์ •ํ–ˆ์„ ์‹œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ž๋™์œผ๋กœ ๋ฆฌ๋กœ๋“œ ํ•ด์ค€๋‹ค.)
  • pm2 kill: pm2 ์ข…๋ฃŒ์‹œํ‚จ๋‹ค.
  • pm2 list: ์‹คํ–‰ ์ค‘์ธ ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.
  • pm2 stop <jsํŒŒ์ผ>: ํ•ด๋‹น ์„œ๋ฒ„๋ฅผ ์ค‘์ง€์‹œํ‚จ๋‹ค.
  • pm2 restart <jsํŒŒ์ผ>: ํ•ด๋‹น ์„œ๋ฒ„๋ฅผ ์žฌ์‹œ์ž‘ํ•œ๋‹ค.
  • pm2 monit: pm2 ์‹คํ–‰ ์ƒํ™ฉ์„ ํ•œ ๋ฒˆ์— ๋ณด์—ฌ์ค€๋‹ค.
  • pm2 logs: ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ pm2 log ํ™•์ธํ•œ๋‹ค. (์˜ค๋ฅ˜ ํ™•์ธ ๊ฐ€๋Šฅ)

 

โœ” ์ฐธ๊ณ : 28th SOPT SERVER 7์ฐจ ์„ธ๋ฏธ๋‚˜ ์ž๋ฃŒ

+ Recent posts