PM2自动部署代码步骤流程总结


Posted in Javascript onDecember 10, 2018

公司的项目需要自动部署到服务器上,在网上查询后,发现PM2自带的发布程序可以自动部署并运行。

0x01 环境条件

本地环境:window10的WSL ubuntu16.04

服务器环境:ubuntu18.04

使用PM2进行部署,可以先查看官方的文档

这里需要在本地和服务器环境上同时安装好 PM2 、git ,本地PM2可以通过git向github、gitee等仓库提交代码,同时通知服务器的PM2拉取最新的代码,并在拉取成功后运行代码。

0x02 设置本地环境与服务器环境gitee仓库ssh

本地环境

执行 ssh-keygen -t rsa -b 2048 -f pm2deploy -C "PM2 deploy ssh key"

PM2自动部署代码步骤流程总结

执行后将得到本地环境生成的ssh key

执行 ssh-agent bash --login -i

执行 ssh-add pm2deploy

PM2自动部署代码步骤流程总结

执行后将pm2deloy添加到ssh高速代理中去。

将公钥添加入gitee或github中,注意本地环境添加的是个人公钥,而服务器环境需要添加在部署公钥下

PM2自动部署代码步骤流程总结

添加成功以后,本地shell执行git -T git@gitee.com

PM2自动部署代码步骤流程总结

返回successfully后,则说明本地ssh已经部署完成。

添加config

如果你的公钥和私钥是有别名的,需要添加一个配置文件config来说明网站和密钥的对应关系

PM2自动部署代码步骤流程总结

如果有多个 ssh 账号需要配置,在 config 文件里隔行分开写就行

PM2自动部署代码步骤流程总结

服务器环境

服务器环境同理,不同的是服务器环境添加的公钥需要放在部署公钥下

PM2自动部署代码步骤流程总结

0x02 配置git

先将git origin 的地址修改成ssh的别名地址

vim /.git/config

修改origin 的中gitee.com 为别名gitee,然后保存

注意这里的别名是本地的别名gitee,但是git库需要保持一致,所以在服务器上配置的别名也为gitee,只需要配置别名即可,证书还是各有各的证书。

先到项目目录用git将刚刚创建的项目拉取下来,拉取后,我们随便部署一个测试的代码,看是否能提交进gitee
这里我使用的是node的官方测试代码

PM2自动部署代码步骤流程总结

PM2自动部署代码步骤流程总结

传输成功后,我们开始配置PM2的配置文件

0x03 配置PM2

官方说明中只需要配置好这里的ecosystem.config.js 配置文件,并且让本地环境和服务器环境可以通过ssh访问即可实现PM2自动部署

配置ssh

本地生成shh密钥

将密钥写入本地config文件中

将公钥写入到服务器环境中的authorized_keys

配置ecosystem.config.js

使用 pm2 ecosystem 自动生成ecosystem.config.js

ecosystem.config.js:
module.exports = {
    apps : [{
    name: 'test',
    script: 'test.js',

    // Options reference: https://pm2.io/doc/en/runtime/reference/ecosystem-file/
    // 远程服务器上的PM2参数配置
    args: 'one two',   //参数
    instances: 1,     //实例数量
    autorestart: true,  //自动启动:是
    watch: false,     //监视模式:否
    max_memory_restart: '1G',//如果超过内存多少后,将重启实例:1G
    env: {
     NODE_ENV: 'development'
    },
    env_production: {
     NODE_ENV: 'production'
    }
 }],

 deploy : {
  production : {
   user : '远程主机用户名',
   host : '远程主机的ssh-config中的别名',
   port : '远程主机ssh端口',
   ref : 'origin/master',//远程gitee上的分支
   repo : 'git@[gitee别名]:[git库地址]',
   path : '远程服务器上的部署路径',
   'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production'//部署完成后的操作
  }
 }
};

配置完成后,执行 pm2 deploy production setup 初始化PM2的部署

PM2自动部署代码步骤流程总结

以后更新,执行 pm2 deploy production update,则更新新的代码并运行了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
关于js datetime的那点事
Nov 15 Javascript
javascript通过className来获取元素的简单示例代码
Jan 10 Javascript
jquery select 设置默认选中的示例代码
Feb 07 Javascript
JavaScript 获取任一float型小数点后两位的小数
Jun 30 Javascript
jquery点击改变class并toggle的实现代码
May 15 Javascript
JS模拟bootstrap下拉菜单效果实例
Jun 17 Javascript
React Native模块之Permissions权限申请的实例相机
Sep 28 Javascript
使用 Node.js 实现图片的动态裁切及算法实例代码详解
Sep 29 Javascript
js中比较两个对象是否相同的方法示例
Sep 02 Javascript
JS实现骰子3D旋转效果
Oct 24 Javascript
JavaScript隐式类型转换代码实例
May 29 Javascript
Vue OpenLayer 为地图绘制风场效果
Apr 24 Vue.js
vue路由前进后退动画效果的实现代码
Dec 10 #Javascript
Vue.js子组件向父组件通信的方法实例代码详解
Dec 10 #Javascript
vue 基于element-ui 分页组件封装的实例代码
Dec 10 #Javascript
JavaScript对象拷贝与赋值操作实例分析
Dec 10 #Javascript
express 项目分层实践详解
Dec 10 #Javascript
JS选取DOM元素常见操作方法实例分析
Dec 10 #Javascript
微信小程序分享海报生成的实现方法
Dec 10 #Javascript
You might like
php ZipArchive压缩函数详解实例
2013/11/06 PHP
destoon实现首页显示供应、企业、资讯条数的方法
2014/07/15 PHP
JSQL 批量图片切换的实现代码
2010/05/05 Javascript
js 验证密码强弱的小例子
2013/03/21 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
2013/11/13 Javascript
JS根据key值获取URL中的参数值及把URL的参数转换成json对象
2015/08/26 Javascript
JavaScript转换与解析JSON方法实例详解
2015/11/24 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
详解vue 配合vue-resource调用接口获取数据
2017/06/22 Javascript
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
2019/04/04 Javascript
详解微信小程序获取当前时间及日期的方法
2019/04/28 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
JS多个异步请求 按顺序执行next实现解析
2019/09/16 Javascript
原生js实现九宫格拖拽换位
2021/01/26 Javascript
Python中捕捉详细异常信息的代码示例
2014/09/18 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
2018/03/22 Python
python查看模块安装位置的方法
2018/10/16 Python
python xlwt如何设置单元格的自定义背景颜色
2019/09/03 Python
python实现发送form-data数据的方法详解
2019/09/27 Python
学python安装的软件总结
2019/10/12 Python
Python random模块制作简易的四位数验证码
2020/02/01 Python
使用Keras实现简单线性回归模型操作
2020/06/12 Python
python db类用法说明
2020/07/07 Python
python利用pytesseract 实现本地识别图片文字
2020/12/14 Python
马德里运动鞋商店:Nigra Mercato
2020/02/16 全球购物
自行车租赁公司创业计划书
2014/01/28 职场文书
公司门卫管理制度
2014/02/01 职场文书
2014年前台个人工作总结
2014/11/14 职场文书
2015元旦文艺汇演主持稿(开场白+结束语)
2014/12/14 职场文书
2015学校师德师风工作总结
2015/04/22 职场文书
文艺委员竞选稿
2015/11/19 职场文书
医院中层管理人员培训心得体会
2016/01/11 职场文书
2016年机关单位节能宣传周活动总结
2016/04/05 职场文书