【问题标题】:How to configure FastRWeb to use RServer built-in web server如何配置 FastRWeb 以使用 RServer 内置 Web 服务器
【发布时间】:2013-05-04 12:27:41
【问题描述】:

我是 RServe(和 FastRWeb)的新手。我安装了 RServe 1.7.0,因为我想使用它的内置网络服务器。因为我已经在这台机器上运行了 apache,所以我想在自定义端口上运行 RServe/FastRWeb。

我做了cd /usr/local/lib/R/site-library/FastRWeb;sudo ./install.sh,它创建了 /var/FastRWeb/ 目录树。

我没有看到任何提及端口的配置文件。默认的 /var/FastRWeb/code/rserve.conf 如下所示:

socket /var/FastRWeb/socket
sockmod 0666
source /var/FastRWeb/code/rserve.R
control enable

我猜这意味着它默认使用 unix 套接字?所以我认为我的问题是我必须将什么确切放入该文件中(并从中删除),比如说,让它在 TCP 端口 8888 上侦听?还有什么我需要做的吗? (我希望能够从其他机器连接,而不仅仅是本地主机。)

可能相关,我查看过 /var/FastRWeb/web/index.html 是否包含将连接到 /cgi-bin/R/ 的 javascript 是特定于使用 Apache 时的路径,还是它将是使用 RServe 时,按原样好吗?

【问题讨论】:

    标签: r rserve


    【解决方案1】:

    Rserve 1.7.0 release announcement中有设置端口的说明。因此,在 rserve.conf 的顶部,我添加了这一行:http.port 8888 然后我使用 start 脚本(以 root 身份)来启动它。

    这让我在现在 http://127.0.0.1:8888/ 工作的一半,但给了我一个页面,上面写着:

    Error in try(.http.request("/", NULL, NULL, c(48, 6f, 73, 74, 3a, 20,  : 
      could not find function ".http.request"
    

    后半部分的解决方案是将这个添加到 /var/FastRWeb/code/rserve.R 的顶部:

    library(FastRWeb)
    .http.request <- FastRWeb:::.http.request
    

    然后通过运行/var/FastRWeb/code/start 开始工作。没有默认处理程序,因此您可以使用http://127.0.0.1:8888/info 对其进行测试。或者更有趣的例子是http://127.0.0.1:8888/example1.png(查看图表)或http://127.0.0.1:8888/example2(查看html和图表的组合)

    注意:我没有删除或编辑任何其他配置以使其正常工作。这意味着我们也有 unix socket 监听。如果不需要,请从 Rserve.conf 文件中删除这两行。

    如果您希望它侦听所有 IP 地址,而不仅仅是 localhost,则将 remote enable 添加到您的 Rserve.conf 文件中。 注意:在向全世界开放您的服务器之前,请确保您了解安全后果。

    所以,在这两个更改之后,我的/var/FastRWeb/code/Rserve.conf 文件看起来像:

    http.port 8888
    remote enable
    source /var/FastRWeb/code/rserve.R
    control enable
    

    【讨论】:

    • 我知道这是很久以前的事了,但谢谢你。你在 FastRWeb 上取得了成功吗?我在 Ruby 中推出了自己的等价物,并且正在考虑采用这种方式来更好地处理并发连接。
    • @Brandon 不,这一切都感觉太实验性了,我再也没有回过头来。 (我刚查了一下,Rserve 有几个更新的版本,所以现在可能会更好。)
    • 感谢达伦的意见。今晚我玩了一下它,它似乎按预期执行。它所要打败的只是我的 hacky 解决方案 :)
    【解决方案2】:

    您是否看到Jay Emerson's write-up from a while back 关于如何使用RServe 作为Web 驱动分析的后端?我记得,仍然使用 Apache 进行重定向,而不是您在这里猜测的显式端口。

    Jay 的设置令人印象深刻。他使用 Rserve 提供通过 grid 包编写的混合表格/图表页面,所有这些页面都非常流畅且非常快速,基于庞大的数据集(来自联合国机构或世界银行等)。但我现在找不到该报告的链接...

    【讨论】:

    • 谢谢 Dirk,我找到了那个页面,但正如你所说,它是用于 Apache 的。 FastRWeb 页面说:“FastRWeb 可以在任何支持 CGI 或 PHP 的网络服务器上运行。从 1.1 版开始,它还可以直接与 Rserve 1.7 及更高版本中的内置网络服务器一起使用。”听起来好像不需要 Apache?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    相关资源
    最近更新 更多