4

我是 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 并且它包含要连接到的 javascript 是/cgi-bin/R/特定于使用 Apache 时的路径,还是会正常,使用 RServe 时?

4

2 回答 2

7

Rserve 1.7.0 发布公告中有设置端口的说明。因此,在 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
于 2013-05-06T09:54:48.577 回答
1

您是否看过Jay Emerson不久前关于如何使用 RServe 作为 Web 驱动分析的后端的文章?我记得,仍然使用 Apache 进行重定向,而不是您在这里猜测的显式端口。

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

于 2013-05-04T14:09:50.503 回答