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

简介: PM2 的功能不多做介绍了,总之使用简单,功能强大。今天实现了本地自动部署node项目到服务器的流程。简单总结下几个注意点。建议先看 文档先要保证要部署的服务器上(以下简称server)能直接ssh拉仓库代码,比如 git clone git@gitee.com:finley/demo.git。

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. 配置脚本
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比较好。

相关文章
|
9天前
|
缓存 JavaScript Unix
Node.js 多进程
10月更文挑战第8天
20 0
|
11天前
|
存储 JavaScript 前端开发
Node.js 常用工具
10月更文挑战第6天
11 2
|
5天前
|
Web App开发 JavaScript 前端开发
Node.js:JavaScript世界的全能工具
Node.js:JavaScript世界的全能工具
|
29天前
|
存储 JavaScript 前端开发
Node 版本控制工具 NVM 的安装和使用(Windows)
本文介绍了NVM(Node Version Manager)的Windows版本——NVM for Windows的安装和使用方法,包括如何安装Node.js的特定版本、列出已安装版本、切换使用不同版本的Node.js,以及其他常用命令,以实现在Windows系统上对Node.js版本的便捷管理。
Node 版本控制工具 NVM 的安装和使用(Windows)
|
10天前
|
JavaScript 网络协议
Node.js 工具模块
10月更文挑战第7天
13 0
|
1月前
|
JavaScript Linux 开发者
一个用于管理多个 Node.js 版本的安装和切换开源工具
【9月更文挑战第14天】nvm(Node Version Manager)是一个开源工具,用于便捷地管理多个 Node.js 版本。其特点包括:版本安装便捷,支持 LTS 和最新版本;版本切换简单,不影响开发流程;多平台支持,包括 Windows、macOS 和 Linux;社区活跃,持续更新。通过 nvm,开发者可以轻松安装、切换和管理不同项目的 Node.js 版本,提高开发效率。
|
1月前
|
消息中间件 网络协议 Python
工具人逆袭!掌握Python IPC,让你的进程从此告别单打独斗
【9月更文挑战第9天】你是否曾遇到多个Python程序像孤岛般无法通信,导致数据孤立、任务难协同的问题?掌握进程间通信(IPC)技术,可助你打破这一僵局。IPC是不同进程间传递数据或信号的机制,在Python中常用的方法有管道、消息队列、共享内存及套接字等。其中,管道适用于父子或兄弟进程间简单数据传递;套接字则不仅限于本地,还能在网络间实现复杂的数据交换。通过学习IPC,你将能设计更健壮灵活的系统架构,成为真正的编程高手。
24 3
|
2月前
|
JavaScript 小程序 Java
【工具】用nvm管理nodejs版本切换,真香!
本文详细介绍了如何使用 nvm(node.js 版本管理工具)解决在不同项目间频繁切换 Node.js 版本的问题。通过实例展示了 A、B 两个项目分别依赖 v14.19.1 和 v16.15.0 版本时的解决方案,并提供了 nvm 的下载、安装及常用命令等实用信息,帮助读者轻松管理 Node.js 版本。文章还包括了卸载已安装的 Node.js、配置环境变量等步骤,确保切换顺畅无阻。
91 0
【工具】用nvm管理nodejs版本切换,真香!
|
2月前
|
JavaScript IDE 前端开发
前端开发工具配置 nodejs & git & IDE
前端开发工具配置 nodejs & git & IDE
|
2月前
|
JavaScript Windows
NodeJs——如何获取Windows电脑指定应用进程信息
NodeJs——如何获取Windows电脑指定应用进程信息
92 0