FastRWeb跑在Web上的R程序

R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大。

R语言作为统计学一门语言,一直在小众领域闪耀着光芒。直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器。随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长。现在已不仅仅是统计领域,教育,银行,电商,互联网….都在使用R语言。

要成为有理想的极客,我们不能停留在语法上,要掌握牢固的数学,概率,统计知识,同时还要有创新精神,把R语言发挥到各个领域。让我们一起动起来吧,开始R的极客理想。

关于作者:

  • 张丹(Conan), 程序员Java,R,PHP,Javascript
  • weibo:@Conan_Z
  • blog: http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/r-fastrweb-rserve/

FastRWeb
前言

一直以来R语言都被用在,基于个人电脑的客户端程序上。我们习惯性的下载R安装包,在自己的电脑上面装好,写算法,运行。然后,以贴图或者文档的形式,发表自己的作品。

R如果可以运行在Server端,把结果以Web的方式发布!这才是互联网的工作方式!FastRWeb提供一种方式,可以实现B/S结构的R应用。

目录

  1. FastRWeb介绍
  2. FastRWeb架构原理
  3. FastRWeb安装
  4. FastRWeb使用

1. FastRWeb介绍

FastRWeb 是一个基础架构环境, 可以让R脚本运行在任何WebServer上,展示数据和图形。用户通过URL地址与R脚本进行通信交互。 FastRWeb 可以快速地构建一个R的Web环境,FastRWeb 底层依赖于CGI程序,也就是说,只要能支持CGI程序的WebServer,就可以运行FastRWeb。

本文以R语言的WebServer库Rserve为例,部署FastRWeb,实现R的Web应用。

官方发布页:http://www.rforge.net/FastRWeb/

2. FastRWeb架构原理

fastRweb-architect

  • 1. 浏览器通过http请求访问Web服务器
  • 2. Web服务器通过socket,把请求发给Rserve服务器
  • 3. Rserve调用FastRWeb环境,运行R的脚本,返回数据和图片
  • 4. 浏览器,得到结果,并在web上展示

3. FastRWeb安装

服务器系统环境

  • Linux: Ubuntu 12.04.2 LTS 64bit
  • R: 3.0.1 x86_64-pc-linux-gnu

FastRWeb安装


~ R
> install.packages("FastRWeb")
installing to /home/conan/R/x86_64-pc-linux-gnu-library/3.0/FastRWeb/libs
** R
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (FastRWeb)

由于FastRWeb依赖于cairo库,Cairo安装会用到Linux本地库,请参考文章:R语言的高质量图形渲染库Cairo

安装Rserve


> install.packages("Rserve")

有关Rserve的介绍,请参考文章:Rserve与Java的跨平台通信

创建FastRWeb基于Rserve的运行环境


~ cd /home/conan/R/x86_64-pc-linux-gnu-library/3.0/FastRWeb

~ sudo ./install.sh
Done.
Please check files in /var/FastRWeb/code
If they match tour setup, you can start Rserve using
/var/FastRWeb/code/start

查看生成的目录:/var/FastRWeb/code/


~ cd /var/FastRWeb/code/

~ ls -l
-rw-r--r-- 1 conan conan 1210 Oct 29 16:07 README
-rw-r--r-- 1 conan conan   79 Oct 29 17:50 rserve.conf
-rw-r--r-- 1 conan conan 2169 Oct 29 17:51 rserve.R
-rwxr-xr-x 1 conan conan  457 Oct 29 17:35 start
  • README:帮助说明
  • rserve.conf:Rserve的启动参数
  • rserve.R:Rserve的启动脚本
  • start:启动命令

修改文件:rserve.conf


~ vi rserve.conf

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

默认情况,rserve是提供socket通信接口,为了web测试方便,我们改成用http的通信接口。

修改文件:rserve.R, 在文件上的最上面增加2行代码。


~ vi rserve.R

library(FastRWeb)
.http.request 

这样我们就改好了,成http为通信接口。

4. FastRWeb使用

启动服务


~ sudo ./start

R CMD Rserve --RS-conf /var/FastRWeb/code/rserve.conf --vanilla --no-save --RS-enable-remote

R version 3.0.1 (2013-05-16) -- "Good Sport"
Copyright (C) 2013 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

  Natural language support but running in an English locale

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

Starting Rserve on conan
Loading packages...
XML: TRUE
Cairo: TRUE
Matrix: TRUE
FastRWeb: TRUE
Rserv started in daemon mode.

从启动日志,我们看出XML, Cairo, Matrix, FastRWeb, Rserv几个包都加载了,正常运行。

查看系统进程和端口:


~ ps -aux|grep Rserve
conan    23739  0.0  1.4 120140 28916 ?        Ss   16:47   0:00 /usr/lib/R/bin/Rserve --RS-conf /var/FastRWeb/code/rserve.conf --vanilla --no-save --RS-enable-remote

~ sudo netstat -nltp|grep Rserve
tcp        0      0 0.0.0.0:8888            0.0.0.0:*               LISTEN      25778/Rserve
tcp        0      0 0.0.0.0:6311            0.0.0.0:*               LISTEN      25778/Rserve

