使用openshift托管keystonejs应用程序

时间:2014-07-31 18:45:54

标签: openshift keystonejs

当我尝试在openshift上托管我的keystone.js应用程序时,我一直在获取503但没有错误,是否有人成功托管了一个keystone应用程序?在localhost上一切正常。

我正在使用全新安装的keystone.js,没有博客或cloudinary。

1 个答案:

答案 0 :(得分:3)

您提供的信息非常少,可以为您提供明确的答案。您传递给keystone.init()的选项是什么?你在使用dotenv吗?如果是这样,你在那里设置什么?您是否使用rhc set-env设置了任何环境变量?

我问,因为OpenShift上Node.js应用程序中503错误的常见(尽管不是唯一的唯一)罪魁祸首是覆盖OpenShift的端口号。 Keystone在查看process.env.PORT之前会查看process.env.OPENSHIFT_INTERNAL_PORT。因此,如果您在PORT.env设置rhc set-env,则优先于OPENSHIFT_INTERNAL_PORT

我在KeystoneJS Google Group上遇到了类似的问题。在另一个案例中,开发人员已将MONGODB盒式磁带添加到他的应用程序中,但未在Keystone中设置盒式磁带的连接字符串。

如果您也是这种情况,则需要在mongoKeystone.init()中设置Keystone Keystone.set('mongo', 'connection_sring')选项。创建盒式磁带时,您会获得一个URL和一些凭据。 OpenShit在环境变量中将这些传递给您的应用程序。您可以按如下方式构建mongo连接字符串:

var connectionString = process.env.OPENSHIFT_MONGODB_DB_USERNAME + ":" +  process.env.OPENSHIFT_MONGODB_DB_PASSWORD + "@" + process.env.OPENSHIFT_MONGODB_DB_HOST + '/' + process.env.OPENSHIFT_APP_NAME;

keystone.set('mongo', connectionString);

or 

keystone.init({
  ...
  mongo: connectionString,
  ...
});

或者您可以使用rhc set-env设置MONGO环境变量,如下所示:

rhc set-env MONGO=http://{username}:{password}@{connection url}/{dbname} -a your_app_name

上面的connection url是您在创建墨盒时从OpenShift获得的mongodb://127.6.85.129:27017/。如果看起来像标准的MONGODB网址(例如{{1}})。

这些只是我最好的猜测,因为你的问题在细节上有点薄弱。您可能希望发布更具体的内容,以便我们更准确地评估您的问题。