【发布时间】:2014-08-03 10:29:17
【问题描述】:
尝试在 openshift 上托管我的 keystone.js 应用程序时,我一直收到 503 但日志中没有错误,有没有人成功地用他们托管过 keystone 应用程序?在 localhost 上一切正常。
我正在使用全新安装的 keystone.js,没有博客或 cloudinary。
【问题讨论】:
标签: openshift keystonejs
尝试在 openshift 上托管我的 keystone.js 应用程序时,我一直收到 503 但日志中没有错误,有没有人成功地用他们托管过 keystone 应用程序?在 localhost 上一切正常。
我正在使用全新安装的 keystone.js,没有博客或 cloudinary。
【问题讨论】:
标签: openshift keystonejs
您提供的信息很少,无法给出明确的答案。您将哪些选项传递给keystone.init()?你在用dotenv吗?如果是这样,你在那里设置什么?您是否使用rhc set-env 设置了任何环境变量?
我之所以问,是因为 OpenShift 上的 Node.js 应用程序中的 503 错误的常见(尽管不是唯一的)罪魁祸首是覆盖 OpenShift 的端口号。 Keystone 在查看 process.env.OPENSHIFT_INTERNAL_PORT 之前查看 process.env.PORT。因此,如果您在.env 或rhc set-env 上设置了PORT,它将优先于OPENSHIFT_INTERNAL_PORT。
我在KeystoneJS Google Group 上遇到了类似的问题。在另一种情况下,开发人员在他的应用程序中添加了一个 MONGODB 墨盒,但没有在 Keystone 中设置墨盒的连接字符串。
如果您也是这种情况,您需要在Keystone.init() 或使用Keystone.set('mongo', 'connection_sring') 中设置Keystone mongo 选项。创建墨盒时,您会获得一个 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 url(例如mongodb://127.6.85.129:27017/)。
这些只是我最好的猜测,因为你的问题在细节上有点薄。您可能想发布一些更具体的信息,以便我们更准确地评估您的问题。
【讨论】: