我有一个在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 回答
OpenShift几乎在您创建的每个容器/盒式磁带上都提供了一个默认的Web服务器(用Ruby编写) .
每个服务都使用“ start ”服务挂钩启动,位于:
$OPENSHIFT_REPO_DIR/.openshift/action_hooks/start
你可能会发现像这样的一行:
为了验证哪个应用程序正在使用端口8080,您可以执行“ oo-lists-ports ”命令 .
此命令只是“ lsof ”命令的别名 .
执行它没有任何参数,你将获得它锁定你的端口8080(在我的情况下)的应用程序:
使用上面的信息(PID),你只需要杀死相关的进程:(在我的情况下)
杀死锁定端口8080的进程后,您将能够在该端口上运行Node JS堆栈 .
问候