Deploy nodejs app - quan1997ap/Backend-app-note GitHub Wiki
Hướng dẫn : https://viblo.asia/p/su-dung-pm2-de-deploy-nodejs-application-6J3ZgxWqlmB
1. Cơ bản
1.1 Create demo app - Nodejs
node app.js
1.2 Install PM2
npm install pm2 -g
hoặc
yarn global add pm2
1.3 Cd vào thư mục chứa app.js
pm2 start app.js
Kết quả
2. Các lệnh cơ bản vs PM2
Dừng app
pm2 stop app.js
Logs app
pm2 logs app-name
Monitoring app
pm2 monit
Sử dụng thêm htop theo dõi các process real-time
sudo apt-get install htop
htop
3. Deployment
Chúng ta cần một file cấu hình chứa các thông tin về các tùy chọn như name, environment, scripts file, logs, node instances... PM2 hỗ trợ chúng ta một file ecosystem.config.js để làm chứa các thông tin này. Chạy command:
pm2 ecosystem
Kết quả
module.exports = {
apps: [
{
name: 'app-name',
script: './server/index.js',
cwd: __dirname, // path-to-project
instances: 2, // default 1
autorestart: true,
exec_mode: 'cluster', // allow scale up app
env: {
NODE_ENV: 'production',
},
},
],
deploy: {
production: {
host: 'xx.yy.zz.vv',
user: 'deploy',
ssh_options: [
'ForwardAgent=yes',
],
ref: 'origin/master',
repo: 'git@github:repo/repo.git',
path: '/path/to/project',
'post-deploy': 'cd /path/to/project && NODE_ENV=production yarn --production=false;yarn build;pm2 startOrReload ecosystem.config.js',
env: {
NODE_ENV: 'production',
},
},
staging: {
user: 'deploy',
host: 'xx.yy.zz.vv',
ref: 'origin/develop',
repo: '[email protected]:repo/repo.git',
path: '/path/to/project',
ssh_options: ['PasswordAuthentication=no', 'StrictHostKeyChecking=no'],
'post-deploy': 'cd /path/to/project && yarn --production=false;yarn build;pm2 startOrReload ecosystem.config.js',
env: {
NODE_ENV: 'production',
},
},
},
};
Để start application thì bạn chạy:
pm2 start ecosystem.config.js
Để deploy application thì lần đầu tiên bạn cần chạy
pm2 deploy production setup
// or staging
pm2 deploy staging setup
Ở lần đầu thì nó sẽ kéo source code của bạn về và setup. Ở các lần tiếp theo thì bạn chỉ cần chạy:
pm2 deploy production update
// or
pm2 deploy staging update