• 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命令行,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
      • 也可用如下命令
        [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
  • 相关阅读:
    android 访问SD卡的方法
    android 用Achartengine 作图
    hello
    IIS 7.0 "确认文件是否存在"功能
    test
    收藏:如何在Web页面上直接打开、编辑、创建Office文档
    JavaScript面向对象技术
    正则表达式30分钟入门教程
    JWT有状态登陆与无状态登陆
    20条JavaScript代码简洁的写法
  • 原文地址:https://www.cnblogs.com/tgzhu/p/5770090.html
Copyright © 2020-2023  润新知