结合实际的工作环境,在开始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 compiler: gfortran -g -O2 C++ compiler: g++ -g -O2
    C++ compiler: g++ -std=c++ -g -O2
    Fortran / 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.]#
  • 开始编译安装
  • 命令: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[]: 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
    • 也可用如下命令
      [root@hdpjn06 bin]# pwd
      /home/work/R/bin
      [root@hdpjn06 bin]# ll
      total 36
      -rwxr-xr-x 1 root root 8790 Mar 2 08:35 R
      -rwxr-xr-x 1 root root 22540 Mar 2 08:35 Rscript
      [root@hdpjn06 bin]# ./R CMD Rserve --RS-conf /var/FastRWeb/code/rserve.conf --vanilla --no-save
  • 安装完成后,通过浏览器能正常访问则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

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

  1. 二、【未来】React环境安装:npx

    搭建React的开发环境的第二种方法(新-未来推荐): https://reactjs.org/docs/create-a-new-react-app.html 一. npx简介: 1. npm v5 ...

  2. C++入门到理解阶段二基础篇(1)——简介与环境安装

    1.C++ 简介 C++ 是一种静态类型的.编译式的.通用的.大小写敏感的.不规则的编程语言,支持过程化编程.面向对象编程和泛型编程. C++ 被认为是一种中级语言,它综合了高级语言和低级语言的特点. ...

  3. ES6 学习笔记 (2)-- Liunx环境安装Node.js 与 搭建 Node.js 开发环境

    笔记参考来源:廖雪峰老师的javascript全栈教程 一.安装Node.js 目前Node.js的最新版本是6.2.x.首先,从Node.js官网下载对应平台的安装程序. 1.下载 选择对应的Liu ...

  4. selenium介绍及环境安装

      selenium简介: seelenium是web应用程序自动化工具,通过自动操作浏览器,进行点击.输入.回车.返回等来模拟用户的真实行为.如何理解和看待selenium项目,selenium官方 ...

  5. Linux下R环境安装

    R环境的两种安装方式,源码编译安装和yum在线安装 第一种:源码编译安装 1.首先,从官网上下载3.5.0版本 2.下载完后记得解压,我的习惯是解压在/usr/local下面 tar -zxvf R- ...

  6. R 语言 Windows 环境 安装与Windows下制作R的package--Rtools

    1.1    预装的软件 (所有软件都可以在 http://www.biosino.org/R/R-doc/Rm/ 和 http://www.biosino.org/R/requiredSoftWar ...

  7. 学习笔记:CentOS7学习之二十:shell脚本的基础

    目录 学习笔记:CentOS7学习之二十:shell脚本的基础 20.1 shell 基本语法 20.1.1 什么是shell? 20.1.2 编程语言分类 20.1.3 什么是shell脚本 20. ...

  8. R语言·文本挖掘︱Rwordseg/rJava两包的安装(安到吐血)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- R语言·文本挖掘︱Rwordseg/rJava ...

  9. 【R语言系列】R语言初识及安装

    一.R是什么 R语言是由新西兰奥克兰大学的Ross Ihaka和Robert Gentleman两个人共同发明. 其词法和语法分别源自Schema和S语言. R定义:一个能够自由幼小的用于统计计算和绘 ...

随机推荐

  1. Android FM模块学习之一 FM启动流程

    最近在学习FM模块,FM是一个值得学习的模块,可以从上层看到底层. 上层就是FM的按扭操作和界面显示,从而调用到FM底层驱动来实现广播收听的功能. FM启动流程:如下图: 先进入FMRadio.jav ...

  2. 常用http请求状态码含义

    1**  ----临时响应 2**  ----成功响应 3**  ----重定向 4**  ----请求错误 5**  ----服务器错误 常用的几个如下: 200---服务器成功返回网页 301-- ...

  3. Linux Shell 命令

    (1) 操作一个文件并对文件查询行进行切分处理 (或者1-) (2) 操作文件进行去重并显示重复次数 | sort | uniq -c (3) 查看总的汇总行数 | sort | uniq -c | ...

  4. C# 入门篇之listview用法

    在用listview,经常对各种属性都不了解,用完了,下次又忘:写个随笔记记. 看到别人已经有总结很详细的,就直接转过来了,可能中间会有一些自己加的. ------------------------ ...

  5. codeforce Group Photo 2 (online mirror version)

    题目大意: 有n个矩形在地上排成一列,不可重叠,已知他们的宽度w和高度h,现在使至多[n / 2]个矩形旋转90度,问最后可以用多小的矩形恰好覆盖这n个矩形,求满足条件的最小矩形面积. n, w, h ...

  6. Apache CXF 102 CXF with REST

    前言 续上篇Apache CXF 101,摘抄部分REST概念性知识,以运行实例考察CXF对REST的支持. 目录 1 REST简介 2 工具 3 运行实例 内容 本Spike记录中内容,如无特别指出 ...

  7. Sprint第二个冲刺(第五天)

    一.Sprint 计划会议: 容杰龙继续完善昨天的SQLite修改数据操作,待全部操作完善后交给炜杰进行布局规范和整合. 二.Sprint周期:   看板: 燃尽图:

  8. 计算机中如何表示数字-07IEEE754浮点数标准

    由于不同机器所选用的基数.尾数位长度和阶码位长度不同,因此对浮点数的表示有较大差别,这不利于软件在不同计算机之间的移植.为此,美国IEEE(电器及电子工程师协会)提出了一个从系统角度支持浮点数的表示方 ...

  9. 图像处理之face morphing

    以前在论坛.微博经常看到一张脸,五官长得像A,脸型似乎又是B,觉得很有意思. 比如像这张图片.这张图片应该是网友用Photoshop完成的,他们取了郭大爷的五官,放在金元帅的脸上,在把边缘处理平滑. ...

  10. 文件API及其特点

    Internet Explorer 10 和使用 JavaScript 的 Windows 应用商店应用引入了对文件 API 的支持.文件 API 是万维网联合会 (W3C) 的一个 Web 规范草案 ...