Nodejs openshift app部署的代码无效

时间:2017-01-31 19:39:10

标签: node.js openshift

我正在研究nodejs app,我写了服务器监听代码,然后我将代码部署到openshift托管中,我得到503响应,在本地如果我运行此代码它正常工作。

代码:

var http = require('http');
var express = require('express');
var fs      = require('fs');


var app = express();
app.set('port', process.env.OPENSHIFT_NODEJS_PORT || 8080);
app.set('ip', process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1');

http.createServer(app).listen(app.get('port'), app.get('ip'), function(){
    console.log('Express server listening on port ' + app.get('port'));
});

app.get('/', function (req, res) {
    res.send('Hello World!');
});

2 个答案:

答案 0 :(得分:2)

你传递了OPENSHIFT_NODEJS_IP变量吗? 通常问题是nodejs应用程序正在监听IP 127.0.0.1,就像在这种情况下一样,但应该在0.0.0.0上。 如果这没有帮助,请提供有关如何在OpenShift中创建应用程序的更多详细信息。

答案 1 :(得分:1)

以下是一些可能有助于确定问题的技巧。我接近它的第一种方法是将ssh插入OpenShift盒式磁带。假设您的应用程序的名称是hello_world:

rhc ssh -a hello_world

进入后,输入:

lsof -i | grep node

这应列出正在运行的节点进程以及每个正在侦听的ips和端口。我有两个节点应用程序正在运行,所以我的输出如下所示:

node    23028     3389   11u  IPv4 518408054      0t0  TCP 127.6.158.129:8097 (LISTEN)
node    23028     3389   12u  IPv4 518408056      0t0  TCP 127.6.158.129:8080 (LISTEN)

因此我的节点应用程序正在侦听除localhost之外的实际IP地址。我的猜测是你会看到这种效果:

node    23028     3389   11u  IPv4 518408054      0t0  TCP 127.0.0.1:8080 (LISTEN)

接下来,检查您的环境:

env | grep OPENSHIFT_NODEJS
我的样子如下:

OPENSHIFT_NODEJS_PORT=8080
OPENSHIFT_NODEJS_IP=127.6.158.129

所以我可以看到OPENSHIFT_NODEJS_PORT和OPENSHIFT_NODEJS_IP匹配上面我的lsof语句的输出,所以我都很好。

我确信在完成所有这些之后你会发现一个差异,这将是你的线索。