Google의 GCP(Google Cloud Platform)에 Shiny Server 구축

이 글은 다음을 참고하였다.

https://github.com/paeselhz/RStudio-Shiny-Server-on-GCP

데이터 분석에서도 여러가지 이유로 클라우드의 사용이 필요해지는 경우가 많아지고 있다. 여기에서는 Google의 클라우드 서비스인 GCP(Google Cloud Platform)에 RStudio Server 버전과 Shiny Server를 구축하는 방법을 알아본다.

먼저, GCP를 사용하기 위해서는 사용자 계정을 만들기 위한 이메일과 결제용 신용카드 정보가 필요하다(최근 Google, AWS, 그리고 MS와 같은 클라우드 서비스 회사에서는 최초 사용시 무료로 인프라를 사용할 수 있는 크레딧을 제공하고 있지만, 이런 경우에도 결제 정보는 제공해야 한다).

Google에서 사용할 사용자 계정용 이메일은 gmail을 사용하면 되지만, gmail 이외에 본인이 사용하던 다른 이메일 주소를 사용하고자 한다면, https://account.google.com 에서 gmail 계정 생성 없이 본인이 사용하던 이메일 주소로 Google 계정을 만들 수 있다.

이제 계정을 만든 후 GCP 콘솔(console.cloud.google.com)에 접속한다.

위와 같은 화면이 나타나는데, 이제 Shiny Server를 설치할 VM(Virtual Machine)을 생성해본다.

위와 같이 좌측의 사이드바(사이드바가 나타나지 않았다면, 햄버거 메뉴를 클릭한다)에서 [Compute Engine – > VM 인스턴스] 메뉴를 클릭한다. 여기에서 만들기를 클릭한다.

아래와 같이 [인스턴스 만들기] 화면이 나타나는데, 좌측에는 VM 인스턴스를 만드는 옵션들이 나타나고, 우측에는 무료로 계정을 사용하고 있기 때문에 잔여 크레딧 정보가 나타난다. 새로 VM을 만들 것이기 때문에 [새 VM 인스턴스]에서 시작한다.

처음 생성시 수정을 해야할 곳은 [이름], [부팅디스크], [방화벽] 옵션 정도이다. 이름은 shiny-test로 하자. 부팅디스크는 기본으로 Debian으로 설정이 되어 있는데, 우분투가 익숙해서 우분투도 바꾸었다.

마지막으로, 방화벽 옵션에서 http와 https를 모두 허용하기 위해 두 옵션을 모두 체크한다..

얼마 걸리지 않아, 새로운 VM 인스턴스가 생성된다.

이제 약간 어려운 작업이 남아 있는데, 방화벽 설정을 하는 것이다. 방화벽 설정을 위해 좌측 사이드바에서 네트워킹의 [VPC 네트워크] -> [방화벽 규칙]을 클릭한다.

현재 shiny-test에 허용해야 할 방화벽이 설정되어 있지 않으므로, 방화벽 규칙 만들기를 클릭하여 새로운 방화벽 규칙을 만들어야 한다.

입력할 것이 많은데, 우선 이름은 VM 이름과 동일하게 shiny-test로 하였고, 대상은 드롭다운 메뉴에서 [네트위크의 모든 인스턴스]를 선택한다. 서비스 계정 범위는 [이 프로젝트 내]로 체크하며, 대상 서비스 계정은 Compute Engine default service account를 선택한다. 마지막으로 소스 IP 범위는 0.0.0.0/0으로 그리고 프로토콜 및 포트에서 지정된 프로토콜 및 포트를 선택한 후 tcp 옵션에 체크 후 우측의 값 입력란에 3838을 입력한 후 제일 하단의 만들기를 클릭한다.

다시 방화벽 규칙으로 가보면 shiny-test 방화벽 규칙이 설정된 것을 확인할 수 있을 것이다.

이제 Shiny Server를 설치하는 마지막 단계만 남았다!

다시, Compute Engine의 VM 인스턴스로 가서 VM 목록에 있는 shiny-test 줄의 우축에 SSH를 클릭한다.

그러면 아래와 같이 팝업창이 하나 뜰 것이다.

새로 생긴 팝업창은 원격 VM에 접속하여 진입한 상태인 것이다. 이제 해당 창에서 작업을 해야한다.

먼저, 언제나 그렇듯이 업데이트를 한 번 해준다.

$sudo apt-get update && sudo apt-get upgrade

업데이트를 완료하고 나면, R 저장소를 sources.list 파일에 등록 후 키(우분투 apt-secure key가 변경되었다. 보다 자세한 내용은 https://cran.r-project.org/bin/linux/ubuntu/https://rubuntu.netlify.com/post/changes-to-cran-ubuntu-webpage-regarding-apt-secure-key/를 참고하라)를 추가한다. 이렇게 하면, 최신 버전의 R 다운로드와 패키지 업데이트 등을 한 번에 할 수 있다.

$sudo sh -c 'echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" >> /etc/apt/sources.list'
$sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
$sudo apt-get update
$sudo apt-get install r-base

R을 설치하고 난 후 실행해보면, 3.6.1 버전의 R이 설치되어 있는 것을 알 수 있다.

R을 설치했으니, 이제 Shiny Server를 설치할 차례이다.

$sudo apt-get install gdebi-core
$wget https://download3.rstudio.org/ubuntu-14.04/x86_64/shiny-server-1.5.12.933-amd64.deb
$sudo gdebi shiny-server-1.5.12.933-amd64.deb

이제 모든 과정을 마쳤다! 설치가 잘 되었는지 확인해보자!!

자신의 Shiny Server에 접속하기 위해서 IP 주소를 알아야 하므로, 다시 GCP 콘솔의 VM 인스턴스로 가보자.

VM 인스턴스 목록에 외부 IP가 있는데, Shiny Server에 접속하려면,

http://외부IP:3838

의 형식으로 브라우저에 입력하면 된다.

성공!