[英]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.