CouchDB的是一个Erlang版本的一部分(CouchDB as a part of an Er

2019-08-02 15:13发布

我想建立和部署具有Django的作为前端,YAWS(应用appmods )或受Mochiweb / Webmachine作为后端和CouchDB的作为数据存储。 此外,我打算广泛使用CouchDB的,以提供整个应用程序的高容错的复制能力。

我倾向于认为,为了实现这一目标,我必须创建一个单独的OTP版本具有YAWS和CouchDB的为二郎/ OTP应用。

请问这种做法似乎是正确的吗? 我怎样才能组织YAWS和CouchDB的在OTP应用方面,以创造一个坚实的生产设置? 是否有这样做的最佳做法?

Answer 1:

Erlang的版本是软件打包的好方法,因为它们包括所有相关的库。 通过这种方式,不同的Erlang应用程序可以在不互相冲突运行不同版本的他们所需的库。

处理复杂的释放过程二郎有一种流行的方式是让力霸为你做它。 他们有一个快速入门指南 ,让你在正确的道路上。 我不知道,如果您目前使用的钢筋来管理你的项目,但它使事情更容易。 这绝对是值得寻找到,如果你不使用它。

然而,螺纹钢将不包括你的依赖开箱的。 为了做到这一点,你应该修改reltool.config文件和所有必需的应用程序。

第一步是添加所有的依赖所在的目录,例如:

{sys, [
    ...
    {lib_dirs, ["../deps"]},
    ...
}.

然后,添加您的依赖关系的应用程序中发布包括:

{sys, [
    ...
    {app, jiffy, [{incl_cond, include}]},
    {app, cowboy, [{incl_cond, include}]},
    ...
}.

现在,当你运行rebar generate命令,你的应用程序应该在lib下的目标目录:

find brawl_server -type d -maxdepth 2

brawl_server
brawl_server/bin
brawl_server/erts-5.9.1
brawl_server/erts-5.9.1/bin
brawl_server/lib
brawl_server/lib/brawl_server-1.1
brawl_server/lib/cowboy-0.6.0
brawl_server/lib/jiffy-0.6.1
brawl_server/lib/kernel-2.15.1
brawl_server/lib/sasl-2.2.1
brawl_server/lib/stdlib-1.18.1
brawl_server/log
brawl_server/log/sasl
brawl_server/releases
brawl_server/releases/1

你还需要确保自己的OTP应用知道它需要启动它依赖于应用程序。 如果你有一个产生的钢筋工程,修改<appname>.app.src文件,其中包括:

{application, app, [
    ...
    {applications, [
              jiffy,
              cowboy,
              kernel,
              stdlib
             ]},
    ...
}.

你应该可以编译生成的释放和附带的脚本运行它,因为钢筋发布处理该条规定了。

在这一点上,虽然,有一个额外的皱纹,因为很明显香草CouchDB的不兼容OTP,你可以不包括它这样。 还有您可以使用,而不是另一种分布: rcouch 。 我还没有尝试过自己,希望它会为你工作。

延伸阅读:

  • 了解你一些二郎的大好事:发布
  • 我用我自己的项目, 斗殴,在线 ,作为一个例子


Answer 2:

我建议创建DEB / RPM /你名,它或多个软件包。 在CheckInstall是这个最简单的解决方案。



文章来源: CouchDB as a part of an Erlang release