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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM