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 update
と apt-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にアクセスできるようにするため、ファイアーウォールの設定を追加する必要があります。
- 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
- ターゲットタグである
allow-rstudio
を、作成したVMインスタンスの"編集"の中にある"ネットワークタグ"に追加します。 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のインストールについては、以下に記載しています。
ファイル転送
まだ試していませんが、VMインスタンスへのファイルの転送は通常のSCPによって行うことができるようです。
Transferring Files to Instances | Compute Engine Documentation | Google Cloud Platform
最後に
終わったらインスタンスを停止することを忘れないようにしましょう。
References
googleComputeEngineR
という、ローカルのRから(?)GCEにアクセスしてサーバーをセットアップするパッケージ。Shiny serverを作成する等色々な用途に使うようなら便利かもしれません。今回は完全にブラウザから作成することを目指したので除外。 Launch RStudio Server in the Google Cloud with two lines of R · Mark EdmondsonGoogleが提供しているCloud SDKを用いたRStudioのインストール法。これもローカルPCにソフトウェアのインストールが必要になるので除外しましたが、記事で使ったコマンドの多くはこのサイトのものを参考にしました。 Deploying R Studio on Compute Engine
もう一つ(日本語の)記事を見かけました。2. 同様にGoogleが提供しているコマンドラインツールを使用しています。 Google Container Engineの無限のリソースでRStudioを動かす - Technically, technophobic.