2017-08-05 48 views
0

我有一個在OpenShift上使用Node.js和Postgresql的應用程序,我可以本地連接到數據庫並進行查詢,但是我無法讓它在openshift服務器上工作。當我推到服務器,我得到這個錯誤:OpenShift 2上的Postgresql,使用node.js

等待應用程序端口(8080)變爲可用... 應用「的myapp」無法啓動(8080端口不可用) 但林使用的端口8080 .. 。

我openshift端口:

Service --- Local --------------- OpenShift

node ------ 127.0.0.1:8080 => 127.8.120.129:8080

postgresql 127.0.0.1:5432 => 127.8.120.130:5432

在這裏,我寫重要的代碼行。 首先,server.js

... 
var db = require('./postgresql/database.js'); 
db.sync(); 
... 
var server_port = process.env.OPENSHIFT_NODEJS_PORT || 8080 
var server_ip_address = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1' 
server.listen(server_port, server_ip_address, function() {}); 
... 

而且database.js

var Sequelize = require('sequelize'); 
var bd_url = process.env.OPENSHIFT_POSTGRESQL_DB_URL || 'postgres://'user':'pass'@127.0.0.1:5432/sw' 
var sequelize = new Sequelize(bd_url, { 
    dialect: 'postgres', 
    dialectOptions: {} 
}); 
module.exports = sequelize; 

有誰知道什麼可能會失敗?

謝謝!

+0

您使用的是什麼版本的OpenShift,它在哪裏運行? –

+0

OpenShift v2和Postgresql 9.2,我忘了說,我使用eclipse –

回答

0

OpenShift在您創建的幾乎每個容器/盒式磁帶上都提供了一個默認的Web服務器(用Ruby編寫)。

每一個服務都使用 「開始」 服務掛鉤,位於開始:

$ OPENSHIFT_REPO_DIR/.openshift/action_hooks /啓動

你會發現像這樣的一條線:

[]\> nohup $OPENSHIFT_REPO_DIR/diy/testrubyserver.rb $OPENSHIFT_DIY_IP $OPENSHIFT_REPO_DIR/diy |& /usr/bin/logshifter -tag diy & 

爲了驗證哪個應用程序正在使用端口8080,您可以執行「oo-lists-ports「命令。

該命令只是「lsof」命令的別名。

執行不帶任何參數,你會獲得它的鎖定您的端口8080(在我的情況)應用:

[]\> oo-lists-ports 
COMMAND PID  USER FD TYPE DEVICE SIZE/OFF NODE NAME 
node 88451  1027 10u IPv4 392176  0t0 TCP 127.2.1.129:8080 (LISTEN) 
[]\> 

使用上述信息(PID),你只需要殺死相關過程: (對我來說)

[]\> ps -ef |grep 88451 
1027  62829 61960 0 08:33 pts/0 00:00:00 grep 88451 
1027  88451  1 0 Jun21 ?  00:00:16 node faceBot.js 

[]\> kill -9 88451 

殺死被鎖定你的端口8080的過程之後,你將能夠在該端口上運行的節點JS堆棧。

Regards

+0

謝謝,但我認爲它的postgresql代碼上的錯誤,如果我評論該行(conexion postgresql): ''''' require('./ postgresql/database.js');' '// db。sync();' 我沒有任何問題。 –