有2个端口被打开了,一个是Rseve的socket端口6311,一个是http端口8888。

通过web进行访问:http://192.168.1.201:8888/example1.png

fastRweb-example1

这个图的R代码,实际对应的是文件:/var/FastRWeb/web.R/example1.png.R


~ vi /var/FastRWeb/web.R/example1.png.R

run 

修改:/var/FastRWeb/web.R/example1.png.R


~ vi /var/FastRWeb/web.R/example1.png.R

run 

在浏览器刷新页面:

fastRweb-example2

这样就实现了,通过web来执行R脚本,在web上画图。

在目录:/var/FastRWeb/web.R/,下面有几个例子,大家可以参考写自己的R语言脚本。


ls -l /var/FastRWeb/web.R
total 32
-rw-r--r-- 1 conan conan 790 Oct 29 16:07 common.R
-rw-r--r-- 1 conan conan 316 Oct 29 20:01 example1.png.R
-rw-r--r-- 1 conan conan 520 Oct 29 16:07 example2.R
-rw-r--r-- 1 conan conan 174 Oct 29 16:07 index.R
-rw-r--r-- 1 conan conan 215 Oct 29 16:07 info.R
-rw-r--r-- 1 conan conan  64 Oct 29 16:07 main.R
-rw-r--r-- 1 conan conan 167 Oct 29 16:07 README
-rw-r--r-- 1 conan conan 214 Oct 29 16:07 tmp.R

example2.R,可以接受页面传参数。

根据FastRWeb的说明,FastRWeb可以通过CGI,与任何的WebServer通信,这样我们就可以把R脚本部署在PHP, Python, Ruby, Java等高级语言的服务器上面了。

R-bloggers上有一篇文章,讲FastRWeb部署在基于Apache的XAMPP环境中:
http://www.r-bloggers.com/setting-up-fastrweb-on-mac-os-x/

感兴趣的同学,自行尝试吧!!

转载请注明出处:
http://blog.fens.me/r-fastrweb-rserve/

打赏作者

This entry was posted in R语言实践

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通过添加您自己的CSS和JS来自定义网站的简单工具。 这个扩展允许你添加每个域的自定义CSS和JS。它会将这些设置存储在本地或您的Google个人资料中,具体取决于每个网站的设置。 这是一个组合: * StyleBot,但增加了JS和一个更简单的用户界面 *个性化的网络,但增加了在线存储和浏览器操作按钮,以方便访问 它确实: *将CSS添加到任何域 *添加自定义JS到任何域 *添加自定义CSS到扩展的选项页面(如果你不喜欢我的UI设计技巧) *在线存储您的设置(可选,已连接Google云端硬盘) *将您的网站导出为JSON格式 *使用UUID导入您的JSON,这样您可以在计算机之间手动同步或作为备份 *有一个简单的用户界面,可以用CTRL + S或ENTER键和一个浏览器动作按钮指向它 它不是: *添加一个像StyleBot一样漂亮的DOM元素选择器工具 更新日志: 1.24 - 1.28 获得WebExtensions兼容。即将在Firefox上提供! 1.22 - 1.23 添加**通配符的任何东西。更少的控制台消息 “全部”和“匹配”网站的网站顺序错误。 1.21 能够跨计算机删除网站。可选的延迟加载/就绪回调。 1.20 增加了通配符域:`* .wikia.com`,`my。*。com`等改进的临时禁用(在页面动作按钮上)。 1.19 同步日志+。选项UI +。现场CSS传播+。 1.18 选项UI +。同步日志+。登录UI +。 1.17 登录错误修复。更少,更精确的自动上传。添加了代码搜索。 1.16 在更新下载的现有网站相当可耻的错误。改进了导入摘要和细节。 1.15 同步报告中存在破坏自动同步的错误。 1.14 同步可选,所以没有更多登录弹出窗口。漂亮的同步按钮加载。 1.13 与Google云端硬盘自动同步。添加了同步日志。添加内联统计信息(选项)。 1.12 修复历史记录/统计信息更好的Google Drive(错误)处理。 1.11 从Google的扩展程序数据(同步)移到Google云端硬盘,因为手动比自动更好。添加了“所有网站”令牌。更好的文档检查(不在XML文档中)。更详细的导入。 1.10 在解码在线数据时处理错误。现在放弃 **备份您的网站数据!** 1.9 导入错误修正。 1.8 Stats +,更快加载大型在线存储,浏览器动作contextmenu label +。 1.7 改进的统计,帮助,选项自动缩进,dis /启用 **禁用从页面上下文菜单移动到图标的上下文菜单!** 1.6 错误在:自动重新缓存,网站hilite,CSS传播。 1.5 错误:禁用的网站,自动缩进,自动重新缓存。 增加了选项:修复大纲,扩展NodeList。 1.3 在选项页面上保存一个站点后,新增了实时的CSS重载/刷新/更新,所以不再需要页面刷新! 1.2 添加了UUID和导入。 1.1 添加(prefs和)onBrowserButtonClick选项。也许添加onBeforeUnload(或者是1.0?)。 支持语言:English
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值