【问题标题】:Nodejs openshift app deployed code not workingNodejs openshift应用程序部署的代码不起作用
【发布时间】:2017-02-01 21:04:48
【问题描述】:

我正在开发 nodejs 应用程序,我编写了服务器监听代码,然后我将代码部署到 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!');
});

【问题讨论】:

    标签: node.js openshift


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      这里有一些技巧可能有助于确定问题所在。我处理它的第一种方法是通过 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 语句的输出相匹配,所以我很好。

      我相信您在完成所有这些操作后会发现差异,这将是您的线索。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-13
        • 2016-07-13
        • 2013-04-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多