【问题标题】:Expressjs pm2 ignore watch public/images folderExpressjs pm2 忽略 watch public/images 文件夹
【发布时间】:2016-10-30 11:10:40
【问题描述】:

我有一个使用 nodejs 的网站。问题是当用户上传图片时网站停止工作。那是因为我认为文件更改时 PM2 会重新启动服务器。如何解决这个问题呢。 谢谢

【问题讨论】:

  • pm2 不会自动重新启动它管理的进程,除非您特别要求它这样做。或者,您可以将文件保存在工作目录之外的文件夹中,这实际上更好,因为数据应该与代码分开。也请通过发出pm2 logs <process-name> 向我们展示日志文件

标签: javascript node.js express pm2


【解决方案1】:

PM2 有特殊标志--ignore-watch 标志。

尝试在您的 app.js/index.js 所在的同一目录中创建文件 process.json 并粘贴:

{
  "watch": ["server", "client"],
  "ignore_watch" : ["node_modules", "public/images"],
  "watch_options": {
    "followSymlinks": false
  }
}

关于该主题的更多信息:http://pm2.keymetrics.io/docs/usage/watch-and-restart/

【讨论】:

【解决方案2】:

简单解释,来自实际经验

在 expressjs 应用程序的根文件夹中创建一个 json 文件。它可以有任何名称,但为了清楚起见,我使用了 pm2-process.json

{
    "script": "bin/www",
    "watch": true,
    "ignore_watch": ["log"],
    "watch_options": {
        "followSymlinks": false
    },
    "name": "YOUR_PM2_PROCESS_NAME"
}

要从终端启动您的 pm2 服务,在 express 应用程序的根文件夹中:

pm2 start pm2-process.json

就是这样。真的很简单。还有许多其他选项,但这是最基本的功能。

字段说明:

  • 脚本 - 运行 express 应用程序的脚本
  • watch - 一个布尔标志,用于控制 pm2 是否监视(或不监视)文件夹
  • ignore_watch - 如果 watch 已开启,则告诉 pm2 忽略哪些文件夹(换句话说,这是一个 watch monitor 排除列表)
  • name - pm2 进程的名称(“服务”)。将其设置为您选择的应用程序名称。

完整的文档在这里:http://pm2.keymetrics.io/docs/usage/application-declaration/#attributes-available

注意:在上面的示例中,我将 node_modules 文件夹排除在 ignore_watch 数组之外,因为我希望 pm2 在 git pull 和 npm i 导致节点模块发生更改之后重新启动服务。然而,通过编辑数组值很容易忽略 node_modules 或任何其他文件夹(例如 temp、public 等)

【讨论】:

    猜你喜欢
    • 2019-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 2020-06-30
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    相关资源
    最近更新 更多