Amazon Linux 2 で RStudio を使ってみた

アイキャッチ AWS EC2

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは、望月です。

みなさん、分析してますか?

Amazon Linux 2でRStudioを使えるようにする機会がありましたので簡単ではありますが手順をご紹介したいと思います。

RStudioとは

統計解析や分析などを得意とするR言語をブラウザ上で操作できる統合開発環境(IDE)になります。

今回の構成

今回はNginxによるリバースプロキシ経由で、RStudioに接続する方法でやっていきたいと思います。

ALBなし

構築

EC2インスタンスの作成

Amazon Linux 2のEC2インスタンスを用意します。

  • セキュリティグループで22と80を、自身のIPアドレスのみ許可する形にします。
    • 80を不特定に許可すると、RStudioでリソースを許可無く使用される可能性があります。

Rのインストール

R言語をExtras Libraryからインストールします。 Extras Libraryで用意されているパッケージは、これ欲しかった感のあるラインナップで嬉しいですね。

$ sudo amazon-linux-extras install R3.4

RStudioのインストール

RStudioのパッケージをインストールします。 公式サイトにあるCentOS7用のパッケージをインストールしたいと思います。 ※2018/10/02 現在の最新バージョンになります。

$ wget https://download2.rstudio.org/rstudio-server-rhel-1.1.456-x86_64.rpm
$ sudo yum install rstudio-server-rhel-1.1.456-x86_64.rpm
$ sudo vim /etc/rstudio/rserver.conf

## 下記の1行を追加
## 今回、RStudioへは、Nginx経由でローカル接続するため、許可するIPアドレスを"127.0.0.1"にしています

www-address=127.0.0.1

RStudio を起動します。

$ sudo systemctl start rstudio-server
$ sudo systemctl status rstudio-server

RStudioへのログインにはOSユーザを使用するため、RStudio用にユーザを作成します。 ファイルの作成や作成したOSユーザ権限でシェルも触ることができるため、ホームディレクトリをちゃんと作成しましょう。

$ sudo useradd rstudio
$ sudo passwd rstudio

Nginxのインストール

NginxのパッケージをExtras Libraryからインストールします。

$ sudo amazon-linux-extras install nginx1.12

RStudioへのリバースプロキシ設定を入れます。 公式のサポートに、まさにそれ!といった設定内容が公開されているので、それを参考にします。

Running RStudio Server with a Proxy

$ sudo vim /etc/nginx/conf.d/rstudio.conf

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen       80 default_server;
    server_name  _;
    root         /usr/share/nginx/html;

    location /rstudio/ {
      rewrite ^/rstudio/(.*)$ /$1 break;
      proxy_pass http://localhost:8787;
      proxy_redirect http://localhost:8787/ $scheme://$host/rstudio/;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection $connection_upgrade;
      proxy_read_timeout 20d;
    }
}

デフォルトコンフィグの"default_server"をコメントアウトします。

$ sudo vim /etc/nginx/nginx.conf

listen       80 default_server;
listen       [::]:80 default_server;
↓↓↓↓
#listen       80 default_server;
#listen       [::]:80 default_server;

nginxを再起動する

$ sudo systemctl start nginx
$ sudo systemctl status nginx

接続

  • 下記、URLでRStudioの画面が表示されます。
    • http://<ec2-public-ip>/rstudio/

RStudio ログイン

  • ログインし、Consoleで下記コマンドを実行します。
    • demo(graphics)
    • 実行したら、Enterを押していき、デモ画面が表示されれば、問題なくRStudioのインストールが行えています。

RStudio デモ

ALB + SSL

また、SSLを使うためにALB経由でSSLを利用するケースもあるかと思います。 その場合、コンフィグの内容を若干変更する必要があります。

ALBあり

$ sudo vim /etc/nginx/conf.d/rstudio.conf
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}


server {
    listen       80 default_server;
    server_name  _;
    root         /usr/share/nginx/html;

    location /rstudio/ {
      rewrite ^/rstudio/(.*)$ /$1 break;
      proxy_pass http://localhost:8787;
      proxy_http_version 1.1;
      proxy_redirect http://$host/ https://$host/rstudio/;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection $connection_upgrade;
      proxy_read_timeout 20d;
    }
}

それでは、みなさん、よい分析ライフを!