pm2 가 없다면 설치한다.
npm install -g pm2
pm2 init
init을 하면 ecosystem 파일이 생성된다.
내 설정은 아래와 같다.
module.exports = {
apps : [{
name: 'API',
script: './index.js',
instances: 1,
autorestart: true,
watch: false,
max_memory_restart: '512M',
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
}
}],
deploy : {
production : {
user : 'ec2-user',
key : '$home/.ssh/key.pem',
host : '13.209.56.51',
ref : 'origin/master',
repo : '<https://github.com/almond-bongbong/gns_api.git>',
path : '/deploy/gns-api',
'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production'
}
}
};
<aside> 💡 앱 재 시작에는 restart 대신 reload를 사용하는 편이 낫다. 전자는 프로세스를 즉시 종료시키고 재 시작하기에 접속이 불가능한 시간이 발생할 수 있다. 하지만 후자는 그런 간격이 생기지 않도록 해준다. reload 명령어는 앱 프로세스와 관련된 프로세스를 정리한 후 준비된 상태에서 다시 시작하는 gracefulReload에 해당된다. 그리고 reload 명령어를 사용할 때 현재 실행 중인 프로세스가 없다면 자동으로 start 명령어로 대체한다.
</aside>
pm2 deploy production setup
pm2 deploy ecosystem.config.js production
setup은 첫 배포시에만 해주면 된다.
참고