pm2 로 React+Next.js 로 구성된 어플리케이션를 무중단 배포 하고자 함.
build
먼저, 어플리케이션 build를 실행 함.
npm run build
또는 package.json의 scripts에 prestart
를 다음과 같이 추가 해주면 npm start
를 실행 할 때 자동으로 prestart
가 먼저 실행되고, prestart
의 명령대로 build가 이루어져 npm run build
를 따로 실행 안 해도 됨.
package.json
"scripts": {
"dev": "next -p 3000",
"build": "next build",
"prestart": "npm run build",
"start": "next start -p 80"
},
pm2 등록
package.json
"scripts": {
...
"start": "next start -p 80"
...
},
cmd
pm2 --name 어플리케이션이름 start npm -- start
위의 명령어 실행 후 사이트 접속 했을 경우, 페이지가 나타나지 않으면 제대로 실행이 되지 않은 것이다.
( pm2 목록은 생성 되었으나, 사이트를 실제로 접속 했을 경우, 페이지가 뜨지 않았다.)
필자는 그러하였고, pm2 목록을 지우고 다음과 같은 명령어로 새로 실행하였다.
pm2 start "npm run start" --name 어플리케이션이름