我一直在尝试了解如何在 dotcloud 上部署 Opa 应用程序。默认应用程序有效,但 Opa 文档中的 wiki 示例无法启动:
==> /var/log/supervisor/opa.log <==
[Opa] _no_name DbGen/Mongo/SynchroStart Db is ready
[Opa] _no_name DbGen/Mongo/SynchroStart Process 0 operations on the db wait list, start
[Opa] _no_name DbGen/Mongo/SynchroStart Process 0 operations on the db wait list, finished
[Opa] Server dispatch Decoded URL to /
[Opa] DbGen/Mongo (failure) Read from wiki set doesn't returns anything
File "stdlib/database/mongo/db.opa", line 776, characters 6-32, (776:6-776:32 | 28076-28102)
fail: undefinedDbSet build error
Error : uncaught OPA exn { 'size`': 2,
fail: 'DbSet build error',
position: 'File "stdlib/database/mongo/db.opa", line 776, characters 6-32, (776:6-776:32 | 28076-28102)' }
这是我设置不当还是 dotcloud 系统中的错误?
我的 .yml:
opa:
type: custom
buildscript: builder
process: ~/run
ports:
www: http
db:
type: mongodb
此图显示了 monogdb 在本地的样子。 http://imgur.com/LJ1RY
更新:我发现 mongodb 有一个单独的日志。我找到了这个:
auth: couldn't find user root, _no_name.system.users
这似乎表明身份验证不起作用。(又名,在本地运行 opa 程序但指向远程 mongodb 会给出相同的错误。)任何想法为什么会出现这个问题?
UPDATE2:过去几天一直在追我的尾巴,因为我不太明白 Cédrics 在说什么。这是我在示例中替换数据库行以开始工作的内容:
database admin {
stringmap(string) /wiki;
/wiki[_] = "This page is empty. Double-click to edit.";
}
问题是我正在更改路径,而不是数据库名称:
ex: database int /admin/wiki
并不是
ex. database admin {int /wiki;}
我很好奇是否有办法通过 opa 使用除 admin 之外的任何其他命名数据库,但至少这让我运行起来。