xwMOOC 컴퓨터

R 개발환경과 서비스 배포 환경

학습 목표

  • RStudio 개발환경과 서비스 배포환경을 이해한다.
  • RStudio 통합개발환경을 설치한다.
  • Shiny 서비스를 설치한다.

1. R 개발환경과 서비스 배포환경 개요

R 언어로 데이터 제품(Data Product)를 개발하기 위해서 기본적으로 RStudio를 통합개발환경으로 Shiny 를 서비스 배포 플랫폼으로 많이 사용한다.

R 기반 데이터 제품 개발 툴체인

1.1 리눅스 가상 컴퓨터 준비

vagrant init ubuntu/trusty64 명령어를 통해서 리눅스 가상 컴퓨터를 준비한다.

$ vagrant init ubuntu/trusty64
$ vagrant up --provider virtualbox
$ vagrant ssh

2. RStudio 통합개발환경 서버 설치

r-basegdebi-core를 설치한 다음에 RStudio 개발환경을 설치한다. 최신 버전을 RStudio 다운로드 웹사이트에서 wget을 통해 다운로드하고 나서 설치한다.

vagrant@vagrant-ubuntu-trusty-64:~$ sudo apt-get install -y r-base-core
vagrant@vagrant-ubuntu-trusty-64:~$ sudo apt-get install -y gdebi-core
vagrant@vagrant-ubuntu-trusty-64:~$ wget https://download2.rstudio.org/rstudio-server-0.99.489-amd64.deb
vagrant@vagrant-ubuntu-trusty-64:~$ sudo gdebi rstudio-server-0.99.489-amd64.deb

2.1 RStudio IDE 접속

이제 웹브라우져를 열고 포트번호(port, 8787)를 뒤에 :8787을 붙여 http://localhost:8787/ 혹은 만약 외부 컴퓨터에 설치한 경우 해당 IP를 http://169.53.232.11:8787/와 같이 입력하면 Sign in to RStudio 화면에 사용자명(username:)과 비밀번호(Password:)를 넣고 Sign In하라고 한다. 절대 root권한을 가지고 로그인하면 들어가지 않는다. root권한을 가지고 사용자를 추가한 후에 추가된 사용자명을 가지고 로그인한다. useradd를 통해서 사용자 추가를 추가하고, userdel을 통해서 사용자를 삭제한다. adduser 혹은 useradd 동일한 명령어다. xwmooc 사용자를 sudo useradd -m xwmooc 혹은 sudo adduser -m xwmooc 명령어로 설정했으니, 다음올 비밀번호를 설정한다. sudo passwd xwmooc 비밀번호를 두번 입력하게 되면 설정이 완료되었다.

부랑자를 설치한 경우 ID: vagrant, 비밀번호 vagrant를 사용해서 로그인하면 된다.

주의: sudo useradd -m xwmooc 명령어에서 -m 옵션 플래그는 홈디렉토리를 생성하게 만든다. 그래야지만 정상적으로 RStudio 작업이 가능하다.

