簡體   English   中英

Node.js Openshift應用程序部署的代碼不起作用

[英]Nodejs openshift app deployed code not working

我正在使用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!');
});

您是否傳遞OPENSHIFT_NODEJS_IP變量? 經常出現的問題是,在這種情況下,nodejs應用程序正在監聽IP 127.0.0.1 ,但應該監聽0.0.0.0 如果那沒有幫助,請提供有關如何在OpenShift中創建應用程序的更多詳細信息。

這里有一些技巧可以幫助您確定問題所在。 我處理此問題的第一種方法是使用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)

因此,我的節點應用程序正在偵聽除本地主機之外的實際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語句的輸出匹配,所以我很好。

我確定在完成所有這些操作后,您會發現差異,這將是您的提示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM