如何配置FastRWeb以使用RServer内置Web服务器

时间:2013-05-04 12:27:42

标签: r rserve

我是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上监听?还有什么我需要做的吗? (我希望能够从其他机器连接,而不仅仅是localhost。)

可能相关的是,我看过/var/FastRWeb/web/index.html并且它包含将要连接到/cgi-bin/R/的javascript是特定于使用Apache时的路径,还是它正在进行当使用RServe时,没问题吗?

2 个答案:

答案 0 :(得分:7)

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套接字监听。如果不需要,请从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

答案 1 :(得分:1)

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

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