R(二): http与R脚本通讯环境安装

结合实际的工作环境,在开始R研究的时候,首先着手收集的就是能以Web方式发布R运行结果的基础框架,无耐的是,R一直以来常使用于个人电脑的客户端程序上,大家习惯性的下载R安装包,在自己的电脑上安装 --> 写算法 --> 运行 --> 以贴图或者文档的形式发表自己的作品。幸运的最终找着了一套这样的框架FastRWeb (Fast Interactive Web Framework for Data Mining Using R),参考 (http://www.rforge.net/FastRWeb/),FastRWeb 是一个基础架构环境, 可以让R脚本运行在任何WebServer上,展示数据和图形,用户通过URL地址与R脚本进行通信交互。

目录:

  • 运行架构原理
  • R3.2.5 安装 (centos7)
  • RStudio安装配置 (centos7)
  • FastRWeb安装配置 (centos7)
  • 开发demo: hello world

运行架构原理:


  1. Clinet向主机的Rserve服务发送http请求
  2. Rserve调用FastRWeb环境,执行R脚本
  3. 将执行结果返回
  4. 在实际工作中,不可避免会遇到一种情况,R脚本执行的结果保存在主机的物理磁盘上,为了让client 通过 http 能访问生成的文件,可以将文件存储在 httpd 服务对应的 html 目录下,R返回给Client 的可能是文件名,client 获取到R返回的文件名后,再次发起 http 请求,访问存储在 httpd 服务站点文件。
  5. 注意:此场景下,client 发起的两次请求实际上是调用主机的不同服务(即,Rserve服务和 httpd 服务, 所以要注意请求中不同服务的监听端口)

Centos7 R3.2.5软件包安装:


  • centos 系统软件包下载地址 (https://cran.r-project.org/src/base/R-3/), 截止当前,最新版本3.3.1,  我们选择安装的版本为:3.2.5
  • 安装R软件依赖程序包,命令清单如下:

    yum install -y gcc
    yum install -y gcc-c++
    yum install -y gcc-gfortran
    yum install -y readline-devel
    yum install -y libXt-devel
    yum install –y libcur*
    yum install –y libxml*
    yum install –y openssl*
  • 将下载到本机的R安装包软件上传文件至linux主机的某目录下, 执行解压命令:tar -zxvf R-3.2.5.tar.gz
  • 命令:cd R-3.2.5  (切换至解压后的目录)
  • 命令:mkdir -p /home/work/R
  • 命令:./configure --prefix=/home/work/R --enable-R-shlib  (设置R的工作目录)
  • 完成配置后界面如下显示,则OK

    R is now configured for x86_64-pc-linux-gnu
    
      Source directory:          .
      Installation directory:    /home/work/R
    
      C compiler:                gcc -std=gnu99  -g -O2
      Fortran 77 compiler:       gfortran  -g -O2
    
      C++ compiler:              g++  -g -O2
      C++ 11 compiler:           g++  -std=c++11 -g -O2
      Fortran 90/95 compiler:    gfortran -g -O2
      Obj-C compiler:          
    
      Interfaces supported:      X11
      External libraries:        readline
      Additional capabilities:   NLS
      Options enabled:           shared R library, shared BLAS, R profiling
    
      Capabilities skipped:      PNG, JPEG, TIFF, cairo, ICU
      Options not enabled:       memory profiling
    
      Recommended packages:      yes
    
    configure: WARNING: you cannot build info or HTML versions of the R manuals
    configure: WARNING: you cannot build PDF versions of the R manuals
    configure: WARNING: you cannot build PDF versions of vignettes and help pages
    [root@R R-3.2.5]#
  • 开始编译安装
  • 命令:make
  • 命令:make install
  • 命令:vim ~/.bash_profile   (配置环境变量,在打开的文件中加入下面一行代码,此处的R路径为上面安装时的–prefix=/home/work/R)

    PATH=/home/work/R/bin:$PATH
  • 命令:source ~/.bash_profile   (使修改生效)
  • 完成操作后执行: R   (能正常进入R命令行,则ok,如下图 )

RStudio 安装配置:


  • RStudio是一个非常实用的R语言的IDE,其服务器端软件,可以将其构建在Linux服务器上,然后通过远程网页登陆访问,使得R语言的使用获得了极大的方便,也看成是一个小小的云服务,官网(https://www.rstudio.com/home/),如下图:RStudio Server 提供免费和商业授权版本
  • 下载Centos 系统对应的软件安装包 (rstudio-server-rhel-0.99.903-x86_64.rpm),上传至主机
  • 命令: yum install --nogpgcheck rstudio-server-rhel-0.99.903-x86_64.rpm  (软件安装)
  • 命令: echo ‘rsession-which-r=/home/work/R/bin/R‘ >> /etc/rstudio/rserver.conf   (结合上下文看此参数配置)
  • RStudio 服务相关参考命令清单如下(仅作参考资料,在此步不用执行):

    systemctl status rstudio-server
    systemctl start rstudio-server
    systemctl stop rstudio-server
    systemctl restart rstudio-server
  • 执行下面的命令清单,给RStudio添加操作用户和权限
    adduser rstudio
    passwd rstudio
    usermod -g rstudio-server rstudio
  • 命令:systemctl start rstudio-server  (启动rstudio-server 服务,默认监听端口 8787)
  • 如果一切OK,通过浏览器就可以正常访问,如下:

FastRWeb安装:


  • FastRWeb 可以快速地构建一个R的Web环境,FastRWeb 底层依赖于CGI程序,也就是说,只要能支持CGI程序的WebServer,就可以运行FastRWeb
  • 命令: yum install -y cairo-devel    (安装FastRWeb依赖包Cairo)
  • 命令:R    (进入R命令行,FastRWeb 和 Rserve 安装包都是在R命令行下在线安装)

  • R命令: install.packages("FastRWeb")    (此过程中选择安装镜像,centos7环境,选择 22 http mirrors,  http cran mirrors 选择 21 (中国厦门))
  • 安装成功后如下图:

    g++ Rconnection.o Rcgi.o -o Rcgi -lcrypt
    make[1]: Leaving directory `/tmp/RtmpdpC13f/R.INSTALL53b568210efe/FastRWeb/src/Rcgi‘
    rm -rf ../inst/Rcgi
    cp -r Rcgi ../inst
    mkdir ../inst/cgi-bin
    touch null.so null.dll # to make R CMD SHLIB happy
    installing to /home/work/R/lib64/R/library/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)
    
    The downloaded source packages are in
        ‘/tmp/RtmpkNJBem/downloaded_packages’
    Updating HTML index of packages in ‘.Library‘
    Making ‘packages.html‘ ... done
    > 
  • R命令:install.packages("Rserve")
  • 安装成功后界面如下图:

    ./mergefat Rserve "/home/work/R/lib64/R/bin/Rserve"
    ./mergefat Rserve.dbg "/home/work/R/lib64/R/bin/Rserve.dbg"
    installing via ‘install.libs.R‘ to /home/work/R/lib64/R/library/Rserve
    ** R
    ** inst
    ** preparing package for lazy loading
    ** help
    *** installing help indices
    ** building package indices
    ** testing if installed package can be loaded
    * DONE (Rserve)
    
    The downloaded source packages are in
        ‘/tmp/RtmpkNJBem/downloaded_packages’
    Updating HTML index of packages in ‘.Library‘
    Making ‘packages.html‘ ... done
    > 
  • R命令: q()      (退出R命令行,返回linux命令行)

  • 创建FastRWeb基于Rserve的运行环境(切换至FastRWeb安装目录, 先查一下安装的目录,然后切换至该目录)
  • 命令: find / -name FastRWeb   (查 FastRWeb 安装目录,如下图)
  • 命令:cd /home/work/R/lib64/R/library/FastRWeb     (切换至安装目录)
  • 命令:./install.sh   (安装基于Rserve的运行环境,生成 /var/FastRWeb 目录)
  • 命令:cd /var/FastRWeb/code
  • 命令:ls -la    (查看文件内容)
    1. rserve.conf: Rserve的启动参数
    2. rserve.R:    Rserve的启动脚本
    3. start:         启动命令
  • 命令:vim  rserve.conf   (默认情况下,rserve是提供socket通信接口,我们要将它改成http的通信接口,代码如下)

    http.port 8888
    remote enable
    source /var/FastRWeb/code/rserve.R
    control enable
  • 修改文件:rserve.R, 在文件上的最上面增加2行代码,如下
    library(FastRWeb)
    .http.request <- FastRWeb:::.http.request
  • 命令:  ./start   (开启服务,注意:必须切换至 /var/FastRWeb/code 目录下执行)
  • 可通过 ps -aux|grep Rserve   和  netstat -nltp|grep Rserve  查看服务状态,如图:
  • 要停止服务,可通过 kill 进程,如上图的进程号,执行命令: kill -9 53652
  • 安装完成后,通过浏览器能正常访问则OK, 默认监听端口 8888 (http://192.168.0.103:8888/info),  如下图

开发Demo: hello world


  • 在Rstudio IDE 编写如下代码保存,命名为Demo.R, 你可以使用本地Windows环境下的 rstudio ide ,也可使用浏览器上的IDE 环境

    run <- function(...){
    
      oprint("hello world")
      done()
    }
  • 如果是本地环境开发的,将保存的Demo.R 文件上传至 /var/FastRWeb/web.R 目录下
  • 在浏览器执行: http://192.168.0.103:8888/Demo, 结果如下图则OK
时间: 2024-08-02 09:51:01

R(二): http与R脚本通讯环境安装的相关文章

【R笔记】给R加个编译器——notepad++

R的日记-给R加个编译器 转载▼ R是一款强大免费且开源的统计分析软件,这是R的长处,可也是其“缺陷”的根源:不似商业软件那样user-friendly.记得初学R时,给我留下最深印象的不是其功能的强大(体会到的其实是),而是其简洁如一张白纸的操作界面,再加上复杂而劳累的一遍遍敲击键盘,感觉用其做一点点统计分析都是噩梦.时至今日,R的编译界面,我依然觉得是用过的软件中最烂的那类.一个这么好的软件为什么就不做一个好用的界面呢? 幸运的是,到目前已经有好几个第三方的编译器可以和R联接.用这些编译器有

lnmp环境安装sh脚本

闲来无事自己写了个LNMP环境的安装脚本. 该脚本可以单独安装nginx,mysql,php,也可以一步到位直接安装所有软件.其中,nginx安装完,需根据具体环境修改配置文件,再启动服务.mysql,php安装完服务自动启动. 环境: 软件安装路径:/opt/apps/ 数据存放目录:/opt/data/ 安装包下载目录:/opt/src/ 具体软件版本如下: nginx-1.10.1 mysql-5.6.32 php-7.0.10 脚本如下: # more lnmp_install.sh #

基于Groovy搭建Ngrinder脚本调试环境

介绍 最近公司搭建了一套压力测试平台,引用的是开源的项目 Ngrinder,做了二次开发,在脚本管理方面,去掉官方的SVN,引用的是Git,其他就是做了熔断处理等. 对技术一向充满热情的我,必须先来拥抱下传说中的压测平台. 一.开发脚本环境配置项: 安装JDK1.7+,Git,Maven 二.新建一个maven项目 三.创建一个groovy脚本TestRunner.groovy,添加以下内容 这个脚本写的就是,向服务端发送Json 格式请求,比较简单,未涉及到上下文参数化,混合场景配置比例,方法

uboot移植(二)——uboot mkconfig脚本分析

uboot移植(二)--uboot  mkconfig 脚本分析 一:mkconfig脚本的作用 mkconfig是通过传入的参数来脚本用于某个开发板配置uboot,主要是通过判断其输入的参数来创建符号链接文件,使它们指向该开发板对应的配置文件来进行配置. (1)配置CPU架构相关的文件:在include目录下创建asm文件,指向include/asm-arm (2)配置SOC类型相关的文件:include目录下创建regs.h文件,指向include/s5pc110.h include/asm

crontab中运行newLISP脚本的环境变量设置

今天遇到一个问题,在终端里运行newLISP脚本,一切正常,移动到crontab中就不行.即便crontab -e命令运行在同一个用户下,还是有问题. 由于newLISP脚本要用到hive和hadoop,估计是环境变量的问题.所以先用newLISP shell运行(env)命令,将当前环境变量记录到文件evn.lsp中. 然后在newLISP脚本中加载之. 下面是env.lsp文件部分内容: (set 'local-envs '(("LC_PAPER" "en_US.UTF-

JAVA环境下利用solrj二次开发SOlR搜索的环境部署常见错误

问题一:出现控制台坏的响应错误一Bad request 控制台出现错误如下: Bad Request request: http://hostIP:8983/solr/update?wt=javabin&version=1 解决方法: 出现以上错误的原因是,solr服务器上配置的Field和javabean提交的Field不能对应, 导致solr服务器找不到域,拒绝访问. 打开SOLR_HOME下的conf文件夹找到schema.xml文件,在其中添加对应的域. 例如以下代码添加了:title,

ssh连接远程主机执行脚本的环境变量问题

用ssh命令ssh [email protected] "/web/tomcat-7000/bin/startup.sh" 登陆到远程机器remote上执行脚本时,遇到一个奇怪的问题:tomcat服务不能启动 Neither the JAVA_HOME nor the JRE_HOME environment variable is definedAt least one of these environment variable is needed to run this progr

\r、\n与\r\n

1.回车换行动作 当我们使用计算机写文章时,写到每行末尾,需要换到下一行继续写,包含着两个动作,一个叫回车,即回到本行行首:一个叫换行,即切换到新的一行.注意这是两个动作,而且这两个动作是完成此任务的最简形式.而现在敲的回车键其实包含了回车和换行两个动作,全称应叫回车换行,简称回车. 如下图: 2.回车换行存储 上面所说的是动作,而想要把打的文字存储起来就会涉及到如何把相应的回车换行符号存储起来的问题,方便下次打开时,会按照当前的格式显示,这就会应用到转义字符. 回车:Carriage Retu

【Unity3D基础教程】给初学者看的Unity教程(二):所有脚本组件的基类 -- MonoBehaviour的前世今生

作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 引子 上一次我们讲了GameObject,Compoent,Time,Input,Physics,其中Time,Input,Physics都是Unity中的全局变量.GameObject是游戏中的基本物件.GameObject是由Component组合而成的,GameObject本身必须有Transform的Component,这也加深了我们