R (Rserve)과 Rails 간의 협력 (Centos)

목적



rails에 의한 어플리케이션에서, R에 의한 처리를 이용한다

환경



Centos6.6
Rails 4.2.3
R3.2.3
Rserv: R에 의한 처리 제공

절차



R 설치



R 설치
ぃ tp // 이 m/나_가/있어
#yum -y install R
#rpm -qa | grep R-

R_HOME에 환경 변수 설정
export R_HOME=/Library/Frameworks/R.framework/Resources

R 시작
$R

대문자 R
명령으로 R을 시작할 수 있습니다.

Rserve



R 명령으로 시작한 R에서 Rserv 설치
install.packages("Rserve")


설치처는 이하가 된다   
/usr/lib64/R/library/Rserve

주1



아래의 표시가 되면 다운로드할 수 있다



ribrary()
명령을 치면 Rserv가 있음을 확인할 수 있습니다.


주2

Rserv 시작



$R CMD Rserve 명령으로 터미널에서 시작합니다.
다음 메시지가 나오면 성공
$ R CMD Rserve

R version 3.2.3 (2015-12-10) -- "Wooden Christmas-Tree"
Copyright (C) 2015 The R Foundation for Statistical Computing
Platform: x86_64-redhat-linux-gnu (64-bit)

R は、自由なソフトウェアであり、「完全に無保証」です。 
一定の条件に従えば、自由にこれを再配布することができます。 
配布条件の詳細に関しては、'license()' あるいは 'licence()' と入力してください。 

R は多くの貢献者による共同プロジェクトです。 
詳しくは 'contributors()' と入力してください。 
また、R や R のパッケージを出版物で引用する際の形式については 
'citation()' と入力してください。 

'demo()' と入力すればデモをみることができます。 
'help()' とすればオンラインヘルプが出ます。 
'help.start()' で HTML ブラウザによるヘルプがみられます。 
'q()' と入力すれば R を終了します。 

Rserv started in daemon mode.
  • 데몬 정지
    lsof -i : 6311에서 포트 번호에서 프로세스 ID를 찾습니다
  • lsof -i:6311
    COMMAND   PID            USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    Rserve  12173 higashinakano01    3u  IPv4 882750      0t0  TCP localhost:6311 (LISTEN)
    

    다음 명령으로 프로세스 끊기
    kill -9 PID
    kill -9 12173
    

    Rserve-Ruby-client



    Rserv 클라이언트 설치

    콘솔에서 gem으로 클라이언트 설치
    gem install rserve-client
    

    Rails 애플리케이션 만들기



    참고 ぃ tp // 코 m / 히로 후 미야시마 / ms / 7c98 에 22246f0
    애플리케이션 만들기
    r_test라는 이름으로 샘플 앱 만들기
    rails new r_test
    

    애플리케이션이 생성됨

    Gemfile Rails 설정



    Gemfile에 다음을 추가합니다.
    gem 'rserve-client', require: 'rserve'
    

    그건 그렇고, R에 국한된 이야기는 아니지만,
    therubyracer의 코멘트 아웃을 제거하는 것도 잊지 마세요.


    추가 후
    bundle install
    명령으로 적용

    서버 자동 시작 설정



    /usr/lib64/R/library/Rserve/libs/Rserve
    경로는 환경에 따라 다름

    /config/environments/development.rb

    developement.rb
    config.after_initialize do
      rserve_port = 6311
      rserve_path = "/usr/lib64/R/library/Rserve/libs/Rserve"
      system("R CMD #{rserve_path} --RS-port #{rserve_port} --slave")
    end
    

    컨트롤러, 뷰 생성


    rails g controller page test
    

    routes.rb



    루트 파일에 컨트롤러 추가
    config/routes.rb

    routes.rb
    get 'page/test'
    

    컨트롤러



    app/controllers/page_controller.rb
    아래 참조
    # encoding:UTF-8
    class PageController < ApplicationController
    
      def test
        c = Rserve::Connection.new
        c.assign("root", Rails.root.to_s)
    
        c.eval <<-EOF
          # 標準正規分布に従う乱数の発生
          x = rnorm(100,0,1)
          # ヒストグラムを作成して保存
          png(paste(root, "/app/assets/images/test.png", sep=""))
          hist(x)
          dev.off()
        EOF
      end
    
    end
    

    보기



    참조
    app/views/page/test.html.erb

    test.html.erb
    <h1>R on Rails with Rserve</h1>
    <%= image_tag 'test.png' %>
    ~                              
    

    서버 시작



    WEBRick 서버를 시작합니다.
    $rails s -b 0.0.0.0
    

    확인



    http://ip 주소:포트 번호/page/test
    브라우저에서 액세스



    Ruby on rails에서 Rserv를 사용하여 R 계산 결과를 출력 할 수있었습니다.

    다른 방법



    rsruby 설치



    Rserve



    sakuraVPScentos에 넣기
    htp : // bg. 오. 네. jp / xmldtp / e / 343b05 ef5090 ea 825 a 6d0b 8c79f3b5

    트러블



    주1





    22까지의 서버에서 선택해도 오류가 발생합니다.
    사실 여기에 나오는 거울은 전부가 아니다.

    선택에 22를 선택하고 다른 후보를 선택하면,
    더 가까운 서버 찾기
    일본 서버를 선택 Japan YAMAGAT을 선택했습니다.

    주2



    그 후, Rserv가 시작될 때,
    /mergefat Rserve.dbg "/usr/lib64/R/bin/Rserve.dbg"
    installing via 'install.libs.R' to /usr/lib64/R/library/Rserve
    ** R
    ** inst
    ** preparing package for lazy loading
    ** help
    *** installing help indices
      converting help for package ‘Rserve’
        finding HTML links ...  完了 
        Rserv                                   html  
        run.Rserve                              html  
        self                                    html  
    ** building package indices
    ** testing if installed package can be loaded
    * DONE (Rserve)
    Making 'packages.html' ...  完了 
    
     ダウンロードされたパッケージは、以下にあります 
        ‘/tmp/RtmpWMDbDr/downloaded_packages’ 
     '.Library' 中のパッケージの HTML 索引を更新します 
    Making 'packages.html' ...  完了 
    

    이 메시지가 다음과 같이
    $ R CMD Rserve
    /usr/lib64/R/bin/Rcmd: line 62: exec: Rserve: not found
    

    Rserv 명령이 시작되지 않았고 디렉토리를 실제로 찾을 수 없으면 Rserv 설치가 실패했을 수 있습니다.
    R에서 설치시 로그에서
    cp: cannot create regular file `/usr/lib64/R/bin/Rserve': 許可がありません
    make: [server] エラー 1 (無視されました)
    ./mergefat Rserve.dbg "/usr/lib64/R/bin/Rserve.dbg"
    cp: cannot create regular file `/usr/lib64/R/bin/Rserve.dbg': 許可がありません
    make: [server] エラー 1 (無視されました)
    

    라고 하는 것이 있는 경우, 실패하고 있다.
    이 경우 디렉토리가 만들어지지 않은 것처럼

    제대로 작성되지 않은 경우 R을 시작한 권한이 부족하기 때문에 올바르게 설치되지 않았을 가능성이 있습니다.
    sudo에서 R을 시작한 후 설치 등으로 해결할 수 있습니다.

    좋은 웹페이지 즐겨찾기