2016-04-06 8 views
1

オープンシフティングに最初のノードjsアプリを配備する際に問題が発生しました。nodejsアプリをOpenshiftにデプロイ(503エラー)

私は少しポートと混同しています。

サーバーが作成されたときに私はこれを設定しました:

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

http.createServer(function (request, response) { 
    return router(request, response); 
}).listen(port, server_ip_address, function() { 
    console.log("Listening on " + server_ip_address + ", server_port " + port) 
}) 

私はポートを記録しました。しかし、もし私が手動で8080に(受信時に)設定しなければならないWebSocketを聞きたいのであれば、これは同じポートを2回聞いてエラーに繋がります。

ログを読んでも、そのアプリケーションはws server createメソッドに分類されます。ポートは、私が賭けた理由は、どこです。しかし、どのように修正するには?

まだ表示されていないオプションはありますか?

更新:

Error: listen EACCES at errnoException (net.js:905:11) at Server._listen2 (net.js:1024:19) at listen (net.js:1065:10) at Server.listen (net.js:1139:5) ... 

しかし、今ローカルで動作します:8000へ
変更のWebSocketポートエラーが同じであるように思われます。

更新2: 1つのポートの使用に切り替えることができました。私の間違いは、今私はwebsocketサーバーのメソッドを作成する引数としてhttpサーバーを渡しています。それでもローカルで動作します。現時点で コード:

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

var server = http.createServer(function (request, response) { 
    return router(request, response); 
}) 

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

それは、サーバー上に落ちるラインを聞く...

Update3と: 私は「聞いて」サーバーのイベントのためにeventlistnerを追加しましたし、局部的にそれが起動します。しかし、オープンシフトのログによるとそれはしません。 エラーは同じです:私はアイデアの出だ

Error: listen EACCES 
    at errnoException (net.js:905:11) 
    at Server._listen2 (net.js:1024:19) 
    at listen (net.js:1065:10) 
    at Server.listen (net.js:1139:5) 
    at Server.server.listen (/var/lib/openshift/56fc344f2d5271249e0000fe/app-root/runtime/repo/node_modules/sesh/lib/core.js:56:12) 
    at Object.<anonymous> (/var/lib/openshift/56fc344f2d5271249e0000fe/app-root/runtime/repo/server.js:18:15) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
DEBUG: Program node server.js exited with code 8 
DEBUG: Starting child process with 'node server.js' 

。助けをお待ちしています。 ありがとうございます。

答えて

1

まあ、私は正確な問題を見つけることができませんでしたが、それをローカライズすることができました。

だから、起動アプリの構造た:

  • 明示
  • http.server(聞く)
  • ws.server(聞く)
  • 静的ファイルサーバ(聞く)
  • 飲み会(セッション)

これはすべてローカルで完全に動作しています。openshiftの展開については

は、私が正常に作業を開始するために、これらの変更をしなければならなかった:

  • インストールは一つだけを使用して
  • somewhyの飲み会モジュールは、私は、私のために動作しませんでした聞く表現します

    :最終的なコードは、この(希望の誰かが、これは役に立つでしょう)のように見えます

「表現・セッション」に切り替えまし

'use strict'; 

var http = require('http'), 
    express = require('express'), 
    app = express() 


var router = require('./modules/router') 
var session = require('express-session') 

app.use(session({ 
    secret: 'two keyboard cats', 
    resave: false, 
    saveUninitialized: true, 
    cookie: { secure: true } 
})); 

app.use(router) 

app.use(express.static('public')) 

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

var server = http.createServer(app) 
server.listen(port, server_ip_address, function() { 
    console.log("listening to the server") 
}) 

およびルータモジュールは、このようなものです:私のような「初心者」のための

'use strict'; 
var router = require('express').Router(); 

router.get('/', function(req, res) { 
    console.log(req.session.id) 
    res.writeHead(302, { 'Location': '/index.html' }) 
    res.end() 
}) 


module.exports = router 

とアドバイス:ミドルウェアの順番に注意を払います。 セッションはルータの前に移動する必要があります。

関連する問題