0x00 前言
前端部署项目到测试环境,简单粗暴的直接用 gulp 来写,详细流程可以看我总结的文档:
前端代码部署
pm2 大家应该都知道,主要是用来管理 node 进程,但是同样可以用来部署前端代码。
目前 pm2 已经商业化,免费版叫 pm2 runtime
0x01 步骤
全局安装 pm2
1$ sudo npm i pm2 -g
同时服务器上也需要全局安装 pm2
配置SSH
首先需要生成 SSH 密钥,用来连接服务器
1ssh-keygen -t rsa
2ssh-copy-id -i path/to/my/key your_username@server.com
也可以手动添加 public key 到服务器上的 ~/.ssh/authorized_keys
pm2 配置文件
在项目根目录下新建 ecosystem.config.js
1module.exports = {
2 apps: [{
3 name: "app",
4 script: "app.js"
5 }],
6 deploy: {
7 // "production" 是环境名称
8 production: {
9 // SSH key 路径
10 key: `${process.env.HOME}/.ssh/your-privite.key`,
11 // SSH 用户
12 user: "www",
13 // SSH 端口
14 host: ["your.remote.server"],
15 // SSH 配置
16 ssh_options: "StrictHostKeyChecking=no",
17 // GIT 远程分支
18 ref: "origin/master",
19 // GIT 仓库
20 repo: "git@github.com:username/repository.git",
21 // 服务器部署路径
22 path: "/var/www/my-repository",
23 // 安装后置任务
24 'post-setup': "npm install",
25 // 部署后置任务
26 'post-deploy': "npm run build",
27 },
28 }
29}
由于 pm2 是用来部署 node 代码的,需要提供一个 js 文件用来执行,上面配置文件制定了项目根目录下的 app.js
里面写一行 log 即可
1console.log('app is running')
首次部署配置
1$ pm2 deploy production setup
从上面配置文件可知,setup 完成后会执行 npm install
首次部署后 pm2 会在执行文件夹(配置文件中的path) 生成三个文件夹
current - 当前版本代码,可以配置为 nginx 指向,也是 git repo
shared - 里面有log 和pid 等信息
source - git 拉下来的代码
一些部署命令
1# 首次部署命令
2pm2 deploy production setup
3
4# 非首次部署命令
5pm2 deploy production update
6
7# 回退一个版本
8pm2 deploy production revert 1
9
10# 远程执行服务器命令
11pm2 deploy production exec "pm2 reload all"
链接
官方 ssh 部署说明