OpenShift:节点应用程序“无法执行控制启动”

时间:2015-07-10 14:56:01

标签: linux node.js openshift

我提前意识到这是一个模糊的问题,但我很难过我还能在这里尝试一下......

我一直在处理其他SO问题并遵循他们的建议,但到目前为止还没有解决我的问题。

这是我遇到的具体错误。

Stopping NodeJS cartridge
Fri Jul 10 2015 10:36:28 GMT-0400 (EDT): Stopping application 'appname' ...
Fri Jul 10 2015 10:36:29 GMT-0400 (EDT): Stopped Node application 'appname'

Starting NodeJS cartridge
Fri Jul 10 2015 10:36:30 GMT-0400 (EDT): Starting application 'appname' ...

Waiting for application port (8080) become available ...

Application 'appname' failed to start (port 8080 not available)

Failed to execute: 'control restart' for /var/lib/openshift/MYID/nodejs

我的package.json文件是最新的,我的所有依赖项都有scripts: { start: 'node server.js' }属性,但我仍然收到此错误。

如果我通过SSH进入我的current/repo目录并运行node server.js,它可以正常工作。但是,我不能仅使用screen在后​​台运行它。

我也尝试过停止并重新启动,git推送,并通过浏览器重新启动。我很难过,我还可以尝试在OpenShift上运行我的(非常简单的)节点应用程序。

非常感谢任何建议。

2 个答案:

答案 0 :(得分:13)

对于OpenShift节点应用,您需要将起始脚本指定为:main: "server.js",而不是使用scripts。这是由于使用node-supervisor在OpenShift上启动Node应用程序的方式。

答案 1 :(得分:12)

OpenShift节点应用要求您在主要 scripts.start下的 package.json 中提供启动应用的配置

"scripts": {
     "start": "node server.js"
  },
"main": "server.js"

此外,它还需要通过环境变量为您的节点环境提供 IP PORT

for PORT Number       process.env.OPENSHIFT_NODEJS_PORT
for IP                process.env.OPENSHIFT_NODEJS_IP

如果这些变量未在app中使用,则会显示如下错误:

Waiting for application port (8080) become available ...
Application 'appname' failed to start (port 8080 not available)

以下是一个示例,说明如何在节点应用程序中使用这些环境变量(来自源代码):

var server_port = process.env.OPENSHIFT_NODEJS_PORT || 8080
var server_ip_address = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1'

server.listen(server_port, server_ip_address, function () {
console.log( "Listening on " + server_ip_address + ", server_port " + port )
});

来源:https://blog.openshift.com/run-your-nodejs-projects-on-openshift-in-two-simple-steps/

相关文章:Application 'appname' failed to start (port 8080 not available) on open shift node app