使用openshift托管keystonejs应用程序

使用openshift托管keystonejs应用程序,openshift,keystonejs,Openshift,Keystonejs,当我尝试在openshift上托管我的keystone.js应用程序时,我一直收到503,但日志中没有错误。有人用他们成功托管过keystone应用程序吗?在本地主机上一切正常 我使用的是全新安装的keystone.js,没有博客或cloudinary。您提供的信息很少,无法给出明确的答案。您要将哪些选项传递给keystone.init()?您是否正在使用dotenv?如果是,你在那里设置了什么?您是否使用rhc set env设置了任何环境变量 我这样问是因为OpenShift上Node.js

当我尝试在openshift上托管我的keystone.js应用程序时,我一直收到503,但日志中没有错误。有人用他们成功托管过keystone应用程序吗?在本地主机上一切正常


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

您提供的信息很少,无法给出明确的答案。您要将哪些选项传递给
keystone.init()
?您是否正在使用
dotenv
?如果是,你在那里设置了什么?您是否使用
rhc set env
设置了任何环境变量

我这样问是因为OpenShift上Node.js应用程序中503个错误的一个常见(尽管不是唯一)罪魁祸首是覆盖OpenShift的端口号。Keystone先查看
process.env.PORT
,然后再查看
process.env.OPENSHIFT\u INTERNAL\u PORT
。因此,如果在
.env
上设置了
端口
,或使用
rhc set env
设置,则它将优先于
OPENSHIFT\u内部\u端口

我在网上遇到了一个类似的问题。在另一种情况下,开发人员将MONGODB盒带添加到他的应用程序中,但没有在Keystone中设置盒带的连接字符串

如果这也是您的情况,您需要在
Keystone.init()
中设置Keystone
mongo
选项,或者使用
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=http://{username}:{password}@{connection url}/{dbname} -a your_app_name
或者您可以使用
rhc set env
设置
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=http://{username}:{password}@{connection url}/{dbname} -a your_app_name
上面的
连接url
是您在创建盒带时从OpenShift获得的url。If看起来像标准的MONGODB url(例如
mongodb://127.6.85.129:27017/


这些只是我最好的猜测,因为你的问题在细节上有点单薄。您可能需要发布更多详细信息,以便我们能够更准确地评估您的问题。

谢谢您的回复,我不太确定该怎么说,我只是使用一个全新的keystone.js副本,没有云。我想问题在于连接mongo,我添加了mongo盒带,但不确定是否需要在任何位置指定数据库凭据,或者open shift是否会自动执行此操作。很酷,谢谢,我根据另一个示例稍微更改了字符串,但它可以工作。if(process.env.OPENSHIFT\u MONGODB\u PASSWORD){console.log('if');var connection\u string=process.env.OPENSHIFT\u MONGODB\u USERNAME+“:”+process.env.OPENSHIFT\u MONGODB\u PASSWORD+“@”+process.env.OPENSHIFT\u MONGODB\u DB\u主机+:“+process.env.OPENSHIFT\u MONGODB\u端口+/”+process.env.OPENSHIFT\u应用程序名;keystone.set('mongo',connection_string);}不客气!感谢您的更新。我将更新我的答案,以便将来其他人可以从中受益。