Shiny は R のパッケージの一つで、 このパッケージを使うと R を用いて対話的に操作する Web アプリケーションを作成することができます。Web 上のユーザーインタフェース部分を司る ui.R と、内部動作を司る server.R の二つの R 言語スクリプトで、サーバーサイドのコンテンツを作成できることが大きな特徴です。
今回は、Shiny Server をインストールして LAN 内の他の PC のインターネットブラウザから Shiny のアプリケーションにアクセスできるようにしました。
本記事で使用している動作環境は次の通りです。
$ lsb_release -d Description: CentOS Linux release 7.6.1810 (Core) $ rpm -qa | grep "R-core" R-core-devel-3.6.0-1.el7.x86_64 R-core-3.6.0-1.el7.x86_64 $ rpm -q shiny-server shiny-server-1.5.9.923-1.x86_64 $ rpm -q rstudio-server rstudio-server-1.2.1335-1.x86_64 $
Shiny Server のインストール
Shiny Server のインストールは、参考サイト [2] の 'RedHat / CentOS 6&7' タブの手順に従って進めれば良いのですが、ルート権限で R の shiny パッケージをインストールする際に、あとでインストールすることになるであろう rmarkdown も一緒にインストールしてしまいます。
$ sudo su - -c "R -e \"install.packages('shiny', repos='https://cran.rstudio.com/')\"" ... (途中省略) ... $ sudo su - -c "R -e \"install.packages('rmarkdown', repos='https://cran.rstudio.com/')\"" ... (途中省略) ... $
参考サイト [2] に従って、wget コマンドでパッケージをダウンロードして yum コマンドでインストールします。この時の Shiny Server のバージョンは 1.5.9.923 でしたが、ダウンロードするときにバージョンが更新されている可能がありますので、その都度、参考サイト [2] をご確認ください。
$ wget https://download3.rstudio.org/centos6.3/x86_64/shiny-server-1.5.9.923-x86_64.rpm $ sudo yum install --nogpgcheck shiny-server-1.5.9.923-x86_64.rpm
Shiny Server はデフォルトでポート 3838 番を使うようになっていますので、ファイアウォールを通るように設定します。
$ sudo firewall-cmd --add-port=3838/tcp --permanent success $ sudo systemctl restart firewalld $
早速、他の PC から、Shiny Server をインストールしたサーバー (192.168.0.22) へアクセスしてみます。ブラウザへ入力する URL は http://192.168.0.22:3838/ のようにします。Shiny Server のトップページは下記のようになっています。右側に簡単なサンプルが示されていて、インタラクティブに操作ができます。
Shiny アプリのデプロイ
Shiny Server のトップページで表示されるファイルは /srv/shiny-server 内に配置されています。よく見てみると、Shiny Server がインストールされている /opt/shiny-server/ の中からシンボリックリンクされています。
$ ls /srv/shiny-server index.html sample-apps $ ll /srv/shiny-server 合計 0 lrwxrwxrwx. 1 root root 38 6月 29 21:25 index.html -> /opt/shiny-server/samples/welcome.html lrwxrwxrwx. 1 root root 37 6月 29 21:25 sample-apps -> /opt/shiny-server/samples/sample-apps $
RStudio の Server 版も Shiny Server と同じサーバーで利用できるのであれば、個別アカウントで RStidio にログインして、そこで Shiny の Web アプリを開発し、最終的にシンボリックリンクを張ってブラウザで動作確認ができます [3][4]。RStudio の Server 版を利用していなければ、個別に Shiny アプリを開発後、Shiny Server をインストールしてあるサーバーの /srv/shiny-server 内にフォルダーごとコピーします。
ここでは以前 Shiny の紹介記事で扱ったサンプル用の Web アプリ iris-explorer(参考サイト [5])をデプロイしてみます。このサンプルは、Fedora 上の RStudio で作成したのですが、Shiny Server をインストールした CentOS 7 のサーバーへ移しました (/home/bitwalk/shiny-app/iris-explorer)。
RStudio で /home/bitwalk/shiny-app/iris-explorer 内のファイル global.R, server.R, ui.R のいずれか、あるいは全てのファイルを読み込みます。
RStudio のエディタペイン右上に表示されている「 Run App 」をクリックします。下記のように RStudio のブラウザのウィンドウがあらわれて iris-explorer が実行されます。
動作確認出来たので、Shiny Server へデプロイします。と言っても、シンボリックリンクを張るだけです。
$ sudo ln -s /home/bitwalk/shiny-app/iris-explorer /srv/shiny-server/iris-explorer
[sudo] bitwalk のパスワード:
$
Shiny Server で動作確認をする前に、パッケージがインストールされるグローバルな領域に、使用するパッケージをインストールしておきます。この例では shinydashboard と ggplot2 をインストールしました。
$ sudo su - -c "R -e \"install.packages('shinydashboard', repos='https://cran.rstudio.com/')\"" ... (途中省略) ... $ sudo su - -c "R -e \"install.packages('ggplot2', repos='https://cran.rstudio.com/')\"" ... (途中省略) ... $
他の PC でインターネットブラウザを起動、http://192.168.0.22:3838/iris-explorer/ にアクセスして、iris-explorer が実行されることを確認します。
Shiny Server のログ
エラーや期待したどおりに動作しない場合、まず、サーバーログを確認しましょう。ログは /var/log/shiny-server/ にあります。ルート権限で内容を確認できます。
$ ls /var/log/shiny-server iris-explorer-shiny-20190630-173444-41788.log rmd-shiny-20190630-094622-43528.log rmd-shiny-20190630-091930-37985.log rmd-shiny-20190630-094741-44562.log rmd-shiny-20190630-094602-42135.log $ tail /var/log/shiny-server/iris-explorer-shiny-20190630-173444-41788.log tail: `/var/log/shiny-server/iris-explorer-shiny-20190630-173444-41788.log' を 読み込み用に開くことが出来ません: 許可がありません $ sudo tail /var/log/shiny-server/iris-explorer-shiny-20190630-173444-41788.log [sudo] bitwalk のパスワード: su: ignore --preserve-environment, it's mutually exclusive to --login. Attaching package: ‘shinydashboard’ The following object is masked from ‘package:graphics’: box Listening on http://127.0.0.1:41788 $
Shiny Server のより詳細な情報は、参考サイト [6] を参照してください。
参考 サイト
- Shiny - RjpWiki
- Download Shiny Server - RStudio
- Download RStudio - RStudio
- bitWalk's: RStudio Server と SELinux (Fedora) [2019-08-10]
- bitWalk's: R Shiny を使ってみる (5) [2018-09-30]
- Shiny Server Configuration Reference
にほんブログ村