1

我正在尝试遵循yapp 介绍并遇到一些基本困难。

预备: yaws 版本为 1.9,yapp 已安装(带文档)。Yaws 和 Yapp 手动安装,Erlang 在 MacOS X 10.6 上使用 Homebrew 安装。

Erlang R14B03 (erts-5.8.4) [source] [64-bit] [smp:8:8] [rq:8] [async-threads:0] [hipe] [kernel-poll:true]

配置正是我们在 yapp 介绍中看到的:

<server localhost>
    port = 8000
    listen = 0.0.0.0
    docroot = /usr/local/var/yaws/www
    arg_rewrite_mod = yapp
    <opaque>
       yapp_server_id = edo
    </opaque>
</server>

<server localhost>
    port = 8001
    listen = 0.0.0.0
    docroot = /usr/local/var/yaws/www
    arg_rewrite_mod = yapp
    <opaque>
        yapp_server_id = ido
        bootstrap_yapps = yapp
    </opaque>
</server>

作为设置的一部分,我还有以下内容(在服务器阻塞之前):

ebin_dir = /usr/local/lib/yaws/examples/ebin
ebin_dir = /usr/local/var/yaws/ebin
ebin_dir = /usr/local/lib/yapp/ebin

...

runmod = yapp

Mnesia 也按照 yapp 介绍上的说明进行设置,并且正在使用正确的节点名启动 yaws,生成以下输出:

Eshell V5.8.4  (abort with ^G)
(dclements@server)1> 
=INFO REPORT==== 11-Jul-2011::13:10:58 ===
Yaws: Using config file /usr/local/etc/yaws/yaws.conf

=INFO REPORT==== 11-Jul-2011::13:10:58 ===
Ctlfile : /Users/dclements/.yaws/yaws/default/CTL

=INFO REPORT==== 11-Jul-2011::13:10:58 ===
Yaws: Listening to 0.0.0.0:8001 for <1> virtual servers:
 - http://localhost:8001 under /usr/local/var/yaws/www

=INFO REPORT==== 11-Jul-2011::13:10:58 ===
Yaws: Listening to 0.0.0.0:8000 for <1> virtual servers:
 - http://localhost:8000 under /usr/local/var/yaws/www

=INFO REPORT==== 11-Jul-2011::13:10:58 ===
Yapp starting but Yaws not ready - waiting 500 ms
=INFO REPORT==== 11-Jul-2011::13:10:59 ===
Starting yapp

(dclements@server)1>

在 yapp 上看到打哈欠创建者的页面,我在“Starting yapp”之后看到了一些额外的输出,看起来像是注册了一些东西。无论我等待多长时间,这都不会显示。

在此之后,尝试访问这些网站不会产生预期的结果(http://localhost:8001/yapp/ 将我带到“未找到”页面)。但是,我确实看到以下内容:

(dclements@server)1> yapp:get_yapps().
[]
(dclements@server)2> yapp:get_bootstrap_yapps().
[{"ido",[{"/yapp",yapp}]}]

更改listento127.0.0.1并没有改变任何结果。更改服务器名称以使其不同同样不会产生影响。

我觉得我缺少一些基本但基本的东西,并且四处搜索并没有提供任何好的答案。任何帮助表示赞赏。

4

1 回答 1

2

尽管自提出问题以来已经过去了一年,并且可能作者自己已经找到了解决方案,但我希望我的回答对像我这样遇到问题并首先用谷歌搜索此页面的 erlang 新手有用。

所以我发现问题不在于 yapp,而在于初始 Mnesia 设置配置。我只是简单地尝试仔细重复 wiki 中描述的所有步骤,这让我获得了成功的结果。更准确地说,首先我在 yaws.conf 文件中指定了 mnesia 目录:

mnesia_dir = ~/.mnesia

然后我重新启动了 Mnesia(mnesia:stop/0, mnesia:start/0) 并删除了模式 (mnesia:delete_schema/1)。最后,我重复了http://yaws.hyber.org/yapp_intro.yaws的步骤。

于 2012-08-11T20:45:06.430 回答