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 相关文章推荐
jQuery修改li下的样式以及li下的img的src的值的方法
Nov 02 Javascript
javascript数组排序汇总
Jul 07 Javascript
javascript中对变量类型的判断方法
Aug 09 Javascript
js获取本机操作系统类型的两种方法
Dec 19 Javascript
Javascript中神奇的this
Jan 20 Javascript
利用AngularJs实现京东首页轮播图效果
Sep 08 Javascript
判断数组的最佳方法(推荐)
Oct 11 Javascript
详解React-Router中Url参数改变页面不刷新的解决办法
May 08 Javascript
vue兄弟组件传递数据的实例
Sep 06 Javascript
jQuery实现文本显示一段时间后隐藏的方法分析
Jun 20 jQuery
JSON 入门教程基础篇 json入门学习笔记
Sep 22 Javascript
使用js获取身份证年龄的示例代码
Dec 11 Javascript
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中OR与|| AND与&&的区别总结
2013/10/26 PHP
yii分页组件用法实例分析
2015/12/28 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
javascript 简练的几个函数
2009/08/29 Javascript
JS实现简单的顶部定时关闭层效果
2014/06/15 Javascript
jQuery实现简单的日期输入格式化控件
2015/03/12 Javascript
Bootstrap中的Panel和Table全面解析
2016/06/13 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
2018/04/03 Javascript
详解element-ui设置下拉选择切换必填和非必填
2019/06/17 Javascript
Node.js学习之内置模块fs用法示例
2020/01/22 Javascript
详解小程序横屏方案对比
2020/06/28 Javascript
[46:55]完美世界DOTA2联赛决赛 FTD vs Phoenix 第三场 11.08
2020/11/11 DOTA
Python数据库的连接实现方法与注意事项
2016/02/27 Python
Python随机函数random()使用方法小结
2018/04/29 Python
Python列表解析配合if else的方法
2018/06/23 Python
Python中的函数式编程:不可变的数据结构
2018/10/08 Python
使用PIL(Python-Imaging)反转图像的颜色方法
2019/01/24 Python
不到20行代码用Python做一个智能聊天机器人
2019/04/19 Python
python基于socket进行端口转发实现后门隐藏的示例
2019/07/25 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
2019/10/18 Python
django模板获取list中指定索引的值方式
2020/05/14 Python
CSS3实现酷炫的3D旋转透视效果
2019/11/21 HTML / CSS
HTML5进阶段内联标签汇总(小篇)
2016/07/13 HTML / CSS
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
奥地利婴儿用品和玩具购物网站:baby-markt.at
2020/01/26 全球购物
Can a struct inherit from another struct? (结构体能继承结构体吗)
2016/09/25 面试题
运动会邀请函范文
2014/02/06 职场文书
中青班党性分析材料
2014/02/16 职场文书
《雨点儿》教学反思
2014/04/14 职场文书
毕业评语大全
2014/05/04 职场文书
2015年学校党支部工作总结
2015/04/01 职场文书
2015年教导处教学工作总结
2015/07/22 职场文书
pandas求平均数和中位数的方法实例
2021/08/04 Python
JavaScript 反射学习技巧
2021/10/16 Javascript
Python采集爬取京东商品信息和评论并存入MySQL
2022/04/12 Python
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android