前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PM2 node进程管理工具 自动部署小结

PM2 node进程管理工具 自动部署小结

作者头像
mafeifan
发布2018-09-10 12:01:15
1.2K0
发布2018-09-10 12:01:15
举报
文章被收录于专栏:finleyMa

PM2 的功能不多做介绍了,总之使用简单,功能强大。 今天实现了本地自动部署node项目到服务器的流程。简单总结下几个注意点。 建议先看 文档

  1. 先要保证要部署的服务器上(以下简称server)能直接ssh拉仓库代码,比如 git clone git@gitee.com:finley/demo.git。不行的话配下server生成ssh-key,然后把public key告诉代码仓库服务商,比如coding.net, github。
  2. 权限问题,比如server的登录用户是Ubuntu,将来项目要部署在/home/ubuntu下面,可以执行下 sudo chown ubuntu:ubuntu /home/ubuntu/.pm2/* 不然可能会部署失败。
  3. 部署成功后会在配置的项目路径里出现以下三个目录:

current -- 当前服务运行的文件夹(是source的软链接) share -- log pid 等共享数据 source -- clone 下来的源代码

  1. 配置脚本
代码语言:javascript
复制
module.exports = {
  /**
   * Application configuration section
   * http://pm2.keymetrics.io/docs/usage/application-declaration/
   */
  apps : [
    {
      name      : 'NODE-API',
      script    : 'server.js',
      env_development: {
        NODE_ENV: 'development',
        SERVER_PORT: 8081,
        LOGSTASH_URL: 'http://localhost/finley/PHP/test.php'
      },
      env_production : {
        NODE_ENV: 'production',
        SERVER_PORT: 8081,
        LOGSTASH_URL: 'http://192.168.100.16:9700'
      }
    }
  ],

  /**
   * Deployment section
   * http://pm2.keymetrics.io/docs/usage/deployment/
   */
  deploy : {
    // 项目信息
    // 下面的配置是我用什么用户登录哪个服务器,从哪拉代码,项目存到什么位置。拉完执行的脚本是啥
    'node1' : {
      user : 'ubuntu',
      // 写成数组,可以同时部署到多台服务器
      host : '119.254.xxx.xxx',
      ref  : 'origin/develop',
      repo : 'ssh://git@demo.com/demo.git',
      // 项目的存放地址,会生成current, source, share目录
      path : '/home/ubuntu/node-project',
      // "ssh_options": ["StrictHostKeyChecking=no", "PasswordAuthentication=no"],
      "post-deploy" : 'npm install && pm2 startOrRestart ecosystem.config.js --env production'
    }
  }
};
  1. 执行命令, 如果是windows,在CMD中执行没用,建议在git bash下执行。 node1就是要部署的项目名称 pm2 deploy ecosystem.config.js node1 setup 这个命令只是拉仓库代码 pm2 deploy ecosystem.config.js node1 执行这个命令会执行 post-deploy,运行项目

pm2 reload 和pm2 restart 有啥区别

官方说明:As opposed to restart, which kills and restarts the process, reload achieves a 0-second-downtime reload. 简单理解: restart = stop+start reload = 重新读取配置文件 具体用哪个要根据项目运行实际情况,有些项目需要7*24运行,不得stop,这时候用reload比较好。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.02.09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • pm2 reload 和pm2 restart 有啥区别
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档