本文共 1950 字,大约阅读时间需要 6 分钟。
PM2 的功能不多做介绍了,总之使用简单,功能强大。
今天实现了本地自动部署node项目到服务器的流程。简单总结下几个注意点。 建议先看git clone git@gitee.com:finley/demo.git
。不行的话配下server生成ssh-key,然后把public key告诉代码仓库服务商,比如coding.net, github。sudo chown ubuntu:ubuntu /home/ubuntu/.pm2/*
不然可能会部署失败。current -- 当前服务运行的文件夹(是source的软链接)
share -- log pid 等共享数据 source -- clone 下来的源代码
module.exports = { /** * Application configuration section * http://pm2.keymetrics.io/docs/usage/application-declaration/ */ apps : [ { name : 'NODE-API', script : 'server.js', env_development: { NODE_ENV: 'development', SERVER_PORT: 8081, LOGSTASH_URL: 'http://localhost/finley/PHP/test.php' }, env_production : { NODE_ENV: 'production', SERVER_PORT: 8081, LOGSTASH_URL: 'http://192.168.100.16:9700' } } ], /** * Deployment section * http://pm2.keymetrics.io/docs/usage/deployment/ */ deploy : { // 项目信息 // 下面的配置是我用什么用户登录哪个服务器,从哪拉代码,项目存到什么位置。拉完执行的脚本是啥 'node1' : { user : 'ubuntu', // 写成数组,可以同时部署到多台服务器 host : '119.254.xxx.xxx', ref : 'origin/develop', repo : 'ssh://git@demo.com/demo.git', // 项目的存放地址,会生成current, source, share目录 path : '/home/ubuntu/node-project', // "ssh_options": ["StrictHostKeyChecking=no", "PasswordAuthentication=no"], "post-deploy" : 'npm install && pm2 startOrRestart ecosystem.config.js --env production' } }};
pm2 deploy ecosystem.config.js node1 setup
这个命令只是拉仓库代码pm2 deploy ecosystem.config.js node1
执行这个命令会执行 post-deploy,运行项目官方说明:As opposed to restart, which kills and restarts the process, reload achieves a 0-second-downtime reload.
简单理解: restart = stop+start reload = 重新读取配置文件 具体用哪个要根据项目运行实际情况,有些项目需要7*24运行,不得stop,这时候用reload比较好。转载地址:http://dfkia.baihongyu.com/