将NodeJS应用程序部署到Openshift

我有SailsJS应用程序,我想部署到Openshift,但像往常一样,它不顺利。 以下是我迄今所做的:

rhc app create myApp nodejs-0.10 rhc cartridge add mongodb-2.4 

在这两个之后,我可以看到该应用程序已创build,当我访问给定的URL时,我得到欢迎页面。

我安装了RockMongo,我发现我也可以访问我的mongodb。

由于我已经有了代码,我继续如下:

 git remote add openshift -f <openshift-git-repo-url> git merge openshift/master -s recursive -X ours git push openshift HEAD 

在我将现有的代码与远程openshift合并后(就像上面的命令一样),事情开始出错了。

当我访问url到应用程序,我收到503服务暂时不可用。 如果我访问RockMongo并尝试使用给定的凭据login,我会收到

 Unable to connect MongoDB, please check your configurations. MongoDB said:Failed to connect to: 127.10.37.130:27017: Transport endpoint is not connected. 

此外,在应用程序面板中,我的应用程序的状态正在build立(并保持几个小时)。 在将代码推送到openshift之后,应用程序停止,并在重build(自动)之后,我收到一些错误,最后一个错误

 remote: An error occurred executing 'gear postreceive' (exit code: 34) remote: Error message: CLIENT_ERROR: Failed to execute: 'control build' for /var/lib/openshift/538f1c205004461655000227/nodejs 

有没有人知道发生了什么事?

也许我没有正确设置端口,应用程序的URL,DBurl? 但是,再一次,为什么RockMongo停止工作?

UPDATE

这是我的mongoconfiguration:

  mongo: { module: 'sails-mongo', user: 'admin', password: '********', url: process.env.OPENSHIFT_MONGODB_DB_URL + 'surge' } 

我是否需要设置server_port = process.env.OPENSHIFT_NODEJS_PORTserver_ip_address = process.env.OPENSHIFT_NODEJS_IP ? 我的应用程序的根目录中有一些server.js文件,我发现这里使用了这些variables。

如果我运行env | grep NODEJS这就是我得到的结果 env | grep NODEJS

 OPENSHIFT_NODEJS_PATH_ELEMENT=/var/lib/openshift/538f1c205004461655000227//.node_modules/.bin:/opt/rh/nodejs010/root/usr/bin OPENSHIFT_NODEJS_PORT=8080 OPENSHIFT_NODEJS_LD_LIBRARY_PATH_ELEMENT=/opt/rh/nodejs010/root/usr/lib64 OPENSHIFT_NODEJS_IDENT=redhat:nodejs:0.10:0.0.17 OPENSHIFT_NODEJS_LOG_DIR=/var/lib/openshift/538f1c205004461655000227/app-root/logs/ OPENSHIFT_NODEJS_IP=127.10.37.129 OPENSHIFT_NODEJS_PID_DIR=/var/lib/openshift/538f1c205004461655000227/nodejs//run/ OPENSHIFT_NODEJS_VERSION=0.10 OPENSHIFT_NODEJS_DIR=/var/lib/openshift/538f1c205004461655000227/nodejs/ 

这里是我得到的env | grep mongo env | grep mongo

 OPENSHIFT_ROCKMONGO_DIR=/var/lib/openshift/538f1c205004461655000227/rockmongo/ PHPRC=/var/lib/openshift/538f1c205004461655000227/rockmongo/etc/conf/php.ini OPENSHIFT_ROCKMONGO_IDENT=redhat:rockmongo:1.1:0.0.12 OPENSHIFT_MONGODB_IDENT=redhat:mongodb:2.4:0.2.11 OPENSHIFT_MONGODB_DB_URL=mongodb://admin:PASSWORD_HERE@127.10.37.130:27017/ OPENSHIFT_MONGODB_DIR=/var/lib/openshift/538f1c205004461655000227/mongodb/ 

以防其他人绊倒这个问题,这是我必须做的。

我创build了单独的文件config / application.js,并在那里放置

 module.exports = { port: process.env.OPENSHIFT_NODEJS_PORT, host: process.env.OPENSHIFT_NODEJS_IP, environment: 'production' }; 

我还发现应用程序没有启动的问题。 安装后失败(bower安装没有成功完成)。 为了解决这个问题,应该添加到package.json的脚本部分

 "postinstall": "export HOME=/var/lib/openshift/[instance-id]/app-root/runtime/repo; ./node_modules/bower/bin/bower install"