是否有必要在OpenShift上使用Forever.js?

时间:2014-06-24 19:18:44

标签: javascript node.js openshift forever

我已经在OpenShift的免费套餐上部署了我的第一个Node.js应用程序,它运行良好。

OpenShift崩溃时会自动重启我的Node应用程序,还是必须设置Forever.js?我尝试设置它,它不会工作。运行node_modules/forever/bin/forever start app.js后(工作目录为app-root/repo,本地副本为forever),我得到了此输出:

warn:    --minUptime not set. Defaulting to: 1000ms
warn:    --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info:    Forever processing file: app.js

fs.js:240
  return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
                 ^
Error: ENOENT, no such file or directory '/var/lib/openshift/5397416f5004466c0b000080/.forever/VQMF.log'
    at Object.openSync (fs.js:240:18)
    at Object.startDaemon (/var/lib/openshift/5397416f5004466c0b000080/app-root/runtime/repo/node_modules/forever/lib/forever.js:406:14)
    at /var/lib/openshift/5397416f5004466c0b000080/app-root/runtime/repo/node_modules/forever/lib/forever/cli.js:258:13
    at /var/lib/openshift/5397416f5004466c0b000080/app-root/runtime/repo/node_modules/forever/lib/forever/cli.js:145:5
    at Object.oncomplete (/var/lib/openshift/5397416f5004466c0b000080/app-root/runtime/repo/node_modules/forever/lib/forever.js:358:11)

那么,OpenShift能为我管理我的应用程序的运行状况,还是需要让Forever工作?如果是的话,对我得到的错误有任何想法吗?

2 个答案:

答案 0 :(得分:6)

是的,OpenShift会在崩溃时自动重启您的Node应用程序。 OpenShift不使用forever.js,但它使用node-supervisor。您可以通过要求不存在的东西来测试它。尽快修复它,因为日志可以快速重新启动应用程序。这是OpenShift上的nodejs.log登录,它显示了它正在运行的节点主管:

DEBUG: Running node-supervisor with
DEBUG:   program 'server.js'
DEBUG:   --watch '/var/lib/openshift/53a9e06ae0b8cde26300008e/app-root/data/.nodewatch'
DEBUG:   --ignore 'undefined'
DEBUG:   --extensions 'node|js|coffee'
DEBUG:   --exec 'node'
DEBUG: Starting child process with 'node server.js'
DEBUG: Watching directory '/var/lib/openshift/53a9e06ae0b8cde26300008e/app-root/data/.nodewatch' for changes.

答案 1 :(得分:5)

目前,OpenShift的默认行为涉及使用supervisor来启动,监视和重新启动nodejs应用程序。

以下是nodejs的各种init选项的简要概述:

  1. 如果您的应用包含带有package.json条目(containing the name of your server script)的有效main文件,则OpenShift将使用supervisor初始化您的应用以启动该脚本。< / LI>
  2. 如果您的应用包含force_npm_deploy marker file.openshift/markers/use_npm中的空文件) - 那么OpenShift将只运行npm start。这会运行package.json文件scripts.start实体中定义的任何内容。
  3. 如果所有其他方法都失败,OpenShift将尝试使用server.js(作为后备选项)运行supervisor
  4. 此处提供了一些其他说明:https://www.openshift.com/blogs/10-reasons-openshift-is-the-best-place-to-host-your-nodejs-app#npm