Shiny Serverの始め方 ― 「Ubuntu」版
レポートが完成し、本格的にShinyアプリとして分析結果を展開する場合、Shinyのパッケージ版ではなくShiny Serverを利用しましょう。Shiny ServerとはNode.jsで作られているサーバーアプリケーションです。このShiny Serverにアプリケーションを配置することで、複数のユーザーに向けて公開することができます。
Ubuntu on AWSの環境のセットアップと接続
最初にAWSでEC2インスタンスを作成します。AWSを利用する際の詳細な説明は割愛しますので、EC2インスタンスの作成方法については、以下の記事など、公開されている情報を適宜参考にしてください。
- 『Amazon Web Servicesの仮想サーバEC2でLinuxサーバを構築してみよう』(CodeZine)
インスタンスを作成するにあたって注意するポイントが2点あります。
1点目は、選択するAMIは以下のとおりShiny Serverが対応しているUbuntu 14.04を選択してください。
2点目は、Security Groupは以下のとおり、3838ポートへの外部からの接続を許可するように設定しておきましょう。Shiny Serverはデフォルトで3838ポートを使います。今回はデフォルトのまま利用します。
インスタンスの作成と起動が完了したらsshでubnutu
ユーザーで、さきほど作成したEC2に接続します。
$ ssh -i shiny_server.pem ubuntu@XXX.XXX.XXX.XXX
接続ができたら次はRとShiny Serverのインストールを行います。
UbuntuへRのインストール
Rのインストールは、こちらの記事の手順を参考にし、以下のとおり実行しました。
$ sudo add-apt-repository ppa:marutter/rrutter # 最新の3.系のRを取得できるようリポジトリ追加 $ sudo apt-get update # パッケージ・リストを入手 $ sudo apt-get upgrade # パッケージをアップグレード $ sudo apt-get install r-base r-base-dev # Rのインストール $ sudo apt-get install r-cran-* # パッケージのインストール
以下のとおり、Rがインストールされているかを確認します。
$ R --version R version 3.1.1 (2014-07-10) -- "Sock it to Me" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) ...
正常にR 3.1.1がインストールされていることを確認できました。
UbuntuへのShiny Serverのインストール
Shiny ServerにはOpen Source Edition(以下、OSS 版)とProfessional Editionがありますが、今回は、無償で利用できるOSS版を利用しました。OSS版のインストール手順はこちらにあります。実際に、手順に沿って実施してみます。まずは、Shiny ServerのインストールにはShinyパッケージが必要になるので、ShinyをRのパッケージとしてinstall.packages()
します。
$ sudo su - -c "R -e \"install.packages('shiny', repos='http://cran.rstudio.com/')\""
続いて、Shiny Serverのインストールです。Shiny Serverは一度ローカルにダウンロードしてから、gdebi-coreでインストールします。
$ sudo apt-get install gdebi-core $ wget http://download3.rstudio.org/ubuntu-12.04/x86_64/shiny-server-1.2.2.367-amd64.deb $ sudo gdebi shiny-server-1.2.2.367-amd64.deb ... Setting up shiny-server (1.2.2.367) ... Creating user shiny Adding LANG to /etc/init/shiny-server.conf, setting to en_US.UTF-8 shiny-server start/running, process 8025
インストールが正常に完了すれば、上記に表示されるようにshiny
ユーザーが作られ、Shiny Serverが自動的に起動します。その結果、以下ようなURLでアクセスできることができます。すると、「Welcome to Shiny Server」と表示されたページが見れたのではないでしょうか。
http://XXX.XXX.XXX.XXX:3838/
これから、このページをあなたが作ったShinyアプリで置き換えていくことになります。
Shiny Serverへのアプリの配置(デプロイ)
自分で作ったShinyアプリを表示させるためには、Shiny Serverマシンの/srv/shiny-server/
ディレクトリ以下にファイルを配置していくことになります。ファイルを置き換える前に、先ほどみたサンプルアプリのファイルは事前に削除しておきましょう。
$ ls /srv/shiny-server/ index.html sample-apps $ sudo rm -rf /srv/shiny-server/* # サンプルプロジェクトを削除する $ ls /srv/shiny-server/
今回はShinyパッケージ版で動作確認してみたサンプルアプリ「01_hello」をShiny Serverに配置してみることにします。サンプルアプリ「01_hello」のファイル実体はShinyパッケージがインストールされた場所にあるので、以下のコマンドでコピーします。
$ ls /usr/local/lib/R/site-library/shiny/examples/ # サンプルアプリの確認 01_hello 02_text 03_reactivity 04_mpg 05_sliders 06_tabsets 07_widgets 08_html 09_upload 10_download 11_timer $ sudo cp -R /usr/local/lib/R/site-library/shiny/examples/01_hello /srv/shiny-server/
もし、サンプルアプリがない、つまり、Shinyが上記の場所以外にインストールされていれば、どこにあるか以下のコマンドで確認してください。
$ R -e ".libPaths()" --quiet # Shiny のライブラリのすべての保存場所を一覧で表示
どうでしょうか、先ほどと同様のURLにアクセスして、今度はShinyアプリが表示されたでしょうか?
http://XXX.XXX.XXX.XXX:3838/
Shiny Serverの設定
Shiny Serverのサーバー設定はdefault.config
ファイルを元に行います。例えば、3838以外のポートで起動させたい場合はdefault.config
ファイルを以下のコマンドでリネーム&コピーした上で、リネームしたshiny-server.conf
ファイルを編集して、listen 3838;
の値をlisten 80;
などに変えてみましょう。
ポート変更の場合は、AWSのSecurity Groupで外部接続を許可するポートの追加も忘れないようにしましょう。
$ sudo cp /opt/shiny-server/config/default.config /etc/shiny-server/shiny-server.conf $ sudo vi /etc/shiny-server/shiny-server.conf
その他のShiny Serverの設定変更は Administrator's Guide(英語)を参考にしてください。なお、Shiny Serverの停止、ステータス確認、起動のコマンドは以下のとおりになります。設定を変更した場合、忘れずに再起動しましょう。
$ sudo stop shiny-server # 停止 shiny-server stop/waiting $ sudo status shiny-server # ステータス確認 shiny-server stop/waiting $ sudo start shiny-server # 起動 shiny-server start/running, process 8158
次回後編について
今回、RのプログラムをShinyとして公開する準備が整いました。 あとは、あなたのShinyアプリを作りさえすれば、不特定多数のユーザーが見れるRの分析レポートを公開することができます。後編となる次回記事では実際の中身、つまり、Shinyアプリの具体的な作り方についてご紹介させていただきます。