CentOS 6.2 に R と RStudio Server をインストールする
RStudio Server は Linux サーバにインストールした R を Web ブラウザから Web アプリケーションとして操作でき、大変便利なのですが、インストール方法について触れたブログ記事がほとんどないので、インストールしたついでに書きました。
余談ですが、2010年5月に Tsukuba.R で RWebUI というソフトウェアを提案して開発しませんでしたが、コンセプト的には全く同じ物です。RStudio Server と同様なソフトウェアでは R-Node も有名です。
1. Yum のレポジトリに EPEL を追加する。
EPEL をインストール済みの場合は、省略可能です。以下、全て root でコマンドを実行します。
# rpm -ihv http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-7.noarch.rpm
3. 必要なパッケージをインストールする。
互換バージョンの OpenSSL と Fortran をインストールします。
# yum install openssl098e compat-libgfortran-41
4. RStudio Server をインストールする
下記 URL から最新版の RPM をダウンロードし、インストールします。最新のバージョンは、Download RStudio Server で確認できます。
32-bit
# rpm -ihv http://download2.rstudio.org/rstudio-server-0.96.228-i686.rpm
64-bit
# rpm -ihv http://download2.rstudio.org/rstudio-server-0.96.228-x86_64.rpm
5. RStudio Server を起動する
インストールできているか確認
# rstudio-server verify-installation
RStudio Server を起動
# rstudio-server start
システム起動時に自動起動するには、chkconfig コマンドで設定します。
# chkconfig rstudio-server on # chkconfig --list rstudio-server rstudio-server 0:off 1:off 2:on 3:on 4:on 5:on 6:off
6. ブラウザからアクセス
Web ブラウザから、http://<サーバのIPアドレス>:8787/ にアクセスします。
つながらない場合は、setup コマンドで表示される、ファイヤウォールの設定画面で、TCP ポート 8787 をオープンにする、またはファイヤウォールを無効化します。
Amazon EC2 等の場合は、管理コンソール(AWS Management Console 等)で、TCP 8787 ポートが解放されていることを確認します。
補足
Apache 経由で TCP 80 番ポートでアクセスするには、バーチャルホストと mod_proxy で TCP 8787 番ポートにリバースプロキシを構成すればいいですね。具体的には、httpd.conf に以下のように設定します。
<VirtualHost *:80> ServerName rstudio.xxx.com <Proxy *> Allow from localhost </Proxy> ProxyPass / http://localhost:8787/ ProxyPassReverse / http://localhost:8787/ </VirtualHost>
更に、digest 認証をかける場合は、digest 認証と mod_proxy を併用する場合は、以下のように設定します。
<VirtualHost *:80> ServerName rstudio.xxx.com <Proxy *> Allow from localhost AuthType Digest AuthName "Private Page" AuthDigestDomain / AuthUserFile /etc/httpd/conf/.htdigest_rstudio Require valid-user </Proxy> ProxyPass / http://localhost:8787/ ProxyPassReverse / http://localhost:8787/ </VirtualHost>
感想
インストールは、想像していたより簡単でした。コード補完機能なども具備されており、大変便利です。また、複数のロケーションで分析作業を行う際にも有用ですね。