如何使用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
完.