将NodeJS应用程序部署到Openshift

时间:2014-06-04 13:49:54

标签: node.js openshift sails.js

我有工作SailsJS应用程序,我想部署到Openshift,但像往常一样,它并不顺利。 这是我到目前为止所做的:

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

在这两个之后,我可以看到应用程序已创建,当我访问给定的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并尝试使用给定的凭据登录,我会收到

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

此外,在“应用程序面板”中,我的应用程序的状态正在构建(并且会持续数小时)。将代码推送到openshift后,应用程序停止,重建后(自动)我收到一些错误,最后一个是

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

有谁知道发生了什么?

也许我没有正确设置端口,应用程序网址,数据库网址?但话说回来,为什么RockMongo停止了工作?

更新

这是我的mongo配置:

 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文件,我看到这里使用了这些变量。

如果我运行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获得的内容:

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/

1 个答案:

答案 0 :(得分:3)

以防其他人偶然发现这个问题,这就是我必须做的事情。

我创建了单独的文件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"