本地和咱们的远程服务器,必须都安装有git,pm2,以及nodejs环境。实际上配置自动化发布本地代码就到远程服务器。省去了远程服务器的登陆过程,若是项目小还没关系,可是项目过大,不可能每一个人都去登陆服务器主机,并且中途发布的过程通过jit远程仓库之后,能够增长代码的安全性和规范性,这样是谁在什么时候何地修改的代码都有记录,也增长了项目的稳定性。因此这也是为何推荐使用自动发布的缘由。而咱们之因此使用PM2软件,是由于他相对于forever有着更强大之处,见下图:html
下面再简述一下本地,git,服务器在发布时候的流程图,见下图:node
(三)开始发布git
一、配置本地和服务器git。这里咱们使用的代码仓库为码云,由于码云服务器在国内,响应速度更快一些,关键是私人仓免费的多。gitub是要收钱滴。划重点,我找了好久她两的区别,就是收费问题。下面来看配置步骤:npm
ssh-keygen -t rsa -b 4096 -C 'g376482a@163.com'
1 git config --global user.name"gede" 2 git config --global user.email"g376482a@163.com"
eval "$(ssh-agent -s)"
git clone git@gitee.com:qjnugede/ice.git
二、配置好git就能够开始咱们的自动部署了,在部署以前,咱们先进行一步添加本地ssh到服务器的操做,这样就省区了每次发布部署代码都要频繁输入服务器密码的麻烦,步骤以下:json
ssh-copy-id -i .ssh/id_rsa.pub root@101.132.109.40
三、自动化部署代码 安全
1 { 2 "apps": [{ 3 "name": "ice", //对应Nginx上的配置 4 "script": "server.js", //入口文件 5 "env": { 6 "COMON_VARIABLE": "true" 7 }, 8 "env_production": { 9 "NODE_ENV": "production" 10 } 11 }], 12 "deploy": { 13 "production": { 14 "user": "root", 15 "host": ["101.132.109.40"], //服务器ip地址 16 "port": "22", //登陆端口 17 "ref": "origin/master", //git仓库对应的项目目录 18 "repo": "git@gitee.com:qjnugede/ice.git", 19 "path": "/www/ice/production", //要部署到服务器哪一个位置,若是没有会自动建立 20 "ssh_options": "StrictHostKeyChecking=no", 21 //构建在发布 22 // "post-deploy": "npm install --registry=https://registry.npm.taobao.org && grunt build && pm2 startOrRestart ecosystem.json --env production", 23 "pre-deploy-local":"echo 'Deploy Done!'", //提示发布进程 24 "env": { 25 "NODE_ENV": "production" 26 } 27 }} 28 }
1 const http = require('http'); 2 3 const hostname = '127.0.0.1'; 4 const port = 3000; 5 6 const server = http.createServer((req, res) => { 7 res.statusCode = 200; 8 res.setHeader('Content-Type', 'text/plain'); 9 res.end('Hello finaish\n'); 10 }); 11 12 server.listen(port, hostname, () => { 13 console.log(`Server running at http://${hostname}:${port}/`); 14 });
1 pm2 deploy ecosystem.json production setup
pm2 deploy ecosystem.json production
1 export NVM_DIR="$HOME/.nvm" 2 [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm 3 [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nv
配置好之后,系统会自动将变量添加到咱们的系统总环境变量.bashrc里面,只不过被添加到了最后一行,这也是咱们咱们问题的出处。进入到root 目录,打开.bashrc找到关于node.js环境变量的代码,将其添加到第一行便可解决问题,最后文件如图: bash
pm2 delete server
到这里咱们的自动化部署教程就结束了。谢谢观看。若有问题请联系 g376482a@163.com服务器