基于git,使用node的pm2实现项目的自动化部署,服务器环境以centos为例
因为是基于git和node,所以本机和部署项目的服务器都需要安装node和git,然后安装pm2 本地环境比较简单,不赘述,centos下可以借助yum来安装
1yum install -y nodejs 2# 装完以后继续安装pm2,本地环境同理 3npm install pm2 -g 4# 接下来安装git 5yum install -y git 6# 安装完以后可以git -v查看版本
这一步是为了让本地计算机、github、服务器之间建立连接,因此本机和部署项目的服务器都需要添加ssh,这个比较简单,不会的可以参考Github 简明教程
在本地项目根目录添加ecosystem.json !!!注意:因为是json格式,实际使用请删除注释
1{ 2 "apps":[ 3 { 4 "name": "app", // 项目名称 5 "script": "app.js", // 入口文件 6 "env": { 7 "COMMON_VARIABLE": "true" 8 }, 9 "env_production": { 10 "NODE_ENV": "production" // 环境变量 11 } 12 } 13 ], 14 // 环境部署的配置 15 "deploy": { 16 "production": { 17 // 登录服务器的用户名 18 "user":"slevin", 19 // 服务器ip 20 "host": ["12.34.56.78"], 21 // 服务器ssh登录端口,未修改的话一般默认为22 22 "port": "22", 23 // 指定拉取的分支 24 "ref": "origin/master", 25 // 远程仓库地址 26 "repo": "git@github.com:yourName/xxx.git", 27 // 指定代码拉取到服务器的目录 28 "path": "/home/projects/xxx", 29 "ssh_options": "StrictHostKeyChecking=no", 30 "env": { 31 "NODE_ENV": "production" 32 } 33 } 34 } 35}
1git init # 初始化仓库 2git commit -m "init project" # 添加提交信息 3git remote add origin git@github.com:yourName/xxx.git # 指定remote地址 4git push -u origin master # 推送
1cd /home/projects/ 2git clone git@github.com:yourName/xxx.git # 克隆github项目,(非node项目略过下面2步) 3cd xxx 4npm install # 安装依赖
ps:以上步骤首次操作可能会提示你输入github登陆密码
1pm2 deploy ecosystem.json production setup # 首次部署执行一次即可 2pm2 deploy ecosystem.json production
后续开发中,提交本地代码到remote后,只需要执行pm2 deploy ecosystem.json production即可
即是:找不到pm2命令,解决办法,添加pm2的软链接,在服务器端执行:
1# 查找pm2的路径 2whereis pm2 3# pm2: /usr/bin/pm2 /root/node/bin/pm2,添加软连接 4# 5sudo ln -s [查找到的链接] /usr/bin/pm2 6# 即是: sudo ln -s /usr/bin/pm2 /root/node/bin/pm2 /usr/bin/pm2