如何使用pm2一键部署node应用
准备工作
- 准备一台linux服务器(本文档以阿里centos为例)
- 安装nodejs、git、pm2等环境
- 项目代码
- 本地已经安装用于连接 Linux 实例的工具,如 Xshell
基本流程
前两步传送门,在基本环境搭建好以后我们还要做一些其他的简单而重要的事情
- 配置key 使本地和服务器具备读写远程仓库的能力
这里我们存放的是项目代码的仓库以github为例,但是仓库需要加密,防止其他人篡改你的代码,但是加密的密钥从哪来呢,传送门,这里有各个系统生成密钥的方法,按照步骤执行即可。
然后登录你的github后访问 https://github.com/settings/keys
把上面生产的key填写在其中就可以了,title可以随意填写,我一般填写为key的宿主便于后期维护。
注意:我们要分别在本地和服务器上生成key添加到仓库中。如果你已经具备项目仓库,这只需执行服务器上的步骤。
- 将本地的项目同步到仓库
- 在服务器clone项目看服务器是否具有拉取项目的权限。
- 在本地和服务器下载并安装pm2,尽量保持两者的版本一致。
- 项目中加入pm2的配置文件
deploy.yml
apps:
- script : server.js // 发布时需要执行的脚本
name : 'vue-admin' // 项目名
watch : true //是否监控
env : //环境变量
NODE_ENV: development
env_production:
NODE_ENV: production
deploy :
production : //生产环境发布
user : root //主机用户名(centos的登录用户名)
key : C:/key/SSH-ubuntu.pem //主机密钥文件
host :
- 120.78.174.212 //主机ip
port : 22 // 端口
ref : origin/master //仓库分支
repo : git@github.com:artiely/vue-admin.git //仓库地址
path : /www/ant-design-pro/production //服务器项目的部署地址(确保文件夹存在)
ssh_options : StrictHostKeyChecking=no // 是否检查密钥
pre-deploy : git fetch --all //发布前的钩子,拉取项目
post-deploy : 'npm install --ignore-scripts && pm2 startOrRestart deploy.yml --env production'// 发布时的钩子,先安装依赖再启动pm2以生产环境
env :
NODE_ENV : production
- 第一次发布production需先setup
pm2 deploy deploy.yml production setup
- 发布
pm2 deploy deploy.yml production
每次项目更新后只要同步到仓库后都可以再次执行pm2 deploy deploy.yml production以实时预览更新的内容。
当然还可以通过npm script或github webhook使事情变得更简单,再聊咯。
实例地址: https://github.com/artiely/vue-admin
完.
如何使用pm2一键部署node应用的更多相关文章
- 使用pm2自动化部署node项目
1.pm2简介 pm2(process manager)是一个进程管理工具,维护一个进程列表,可以用它来管理你的node进程,负责所有正在运行的进程,并查看node进程的状态,也支持性能监控,负载均衡 ...
- docker学习实践之路[第四站]利用pm2镜像部署node应用
拉取keymetrics/pm2-docker-alpine:8镜像 docker pull keymetrics/pm2-docker-alpine: [8]为node镜像的版本号: 建立Docke ...
- 使用 pm2 优雅的部署 node 程序
使用 pm2 优雅的部署 node 程序 # 启动并监控名字为 XXX 的 npm run start:dev 命令 pm2 start npm --watch --name XXX -- run s ...
- 在阿里云创建子域名,配置nginx,使用pm2部署node项目到ubuntu服务器
配置域名 在阿里云找到主域名 进入主域名之后,右上角添加解析,添加子域名, 记录类型选择cname,主机记录填写子域名的名称,记录值为主域名,至此阿里云已经配置好了. 检查nginx安装 首先检查服务 ...
- pm2部署node应用
背景: 很早就知道了pm2的强大功能,部署,多进程部署,负载均衡等等,但是一直没有取尝试使用,每次写完代码就没关心部署的事了.最近有空就想着把pm2的部署流程走一遍,顺便整理出来. 环境: 1.本地: ...
- 如何线上部署node.js项目
来源:http://blog.csdn.net/chenlinIT/article/details/73343793 前言 最近工作不是很忙,在空闲时间学习用node+express搭建自己的个人博客 ...
- 阿里云部署Node.js项目(CentOS)
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又 ...
- 使用docker-compose 一键部署你的分布式调用链跟踪框架skywalking
一旦你的程序docker化之后,你会遇到各种问题,比如原来采用的本地记日志的方式就不再方便了,虽然你可以挂载到宿主机,但你使用 --scale 的话,会导致 记录日志异常,所以最好的方式还是要做日志中 ...
- Kubernetes一键部署利器:kubeadm
要真正发挥容器技术的实力,你就不能仅仅局限于对 Linux 容器本身的钻研和使用. 这些知识更适合作为你的技术储备,以便在需要的时候可以帮你更快的定位问题,并解决问题. 而更深入的学习容器技术的关键在 ...
随机推荐
- memcache和redis缓存对比及我为什么选择redis
对比结论 1. 性能上: 性能上都很出色,具体到细节,由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高.而在100k以 ...
- n个数字相加
求s=a+aa+aaa+aaaa+aa...a的值 其中a是一个数字,多少个数字相加由键盘输入控制 a = int(input("数字:")) count = int(input( ...
- APScheduler学习
说明 APScheduler是一个 Python 定时任务框架,使用起来十分方便.提供了基于日期.固定时间间隔以及 crontab 类型的任务,并且可以持久化任务.并以 daemon 方式运行应用. ...
- 冒泡排序(C语言)
# include<stdio.h> int main(void) { int arr[10]={5,4,7,9,2,3,1,6,10,8}; //定义一个位排序的数组 int i; // ...
- javabean的内省(Introspector)
内省是 Java 语言对 Bean 类属性.事件的一种缺省处理方法.例如类 A 中有属性 name, 那我们可以通过 getName,setName 来得到其值或者设置新的值. 通过 getName/ ...
- 【西北师大-2108Java】第十一次作业成绩汇总
[西北师大-2108Java]第十一次作业成绩汇总 作业题目 面向对象程序设计(JAVA) 第13周学习指导及要求 实验目的与要求 (1)掌握事件处理的基本原理,理解其用途: (2)掌握AWT事件模型 ...
- redis为什么是单线程而且速度快?
redis支持的5种数据类型: 1.String(字符串) 2.List(数组或列表) 3.Set(集合) 4.Hash(哈希或字典) 5.ZSet(有序集合) 数据库的工作模式按存储方式可分为: 硬 ...
- Java向上下转型中的陷阱{详细}
1: 多态 多态时继承下面的产物,之所以存在向上向下转型的目的,就是解决参数传递的不变形,体现面向接口编程的重要性, 1.1 方法的多态性 ①. 方法的重载:同一个方法名称可以根据参数的类型或 ...
- 深蓝词库转换2.5发布——支持微软五笔,支持Linux和macOS和更多命令行功能
最近利用晚上的时间,对很久没有新版本发布的深蓝词库转换进行了版本升级.本次升级主要包含的功能包括: 一.支持Win10自带的微软五笔输入法用户自定义短语的导入导出. 1.在转换输入法词库列表中选择“W ...
- 每日一题LeetCode 8. 字符串转换整数 (atoi)
问题描述 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非空字符为正或者负号时,则将 ...