vagrant@vagrant-ubuntu-trusty-64:~$ sudo useradd -m xwmooc
vagrant@vagrant-ubuntu-trusty-64:~$ sudo adduser -m xwmooc
adduser: The user `xwmooc' already exists.
vagrant@vagrant-ubuntu-trusty-64:~$ sudo passwd xwmooc
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

이제 RStudio를 사용하기 위해서 http://localhost:8787/ 혹은 http://169.53.232.11:8787/ 사이트에서 사용자명 xwmooc를 넣고 비밀번호를 입력하게 되면 RStudio를 사용할 수 있게 된다.

3. Shiny 서버 설치 2

기본적으로 R 라이선스가 GPL을 따르기 때문에 Shiny 서버도 동일한 라이선스를 따르니 리눅스를 이용하는 기분으로 소프트웨어를 사용한다. 이제 Shiny 서버를 클라우드에 구축하기 위해서 Shiny 서버를 다운로드하여 설치한다. 우분투 기준 Shiny Server v1.3.0.403 버젼 기준으로 설치해 나간다. 자세한 내용은 영어 설치페이지http://www.rstudio.com/products/shiny/download-server/를 참조한다.

운영체제 버젼 확인 결과 우분투 14.04 버젼으로 Rstudio 에서 설치시 권장하는 우분투 12.04보다 상위버젼으로 바로 R부터 설치를 진행해 나갈 수 있다. r-base를 설치하고 난 다음에는 Shiny 서버를 설치하기 전에 Shiny R 팩키지를 설치해야한다. 물론 R로 들어가서 install.packages('shiny', repos='http://cran.rstudio.com/')를 해서 shiny 팩키지를 설치해도 된다.

vagrant@vagrant-ubuntu-trusty-64:~$ sudo su - -c "R -e \"install.packages('shiny', repos='http://cran.rstudio.com/')\""

RShiny 패키지를 설치한 다음에 gdebi를 다음에 설치해야 한다. 그리고 나서 gdebi를 통해서 Shiny 서버를 설치할 수 있다.

wget을 통해서 Shiny 서버 설치 파일을 다운로드받고, gdebi를 통해서 Shiny 서버를 설치한다.

vagrant@vagrant-ubuntu-trusty-64:~$ sudo apt-get install gdebi-core
vagrant@vagrant-ubuntu-trusty-64:~$ wget https://download3.rstudio.org/ubuntu-12.04/x86_64/shiny-server-1.4.1.759-amd64.deb
vagrant@vagrant-ubuntu-trusty-64:~$ sudo gdebi shiny-server-1.4.1.759-amd64.deb

Shiny 서버가 잘 실행되고 있는지 status shiny-server 명령어를 통해서 확인해보고, 만약 서비스가 시작되지 않았다면, sudo start shiny-server 명령어로 실행시킨다.

vagrant@vagrant-ubuntu-trusty-64:~$ status shiny-server
shiny-server start/running, process 14553

vagrant@vagrant-ubuntu-trusty-64:~$ sudo start shiny-server
start: Job is already running: shiny-server

이제 웹브라우져를 열고 포트번호(port, 3838)를 뒤에 :3838을 붙여 http://localhost:3838/ 혹은 http://169.53.232.11:3838/와 같이 입력하면 브라우져 상단에 다음과 같은 메시지가 출력되면 설치가 완료되고 사용준비가 완료된 것이다.

첫 설치 페이지 우측 하단에 rmarkdown 설치가 되지 않아 생기는 오류사항은 R에서 install.packages("rmarkdown")를 통해서 rmarkdown 팩키지를 설치해서 해결할 수 있고 다음과 같은 메시지가 보이면 설치가 모두 완료된 것이다.

With Shiny and `rmarkdown` installed, you should see a Shiny doc above.

4. shinyapp.io 공용 Shiny 서버 설정

Tools –> ShinyApps –> Manage Accounts...를 통해 RStudio에서 바로 https://www.shinyapps.io/ 공용 Shiny 서버로 응용프로그램을 배포할 수 있다. 먼저 https://www.shinyapps.io/ 웹사이트에 접속해서 계정을 생성한다.

https://www.shinyapps.io/ 웹사이트에 로그인한 뒤에 사용자명(우측상단)을 클릭하고 Tokens를 클릭하면 토큰과 비밀키 정보가 함께 볼 수 있다.

shinyapps::setAccountInfo(name='xwmooc',
        token='C9CXXXXXXXXXXXXXXXXXXXXX',
        secret='<SECRET>')

토큰 정보를 Tools –> ShinyApps –> Manage Accounts...에 등록한다.

주의: Shiny 응용프로그램을 배포하기 위해서 ui.R, server.R로 응용프로그램이 나눠줘야 한다.

iot-shiny-shinyapp-io.png

5. Vagrant 부랑자 R 툴체인 설치

RStudio GitHub

# -*- mode: ruby -*-
# vi: set ft=ruby :

$rstudio_script = <<RSTUDIO
    sudo apt-get update
    sudo apt-get install -y r-base-core
    sudo apt-get install -y gdebi-core
    wget https://download2.rstudio.org/rstudio-server-0.99.489-amd64.deb
    sudo gdebi -n rstudio-server-0.99.489-amd64.deb
RSTUDIO

$shiny_script = <<SHINY
    sudo apt-get update
    sudo apt-get install -y r-base-core
    sudo apt-get install -y gdebi-core
    sudo R -e "install.packages('shiny', repos = 'http://cran.rstudio.com/', dep = TRUE)"
    sudo R -e "install.packages('rmarkdown', repos = 'http://cran.rstudio.com/', dep = TRUE)"
    sudo R -e "install.packages('dplyr', repos = 'http://cran.rstudio.com/', dep = TRUE)"
    sudo R -e "install.packages('pastecs', repos = 'http://cran.rstudio.com/', dep = TRUE)"
    sudo R -e "source('http://bioconductor.org/biocLite.R'); biocLite('GenomicRanges')"
    wget https://download3.rstudio.org/ubuntu-12.04/x86_64/shiny-server-1.4.1.759-amd64.deb
    sudo gdebi -n shiny-server-1.4.1.759-amd64.deb
SHINY

Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu/trusty64"

  config.vm.network "forwarded_port", guest:8787, host:8787
  config.vm.network "forwarded_port", guest:3838, host:3838

  config.vm.provider "virtualbox" do |vb|
    vb.memory = "2048"
  end

  config.vm.provision "shell", inline: $rstudio_script
  config.vm.provision "shell", inline: $shiny_script
end

6. 도커(Docker) R 툴체인 설치

boot2docker를 사용해서 윈도우 환경에 도커를 설치하거나 리눅스 환경에서 도커를 설치하고 도커 허브에서 docker pull 명령어를 통해서 도커 이미지를 받아 컨테이너를 생성한다.

$ docker pull rocker/rstudio
$ docker pull rocker/shiny

7. 클라우드 서비스 R 개발 툴체인 구축

클라우드 서비스 제공업체 중 하나인 IBM 소프트레이어(SoftLayer) 위에 R 툴체인 구축하는 사례를 RStudio IDE와 Shiny 서버 설치 참조한다.

8. 최신버젼 R 코어 엔진 탑재

sudo apt-get install r-base 명령어를 통해서 R 코어 엔진을 설치할 경우 심하면 2013년 버젼이 설치될 수도 있다. version 명령어를 통해서 3.0.2 버젼임을 알 수 있다.

> version
platform       x86_64-pc-linux-gnu         
arch           x86_64                      
os             linux-gnu                   
system         x86_64, linux-gnu           
status                                     
major          3                           
minor          0.2                         
year           2013                        
month          09                          
day            25                          
svn rev        63987                       
language       R                           
version.string R version 3.0.2 (2013-09-25)
nickname       Frisbee Sailing             

최신 R 코어로 교체하는 방법은 다음과 같다.

  1. R을 제거한다.
  2. /etc/apt/sources.list 목록에 rstudio 저장소 목록을 추가한다.
    • deb http://cran.rstudio.com/bin/linux/ubuntu trusty/
$ sudo apt-get remove r-base-core
$ sudo nano /etc/apt/sources.list
  1. 공개키를 추가한다.
$ gpg --keyserver keyserver.ubuntu.com --recv-key E084DAB9
$ gpg -a --export E084DAB9 | sudo apt-key add -
  1. 목록을 갱신하고 R 코어 엔진을 재설치한다.
$ sudo apt-get update && upgrade
$ sudo apt-get install r-base
> version
platform       x86_64-pc-linux-gnu         
arch           x86_64                      
os             linux-gnu                   
system         x86_64, linux-gnu           
status                                     
major          3                           
minor          2.3                         
year           2015                        
month          12                          
day            10                          
svn rev        69752                       
language       R                           
version.string R version 3.2.3 (2015-12-10)
nickname       Wooden Christmas-Tree