如何使用pm2一键部署node应用

准备工作

  1. 准备一台linux服务器(本文档以阿里centos为例)
  2. 安装nodejs、git、pm2等环境
  3. 项目代码
  4. 本地已经安装用于连接 Linux 实例的工具,如 Xshell

基本流程

前两步传送门,在基本环境搭建好以后我们还要做一些其他的简单而重要的事情

  1. 配置key 使本地和服务器具备读写远程仓库的能力

这里我们存放的是项目代码的仓库以github为例,但是仓库需要加密,防止其他人篡改你的代码,但是加密的密钥从哪来呢,传送门,这里有各个系统生成密钥的方法,按照步骤执行即可。

然后登录你的github后访问 https://github.com/settings/keys


把上面生产的key填写在其中就可以了,title可以随意填写,我一般填写为key的宿主便于后期维护。

注意:我们要分别在本地和服务器上生成key添加到仓库中。如果你已经具备项目仓库,这只需执行服务器上的步骤。

  1. 将本地的项目同步到仓库
  2. 在服务器clone项目看服务器是否具有拉取项目的权限。
  3. 在本地和服务器下载并安装pm2,尽量保持两者的版本一致。
  4. 项目中加入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
  1. 第一次发布production需先setup
pm2 deploy deploy.yml production setup
  1. 发布
pm2 deploy deploy.yml production

每次项目更新后只要同步到仓库后都可以再次执行pm2 deploy deploy.yml production以实时预览更新的内容。
当然还可以通过npm script或github webhook使事情变得更简单,再聊咯。

实例地址: https://github.com/artiely/vue-admin

完.

posted @ 2019-11-20 14:30  artiely  阅读(633)  评论(0编辑  收藏  举报