正文
CentOS 6 配置PM2一键发布项目
PM2 Runtime是具有内置Load Balancer的Node.js应用程序的生产过程管理器。它允许您永久保持应用程序的活动,无需停机即可重新加载它们,并促进常见的Devops任务。
1) 环境准备
需要安装的软件:
- 本地及服务器都要安装
Nodejs
- 本地及服务器都要安装
Git
- 本地及服务器都要安装
pm2
(全局安装)
配置好本地及服务器都可以用ssh
连接git
仓库。
2) 配置PM2
先来到本地的项目根目录,执行命令
pm2 ecosystem
这时会在当前目录生成配置文件模板ecosystem.config.js
,用编辑器打开模板文件ecosystem.config.js
,文件内容如下:
module.exports = {
/**
* Application configuration section
* http://pm2.keymetrics.io/docs/usage/application-declaration/
*/
apps : [
// First application
{
name : 'pm2test',//将慕名称
script : 'server.js',//服务器启动文件
env: {
COMMON_VARIABLE: 'true'
},
env_production : {
NODE_ENV: 'production'
}
}
],
/**
* Deployment section
* http://pm2.keymetrics.io/docs/usage/deployment/
*/
deploy : {
production : {//生产环境部署
user : 'root',//ssh登录用户名
host : '0.0.0.0',//服务器ip
port : '000',//ssh端口号
ref : 'origin/master',//git仓库分支
repo : '[email protected]:lyswhut/pm2test.git',//git仓库地址
path : '/home/www/pm2test/production',//服务器目录
// 'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production'//每次部署时要在服务器执行的命令
"pre-deploy-local": "echo 'Deploy Done!'",//每次部署时要在本地执行的命令
},
dev : {
user : 'root',
host : '0.0.0.0',
port : '000',
ref : 'origin/master',
repo : '[email protected]:lyswhut/pm2test.git',
path : '/home/www/pm2test/development',
// 'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env dev',
"pre-deploy-local": "echo 'Deploy Done!'",
env : {
NODE_ENV: 'dev'
}
}
}
};
文件部分内容我做了说明,更多详情请移步官方文档: http://pm2.keymetrics.io/docs/usage/deployment/
配置好该文件后把它提交到git
仓库:
git add .
git commit -m 'add pm2 ecosystem'
git push origin master
然后初始化远程文件夹:
pm2 deploy ecosystem.config.js production setup
部署代码:
pm2 deploy ecosystem.config.js production
这样就完成了PM2的一键部署,以后在本地修改了代码后,如果要更新服务器的代码,执行在本地执行 pm2 deploy ecosystem.config.js production
即可自动更新服务器代码!
3) 过程中可能会遇到的问题:
-
提示
Permission denied (publickey,gssapi-keyex,gssapi-with-mic)
可能是本地与服务器的ssh链接失败,检查下本地与服务器的ssh连接,手动用ssh连一下看是否正常,用ssh [email protected] -p xx
看能不能连上(x
是你的服务器ip与端口号) -
提示
bash: git: command not found
尝试运行yum install git
-
提示
bash: npm: command not found
建立软链即可解决:
whereis pm2
pm2: /opt/nodejs/bin/pm2
sudo ln -s /opt/nodejs/bin/pm2 /usr/bin/pm2
注:若whereis pm2
输出空,则直接执行sudo ln -s xxx/bin/pm2 /usr/bin/pm2
,其中xxx
为你nodejs
的安装目录。
- 提示
/usr/bin/env: node: 没有那个文件或目录
参照上面的bash: npm: command not found
解决方法
评论
一键发布项目
配置PM2一键发布项目