可以部署AnalysisPageServer
应用程序使用Rserve/FastRWeb系统。与车/ Rhttpd组合不同,这种环境下正确处理并发请求和预计将更稳定。安装和设置应该容易得多Apache / RApache。我自己的生产系统都是基于Apache / RApache所以我试图规模下有更少的经验Rserve
/FastRWeb
,但是看起来可能是一个很好的解决方案,和我绝对推荐车/ Rhttpd选项。
本文将带你通过步骤部署在这个环境中。
从他们的网站:
Rserve TCP / IP服务器,允许其他程序使用设施从不同的语言而不需要初始化R对R或链接库。
FastRWeb R是一个基础设施,允许任何网络服务器使用脚本动态生成的内容,如web页面或图形。
Rserve
是真正的服务器软件。然而,它有一个底层的界面FastRWeb
。此外,直接的HTTP连接Rserve
支持仍然被认为是实验性的。FastRWeb
,至少在我们会用它的方式,由一个CGI可执行,通过套接字发送HTTP请求Rserve
的过程。它也有一些功能来帮助一些低级在R与HTTP有关的任务像创建HTTP响应。
最近的版本Rserve
做有能力通过HTTP进行通信,这意味着它应该可以部署AnalysisPageServer
用Rserve
层和不FastRWeb
。我还没有尝试过这个,我不会在这个文档描述这一过程。
Rserve和FastRWeb都是可以通过rforge。你可以安装它们
install.packages (c (“Rserve”、“FastRWeb”),“http://www.rforge.net/”)
您可能需要添加开关type = "源"
这个。
如果你得到一个错误安装开罗依赖你可以解决这个通过安装二进制版本,而不是源。如果您正在使用一个版本的R没有一个二进制可用,您可以强制安装的为您的操作系统下载正确的二进制包开罗凹口页面,然后用类似从命令行安装R CMD /道路/下载/安装/ tarball / Cairo_99.9.9.tgz
。然后再安装,再试一次FastRweb
。
在你安装FastRWeb
你必须建立一个FastRWeb
环境。看到的文档包为更多的信息。这通常是通过运行install.sh
脚本附带的包,设置/var/FastRWeb
目录:
系统(粘贴(“cd”,执行(包=“FastRWeb”),“& & install.sh”))
除此之外,这将创建一个配置文件/var/FastRWeb/code/rserve.conf
。你必须做一个修改这个文件。默认是这样的:
套接字/var/FastRWeb/socket sockmod 0666 /var/FastRWeb/code/rserve.来源R控制使
重要! ! !在最后一行改变控制使
来控制禁用
。控制命令阻止这种变化是至关重要的Rserve
从正确处理并行连接,服务器就会崩溃。这将给你配置:
套接字/var/FastRWeb/socket sockmod 0666 /var/FastRWeb/code/rserve.来源R控制禁用
做这个修改后,你应该通过其他的工作FastRWeb安装文档完成安装和启动FastRWeb
配置Rserve
服务器。
在默认配置中,FastRWeb
将url映射到脚本的目录/var/FastRWeb/web.R/
。你可以尽可能多的AnalysisPageServer应用程序部署通过创建多个文件的目录。这里我们创建一个名为APS.R
。使用默认配置您的服务器将被位于http://localhost/cgi-bin/R/APS/dist-aps/analysis-page-server.html
URL。
的内容FastRWeb
脚本的代码将会评估每一次请求。在该脚本必须分配到顶级变量的函数运行
。在某些方面,运行
功能类似于AnalysisPageServer
的想法的AnalysisPage
处理程序。每个HTTP查询字符串参数的解析并作为参数发送到运行
功能,运行
所谓函数然后结果FastRWeb
对象,它在某种程度上代表了响应。
如果你是在工作AnalysisPageServer
框架你不必担心这些细节。你建立你的AnalysisPageRegistry
然后调用new.FastRWeb.analysis.page.run ()
函数,分配结果(这本身就是一个函数)运行
变量。
以下将构成FastRWeb
脚本包含volano情节从一个应用程序交互式应用程序装饰图案。除了最后一行复制逐字从装饰图案。
库(AnalysisPageServer) x < -代表(1:nrow(火山),每个= ncol(火山))y < -代表(1:ncol(火山),nrow(火山))火山。细胞< - data.frame (x = x, y = y,身高= as.vector (t(火山)))火山。处理程序< -函数(color1 =“红色”,color2 =“蓝色”){par (mar = c (1、1、4、1))。颜色< - c (color1 color2) < - colorRampPalette上校(chosen.colors)(50)图像(数据集::火山,xaxt =“n”, yaxt =“n”,主要=“Maunga Whau火山”,=上校,上校cex。主要火山= 2)返回(volcano.cells)}。< - new.analysis页。页面(处理程序=火山。处理程序名称=“火山”,描述=“画Maunga Whau火山在两种颜色”)注册< - new.registry (volcano.page) < - new.FastRWeb.analysis.page.run (reg, FastRWeb运行。scriptname = " APS”)
new.FastRWeb.analysis.page.run
还有其他的其他选项是有用的,如果你有非默认吗FastRWeb
配置。特别是,如果你FastRWeb CGI司机不是位于/目录/ R
然后你必须指定。看到函数内联文档信息。在任何情况下FastRWeb.scriptname
是必需的,它必须是一样的名字FastRWeb
脚本的应用程序服务器,没有。R
后缀。
一旦你把它放在该文件/var/FastRWeb/web.R/APS.R
然后,您可以将浏览器指向着陆页面http://localhost/cgi-bin/R/APS/dist-aps/analysis-page-server.html。
的好处之一是在这种环境下发展,每个页面加载的脚本重新加工。这包括任何库负载,这意味着如果你开发AnalysisPageServer
在一个R包(正如你应该的,如果你真的意味着业务),然后你可以安装一个修改版的R包和刷新浏览器,和修改将持久化。
该系统的缺点是你支付的成本对每个请求页面加载。这可能是重要的,尤其是在前端需要多个AJAX回调服务器加载应用程序,甚至使一个阴谋。即使这样静态文件的处理和将触发加载任何软件包图书馆()
在您的脚本中调用。
然而,它是可能的你有蛋糕和吃它,太。一旦你完成开发你可以移动的启动脚本的代码/var/FastRWeb/code/rserve.R
。该脚本的底部你可以是这样的:
库(MyAPSPackage) myRun < new.FastRWeb.analysis.page.run (myAPSRegistry (), FastRWeb。scriptname = " APS”)
然后,在/var/FastRWeb/web.R/APS.R
你将是这样的:
< - myRun运行
这一次你做必须重新启动Rserve
服务器,我通常是这样的:
killall Rserve /var/FastRWeb/code/start
那么你的服务器将处理请求更快,因为它会在内存中已经建立的一切需要。
如果你正试图运行通过本文档中的示例和没有自己的应用程序打包好MyAPSPackage
,你可以复制整个漫长的事情/var/FastRWeb/code/rserve.R
:
库(AnalysisPageServer) x < -代表(1:nrow(火山),每个= ncol(火山))y < -代表(1:ncol(火山),nrow(火山))火山。细胞< - data.frame (x = x, y = y,身高= as.vector (t(火山)))火山。处理程序< -函数(color1 =“红色”,color2 =“蓝色”){par (mar = c (1、1、4、1))。颜色< - c (color1 color2) < - colorRampPalette上校(chosen.colors)(50)图像(数据集::火山,xaxt =“n”, yaxt =“n”,主要=“Maunga Whau火山”,=上校,上校cex。主要火山= 2)返回(volcano.cells)}。< - new.analysis页。页面(处理程序=火山。处理程序名称=“火山”,描述=“画Maunga Whau火山在两种颜色”)注册< - new.registry (volcano.page) < - new.FastRWeb.analysis.page.run (reg, FastRWeb运行。scriptname = " APS”)
可用的着陆页将在这个网址:
http://localhost/cgi-bin/R/APS/dist-aps/analysis-page-server.html