如何使用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 容器本身的钻研和使用. 这些知识更适合作为你的技术储备,以便在需要的时候可以帮你更快的定位问题,并解决问题. 而更深入的学习容器技术的关键在 ...
随机推荐
- Linux系统学习 十三、VSFTP服务—相关文件
常见的FTP服务器程序 IIS.Serv-U (windwards中) wu-ftpd(淘汰了).Proftpd (Linux中) vsftpd(Very Secure ...
- celery配置
celery配置 celery的官方文档其实相对还是写的很不错的.但是在一些深层次的使用上面却显得杂乱甚至就没有某些方面的介绍, 通过我的一个测试环境的settings.py来说明一些使用celery ...
- Linux下安装Redis以及遇到的问题
参考链接:https://www.cnblogs.com/zdd-java/p/10288734.html https://www.cnblogs.com/uncleyong/p/9882843.ht ...
- 安装PS
1:下载溜云库 2:查找PS软件,下载 3:按照教程安装
- C语言程序设计100例之(23):数列求和
例23 数列求和 问题描述 已知某数列前两项为2和3,其后继项根据前面最后两项的乘积,按下列规则生成: ① 若乘积为一位数,则该乘积即为数列的后继项: ② 若乘积为二位数,则该乘积的十位上的数字和个 ...
- Java 添加Word脚注、尾注
Word中的脚注和尾注都是对文本的补充说明.脚注一般是附在书页最左下端的注文,用以解释.说明特定内容:而尾注则是位于文档末尾,用于列出引文的出处.脚注和尾注都可以是针对某些文字或者段落来添加.本文中, ...
- Selenium(十五):unittest单元测试框架(一) 初识unittest
1. 认识unittest 什么是单元测试?单元测试负责对最小的软件设计单元(模块)进行验证,它使用软件设计文档中对模块的描述作为指南,对重要的程序分支进行测试以发现模块中的错误.在python语言下 ...
- 选择企业架构实践公开课的指导?TOGAF+ArchiMate+BangEA,EA工作者必学一门公开课
我发现身边越来越多人谈数字化.谈企业架构,但是感觉谈的总是IT?知道好像不对,但是又好像也无法告诉别人这和传统的IT架构有什么不一样?网上找资料,看了很多也摸不到门路,也不知道别人讲的对不对.对了还好 ...
- 【JS基础语法】---学习roadmap---6 parts
JS基础语法---roadmap Part 1 - 2: Part 3 - 4: Part 5 - 6
- SQL Server清理数据库日志的脚本-干货
USE [master]GOALTER DATABASE AAAAAA SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE AAAAAA SET RECO ...