首页 文章

使用node.js在OpenShift 2上发布Postgresql

提问于
浏览
0

我有一个在OpenShift上使用Node.js和Postgresql的应用程序,我可以在本地连接数据库并进行查询,但我无法让它在openshift服务器上运行 . 当我推送到服务器时,我收到此错误:

等待应用程序端口(8080)变得可用...应用程序'myapp'无法启动(端口8080不可用)但我使用端口8080 ...

我的openshift端口是:

服务---本地--------------- OpenShift节点------ 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;

有谁知道什么可以失败?

谢谢!

1 回答

  • 0

    OpenShift几乎在您创建的每个容器/盒式磁带上都提供了一个默认的Web服务器(用Ruby编写) .

    每个服务都使用“ start ”服务挂钩启动,位于:

    $OPENSHIFT_REPO_DIR/.openshift/action_hooks/start

    你可能会发现像这样的一行:

    []\> 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的进程后,您将能够在该端口上运行Node JS堆栈 .

    问候

相关问题