##1. はじめに
Rで作ったShinyアプリを、社内など、同一LAN内で共有する方法について書いておきます。今回は、以下の手順でWindows PC(64bit)上にShiny Serverを準備します。他にも、AWS上に構築する、Dockerを利用するなどの方法があるようです。
- Virtual Boxのインストール
- Vitural BoxにUbuntuをインストール
- UbuntuにShiny Server をインストール
- 設定、アプリの設置など
##2. VirtualBoxのインストール
###2-1. VirtualBoxのダウンロード
OracleのサイトからVirtualBoxをダウンロードします。(今回はWindows版)
http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html?ssSourceSiteId=otnjp
###2-2. VirtualBoxのインストール
手順に従ってインストールします。※1
- タイプ:Linux
- バージョン:Ubuntu(64-bit)
- メモリーサイズ:1024 MB
- ハードディスクのファイルタイプ:VDI(VirtualBox Disk Image)
- 物理ハードディスクにあるストレージ:可変サイズ
- ファイルの場所とサイズ:10 GB
##3. Ubuntuのインストール
###3-1. Ubuntuのダウンロード
続いて、Ubuntuをダウンロードします。(今回は16.04.2 LTS ※最新版は、17.04)
https://www.ubuntu.com/download/desktop
###3-2. ドライブへのマウント
VBの設定 > ストレージ > 光学ドライブで、DLしたisoファイルを選択
###3-3. インストール
- 仮想マシンを起動して「Install Ubuntu」を選択(日本語を選択できます)
- 「Ubuntuのインストール中にアップデーをダウンロードする」にチェック
- 「ディスクを削除してUbuntuをインストール」にチェック
- どこに住んでいますか?: Tokyo
- キーボードレイアウト: 日本語/日本語
##4. Ubuntuとのフォルダ共有設定
ホスト(Windows)とゲスト(Ubuntu)の間でファイルをやり取りするために、フォルダを共有しておきます。※2
###4-1. 共有設定(Windows側)
- 共有したいフォルダを右クリックして、プロパティ→共有タブを選択
- 詳細な共有 > 「このフォルダを共有する」にチェック
- 「フルコントロール」、「変更」、「読み取り」にチェック
###4-2. 共有設定(VirtualBox側)
- 仮想マシンは停止しておく
- VirtualBoxの設定 > 共有フォルダーからフォルダを追加
- 自動マウントにチェック
###4-3. 共有設定(Ubuntu側)
- Ubuntuを起動
- 「Ctl + Alt + T」で端末(ターミナル)を起動
※左側のメニュー上の端末のアイコンを右クリック > Launcherに登録しておくと便利です。 -
sudo apt-get install virtualbox-guest-dkms
でGuest Additionsを追加 ※3 -
sudo gpasswd -a ユーザ名 vboxsf
と入力し、権限を与える - Ubuntuを再起動
- /media下の、"sf_フォルダ名"で共有される
##5. ネットワーク設定
ゲスト(Ubuntu側)のネットワークは、ホスト(Windows側)のネットワークとは別に割り当てられるようなので、例えばゲストOSをサーバにしてホストOS側のネットワークから確認する場合には、設定を追加する必要があります。※4
###5-1. ポートフォワーディングの設定
- 設定 > ネットワーク > 高度 > ポートフォワーディング
- 新規ポートフォワーディングルールを追加
- ホストポート「例) 8080」、ゲストポート「例)3838」を記入
※マイナーなポートにしてください。
※ホストポートは、Shinyアプリにアクセスする際に使います。http://localhost:8080/app_name/
※また、ゲストポートは、後で Shiny-server の設定の方で指定しますので覚えておいてください。
##6. R のインストール
UbuntuにRをインストールします。基本的に、Rstudioのサイトの手順通りに進めます。※5
###6-1. R のインストール
- ゲストOS(Ubuntu)で、「Ctl + Alt + T」でターミナルを起動
-
sudo apt-get install r-base
と記入して、Rをインストール
###6-2. Shiny パッケージのインストール
続いて、Shinyのパッケージも入れておきます。
sudo su -\
-c "R -e \"install.packages('shiny', repos='https://cran.rstudio.com/')\""
##7. Shiny-server のインストール
同様に、端末からShiny-serverをインストールします。
sudo apt-get install gdebi-core
wget https://download3.rstudio.org/ubuntu-12.04/x86_64/shiny-server-1.5.3.838-amd64.deb
sudo gdebi shiny-server-1.5.3.838-amd64.deb
- 起動の確認
ゲストOS側 http://localhost:3838
ホストOS側 http://localhost:8080
LAN内の他の端末からのアクセスは、http://(ホスト端末のIPアドレス):8080
※「Welcome to Shiny Server!」 が見えていれば成功です。
##8. Shiny-server のスタート、ストップ
インストールに成功すると、自動でスタートしている様ですが、ここではマニュアルでのShinyサーバーのスタートとストップのコマンドを書いておきます。(詳細は※6)
- スタート:
sudo systemctl start shiny-server
- ストップ:
sudo systemctl stop shiny-server
##9. Shiny-server の設定
基本的に設定を変更する必要はありませんが、ポートの変更に関してのみ、メモしておきます。※7
- /etc/shiny-server/shiny-server.conf を開いて、listen 3838 の数字を変更
※「5. ネットワーク設定」で指定したゲストポートと同じ数値を指定します。
##10. アプリの設置
ホスト(Windows側)で作成したアプリを、ゲスト(Ubuntu側)のShiny-serverへ設置をします。
- ホスト側で、「4. Ubuntuとのフォルダ共有設定」で指定したフォルダにアプリをコピー
- ゲスト側で、アプリをコピーし、/srv/shiny-server/ にペースト
- /srv/shiny-server/test/ にアプリを設置した場合のアクセス先は、以下の通り
ゲストOS側 http://localhost:3838/test/
ホストOS側 http://localhost:8080/test/
※アクセスできない場合は、権限を与えてみて下さい。
ex.)chmod 777 hoge.txt
##11. マルチプロセス化
運用上、同時に複数のアクセスができないと困るので、マルチプロセス化をしておきます。※8(有償であれば、マルチプロセスに対応しています。Dockerを利用した場合、マルチプロセスに対応しているイメージもあるみたいですね。)
##参考
- 「VirtualBoxにUbuntu16.04をインストール」
http://qiita.com/ykawakami/items/4bae371932110b2e25e3 - 「WindowsでVirtualBoxを使用してLinux(Ubuntu)を動作させる手順と設定」
http://itmemo.net-luck.com/virtualbox-ubuntu/ - 「VirtualBoxを使おう - Hint & Tips」
http://www.linuxmania.jp/virtualbox_02.html - 「VirtualBox上のゲストOSにホストOSからNATでアクセスする」
http://www.karakaram.com/virtualbox-port-fowarding - 「Installing Shiny Server Open Source」
https://www.rstudio.com/products/shiny/download-server/ - 「Shiny Server Professional v1.5.1 Administrator's Guide 1 Getting Started」
http://docs.rstudio.com/shiny-server/#stopping-and-starting - 「Shiny Server Professional v1.5.1 Administrator's Guide 2 Server Management」
http://docs.rstudio.com/shiny-server/#default-configuration - 「Shiny Serverあれこれ」
https://www.slideshare.net/wdkz/japanr2013-wdkz