2019-06-30

R Shiny を使ってみる (6)

Shiny は R のパッケージの一つで、 このパッケージを使うと R を用いて対話的に操作する Web アプリケーションを作成することができます。Web 上のユーザーインタフェース部分を司る ui.R と、内部動作を司る server.R の二つの R 言語スクリプトで、サーバーサイドのコンテンツを作成できることが大きな特徴です。

参考サイト [1] より引用

今回は、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 も一緒にインストールしてしまいます。

Shiny Server をインストールする前の準備 
$ 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] をご確認ください。

Shiny Server のダウンロードとインストール 
$ 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 Server のトップページ 

Shiny アプリのデプロイ

Shiny Server のトップページで表示されるファイルは /srv/shiny-server 内に配置されています。よく見てみると、Shiny Server がインストールされている /opt/shiny-server/ の中からシンボリックリンクされています。

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 が実行されます。

 RStudio 上で実行した iris-explorer 

動作確認出来たので、Shiny Server へデプロイします。と言っても、シンボリックリンクを張るだけです。

iris-explorer のデプロイ 
$ sudo ln -s /home/bitwalk/shiny-app/iris-explorer /srv/shiny-server/iris-explorer
[sudo] bitwalk のパスワード:
$

Shiny Server で動作確認をする前に、パッケージがインストールされるグローバルな領域に、使用するパッケージをインストールしておきます。この例では shinydashboardggplot2 をインストールしました。

グローバルな領域へのパッケージインストール 
$ 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 が実行されることを確認します。

 デプロイした iris-explorer の実行例 

Shiny Server のログ

エラーや期待したどおりに動作しない場合、まず、サーバーログを確認しましょう。ログは /var/log/shiny-server/ にあります。ルート権限で内容を確認できます。

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] を参照してください。

参考 サイト

  1. Shiny - RjpWiki
  2. Download Shiny Server - RStudio
  3. Download RStudio - RStudio
  4. bitWalk's: RStudio Server と SELinux (Fedora) [2019-08-10]
  5. bitWalk's: R Shiny を使ってみる (5) [2018-09-30]
  6. Shiny Server Configuration Reference

 

ブログランキング・にほんブログ村へにほんブログ村

0 件のコメント: