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

我已经在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是否为我pipe理我的应用程序的健康,还是我需要得到Forever的工作? 如果是这样,关于我得到的错误的任何想法?

是的,OpenShift会在崩溃时自动重启Node应用程序。 OpenShift不使用forever.js,但使用节点监督器 。 你可以通过要求不存在的东西来testing它。 尽快修复它,因为日志可以快速增长重新启动应用程序。 这里是OpenShift上的nodejs.log日志,它显示它正在运行node-supervisor:

 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. 

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

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

  1. 如果您的应用程序包含一个包含 main条目( 包含您的服务器脚本的名称 )的有效package.json文件,则OpenShift将通过使用supervisor来启动该脚本来初始化您的应用程序。
  2. 如果您的应用程序包含force_npm_deploy标记文件 ( .openshift/markers/use_npm的空文件) – 则OpenShift将只运行npm start 。 这将运行您的package.json文件的scripts.start实体中定义的任何内容。
  3. 如果一切都失败,OpenShift将尝试使用supervisor运行server.js (作为后备选项)。

一些额外的笔记可在这里: https : //www.openshift.com/blogs/10-reasons-openshift-is-the-best-place-to-host-your-nodejs-app#npm