RStudio ServerをGoogle Computing Engineで動かす

モチベーション

家で使っているコンピュータがMacbook Air 2011モデル(1.6GHz Core i5, メモリ2GB)と非常に貧弱で、Stanを動かすのに支障が出ている一方で、特段買いたいパソコンも見当たらないので、クラウドのサーバーを試してみることにしました。AWSについては公式含めかなり多くの解説記事がありますが、今回はGoogleのCloudサービスであるGoogle Computing Engineを試してみます。

Virtual Machineをセットアップ

Quickstart Using a Linux VM  |  Compute Engine Documentation  |  Google Cloud Platform を参考にしています。

[プロジェクト]ページに移動し、"Computing Engineを試す"のチュートリアルに従うと、仮想マシンインスタンスの作成が体験できます。途中で無料トライアルを有効にするためクレジットカード情報などの登録が必要になります。

僕は一旦このトライアルで作成したインスタンスを削除した後、"r-studio"という名前のインスタンスを全く同じ設定で新たに作成しました。

R/RStudioのインストール

まず、VMインスタンスページからSSHボタンをクリックしてインスタンスのターミナルに接続し、以下の作業を行います。RとRStudio serverのインストールは、ローカルのマシンにインストールするのと同様に行います(Download RStudio Server – RStudio)。既に手元のサーバーマシンなどにRStudio serverをインストールしたことがある方には馴染み深い手順になっていると思います。

Rのインストール

まず、そのままapt-getを実行すると古いバージョン(2017/5/27現在 3.1.1 (2014-07-10))がインストールされてしまうため、apt-getのインストール元にCRANを追加する必要があります。 エディタで /etc/apt/source.list を開き(sudo vi /etc/apt/sources.list)、以下の接続先を追加してください(CRAN mirror は CRAN - Mirrors から適当に選んで下さい。httpsではエラーとなってうまく行きませんでした)。

deb http://cran.cnr.berkeley.edu/bin/linux/debian jessie-cran34/

その後apt-get updateを実行すると、恐らくPublic keyが足りないというエラーで怒られます。

sudo apt-get update
# W: GPG error: http://cran.cnr.berkeley.edu jessie-cran34/ Release: The following signatures couldn't be verified be cause the public key is not available: NO_PUBKEY FCAE2A0E115C3D8A

Debian 7にRの実行環境(3.1.1)をapt-getでインストールする - Symfoware を参考に、末尾にある FCAE2A0E115C3D8A (選んだCRAN mirrorによって違うかも?) を使用して以下のように公開鍵を登録後、改めてapt-get updateapt-get install r-base を行います。

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys FCAE2A0E115C3D8A
sudo apt-get update
sudo apt-get install r-base

コマンドライン版のRをRコマンドで起動し、最近のバージョンがインストールされていることを確認します。(2017/5/27現在 3.4.0 (2017-04-21))

RStudio serverのインストール

再び Download RStudio Server – RStudio を参考に、RStudioをインストールします

sudo apt-get install gdebi-core
wget https://download2.rstudio.org/rstudio-server-1.0.143-amd64.deb
sudo gdebi rstudio-server-1.0.143-amd64.deb

RStudio severにアクセス

RStudioにアクセスできるようにするため、ファイアーウォールの設定を追加する必要があります。

  1. Google Cloud Platformのトップページのメニューから、"ネットワーキング>ファイアーウォール ルール"に移動し、以下のルールを追加します( RStudio Server on a Google Compute Engine instance · Joe Roe を参考にしました)。
    • 名前: allow-rstudio
    • トラフィックの方向: 上り
    • ソースIPの範囲: 0.0.0.0/0 (allow from any source)
    • 指定したプロトコルとポート: tcp:8787
    • ターゲットタグ: allow-rstudio
  2. ターゲットタグであるallow-rstudioを、作成したVMインスタンスの"編集"の中にある"ネットワークタグ"に追加します。
  3. http://<your-instance-ip>:8787 からRStudio serverに接続します。

RStudio serverにログイン

RStudio Server on a Google Compute Engine instance · Joe Roe
上のサイトの"Users and permissions"に詳細が書いてありますが、VMインスタンス上のデフォルトアカウントがkey-basedなログイン形式を用いている一方、RStudio serverはパスワードによるログインにしか対応していないため、RStudio server用のアカウントをLinux上に別に作成する必要があるようです。指摘されているように、既にデフォルトのアカウントでいろいろとファイルを作成してしまっていたら少し面倒そうです。

ともあれ、ブラウザ上のterminalからsudo adduser <username>によって新規ユーザーを作成します。その後、http://<your-instance-ip>:8787 にあるRStudio serverを開き、Linuxアカウントを用いてログインすると無事RStudio serverが使用できます。

tidyverseのインストール

ライブラリーのインストール中に幾つかのLinux用ライブラリが足りないと叱られました。 以下のコマンドで足りないライブラリをインストールしたところ無事tidyverseがインストールできました。

sudo apt-get install libcurl4-openssl-dev libssl-dev libxml2-dev

元々のモチベーションであったRStanのインストールについては、以下に記載しています。

yoshidk6.hatenablog.com

ファイル転送

まだ試していませんが、VMインスタンスへのファイルの転送は通常のSCPによって行うことができるようです。
Transferring Files to Instances  |  Compute Engine Documentation  |  Google Cloud Platform

最後に

終わったらインスタンスを停止することを忘れないようにしましょう。

References

  1. googleComputeEngineRという、ローカルのRから(?)GCEにアクセスしてサーバーをセットアップするパッケージ。Shiny serverを作成する等色々な用途に使うようなら便利かもしれません。今回は完全にブラウザから作成することを目指したので除外。 Launch RStudio Server in the Google Cloud with two lines of R · Mark Edmondson

  2. Googleが提供しているCloud SDKを用いたRStudioのインストール法。これもローカルPCにソフトウェアのインストールが必要になるので除外しましたが、記事で使ったコマンドの多くはこのサイトのものを参考にしました。 Deploying R Studio on Compute Engine

  3. もう一つ(日本語の)記事を見かけました。2. 同様にGoogleが提供しているコマンドラインツールを使用しています。 Google Container Engineの無限のリソースでRStudioを動かす - Technically, technophobic.