R
gcp
Shiny

GCE無料枠でShiny Serverを構築するメモ

RでWebアプリケーションを作るフレームワークであるShinyを動かす環境をGCE上に作ったメモです。
といっても複雑な手順ではないので、ちょっとつまずいたところのメモです。

用語?

Shiny Serverとは

R言語のWebアプリケーション作成パッケージであるShinyを使って作ったWebアプリをサーバー上で動かせるようにするもの。
image.png
Shinyは図のような、入力値を反映してグラフ作ったり計算させたりするWebアプリがサクッと作れます。
ちょっとしたグラフ化や集計に便利な反面、配布が難しい(相手のPCにもRとShinyを入れないといけない)デメリットがありました。でもサーバーで動くようにしておくと、手軽に見てもらえるのでそういった情報共有に便利!・・・たぶん。

GCE無料で使えるよ

Googleのクラウドサービスの一つであるGoogle Compute Engineは、最小構成のf1-microインスタンスを無料で使えるようです。
XXヶ月無料ではなく、ずっと無料なので使わない手はないですね。
ただし、0.2vCPU/メモリ0.6Gなので本当にお試し用の位置づけです。
無料のインスタンスのセットアップ方法はこちらの記事が大変わかりやすかったです。

以下の構築手順は、OSはCentOS7を選択し、Google Cloud Shell上で操作したものです。

構築手順

基本的には手順に沿って・・・。

# Rのインストール
sudo yum install R

# shinyのインストール
sudo su - \
-c "R -e \"install.packages('shiny', repos='https://cran.rstudio.com/')\""

# R Markdownのインストール
sudo su - -c "R -e \"install.packages(‘markdown’, repos='http://cran.rstudio.com/')\""

# shiny serverのインストーラーダウンロード
wget https://download3.rstudio.org/centos5.9/x86_64/shiny-server-1.5.3.838-rh5-x86_64.rpm

# shiny serverのインストール
sudo yum install --nogpgcheck shiny-server-1.5.3.838-rh5-x86_64.rpm

# 起動
sudo systemctl start shiny-server
# 停止:stop 再起動:restart

以下、この手順ですんなりインストールできなかった時に確認したこと。

スワップ領域確保

RのインストールやShiny Serverのインストール途中でエラーが起きる場合、メモリー不足が原因のことがあります。というかGCEの無料枠だとガンガン失敗してました。
ということでスワップ領域を作ってメモリ不足を回避します。

sudo dd if=/dev/zero of=/swapfile bs=1024K count=1024
sudo mkswap /swapfile
sudo /sbin/swapon /swapfile

# /etc/fstab に以下を記述して、再起動時に設定されるようにしておく
/swapfile swap swap defaults 0 0

これで無事インストールができるようになりました。

Shiny/RMarkdownの導入

図のようになった場合は、Shiny Serverは動いているものの、ShinyパッケージやR Markdownパッケージがうまく動いていないです。

ShinyServerErr.png

「すでにShiny導入済みだから飛ばした」「メモリー不足でインストールできてなかった」等の理由でShinyとR Markdownがうまくインストールできていない場合があります。
また、過去にインストールしていても権限的にShiny Serverから参照できていない場合もあるので

> sudo R
install.packages(c("shiny","rmarkdown"))
q("n")

権限に注意しつつインストールできているか確認しましょう。