我一直在努力了解如何在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,但至少这让我运行。
答案 0 :(得分:1)
我在这里推动了一个有效的dotcloud conf:https://github.com/cedricss/opa-on-dotcloud.git
你确定mongodb正在运行吗?
您是否在dotcloud.yml
文件中添加了以下行?
db:
type: mongodb
此处有关Opa on dotcloud的更多信息:https://github.com/dotcloud/opa-on-dotcloud
<强>更新强> 确实现在有些事情已经破裂 可以在上面的例子中完成两个更新:
构建器以使用Opa 1.0.5来获取所有与mongodb相关的修复:BINURL="http://download.opalang.org/linux/opa_1.0.5%2Bbuild2988_amd64.release.run"
opa 1.0.5
至少需要node 0.6.x
,dotcloud.yml
必须完成,如此处所述:http://docs.dotcloud.com/services/nodejs/#node-js-versions但我不知道为什么我的实例一直有节点即使在创建一个全新的应用程序后,也安装了0.4.0我稍后再试一次。