Rのこと。

記事は引っ越し作業中。2023年中までに引っ越しを完了させてブログは削除予定

AWSのEC2でRstudio Serverを動かす方法のメモ(EC2編とDocker編)

はじめに

下記2種類の方法で、AWSのEC2でRstudio Serverを動かす方法のメモを残しておく。

  • EC2にインストールして、EC2から利用する方法
  • EC2の中にDockerをインストールして、Dockerコンテナから利用する方法

Run Rstudio Server in EC2

AWSの環境を整えて、EC2を起動する際にユーザーデータを記載することで、URLにアクセスして使えるようにする。

AWS-------------------------------------------------------
# Amazon Linux2
Make Vpc(10.0.0.0/16)
Make Subnet(10.0.0.0/24)
Make Elastic Ip
Make Igw to vpc
Edit route table
Make securityGroup 22/80/8787 ports
----------------------------------------------------------

EC2(userdata)------------------------------------------------
#!/bin/bash
# install R with yum on CentOS6-7
# yum install -y R this has been depreciated and is now like
# sudo amazon-linux-extras install R3.4
sudo amazon-linux-extras install R4

# install r studio with wget
# can be found here 
# https://rstudio.com/products/rstudio/download-server/redhat-centos/
wget https://download2.rstudio.org/server/centos6/x86_64/rstudio-server-rhel-1.3.1093-x86_64.rpm
sudo yum install -y --nogpgcheck rstudio-server-rhel-1.3.1093-x86_64.rpm
sudo yum install -y curl-devel
sudo rstudio-server start

# make user & set `user:password`
useradd ruser
echo ruser:testing | chpasswd
------------------------------------------------

下記のようにIPアドレスとポートを指定してアクセスする。

#Access to Server
# http://<ec2-Public IPv4 address>:8787
# ex: http://11.111.11.111:8787

install.packages("tidyverse")とかinstall.packages("rstan")したければ、下記を実行する必要あり。

sudo yum update
sudo amazon-linux-extras install epel
sudo yum -y install openssl-devel
sudo yum -y install libxml2-devel
sudo yum -y install v8-devel

sudo yum -y groupinstall "Development Tools" 
sudo yum -y install libcurl libcurl-devel 
sudo yum -y install libpng-devel 
sudo yum -y install libssh2-devel

パッケージのインストールでvirtual memory exhausted: Cannot allocate memory rake aborted!というメモリ不足エラーが発生すれば下記を参考に仮想メモリを拡張。というか無料枠のt2.microではパッケージのインストール中にメモリ不足になる・・・

dd if=/dev/zero of=/tmp/swap.img bs=1M count=1024
chmod 600 /tmp/swap.img
mkswap /tmp/swap.img
sudo swapon /tmp/swap.img
free

下記は大いに参考にしました。ありがとうございます。

Run Rstudio Serverfrom Docker container in EC2

AWSの環境を整えて、UbuntuイメージからユーザーデータでDockerを使えるようにしておく。ユーザーデータを使わない場合、SSHでログインして、Dockerをインストール。ローカルにあるdockerimageをSFTPでPUTし、EC2上でDockerイメージをビルドする。あとはコンテナを起動して、URLからアクセス。

AWS-------------------------------------------------------
# Ubuntu Server
Make Vpc(10.0.0.0/16)
Make Subnet(10.0.0.10/24)
Make Elastic Ip
Make Igw to vpc
Edit route table
Make securityGroup 22/80/8787 ports
----------------------------------------------------------

# ユーザーデータを使わない場合、SSHでログインして、Dockerをインストール
Local-------------------------------------------------------
$ chmod 400 sshkey-rstudio.pem
$ ssh -i sshkey-rstudio.pem ubuntu@<Elastic Ip>
------------------------------------------------------------

EC2(userdata)------------------------------------------------
$ sudo apt-get update
$ sudo apt-get install -y docker.io
# Add ubuntu user to docker group & to reflesh relogin 
$ sudo gpasswd -a ubuntu docker
# docker --version
------------------------------------------------------------

Local-------------------------------------------------------
# make docker images
$ mkdir ~/Desktop/dockerimage
$ touch dockerfile
# ~~~~~~~~~~~~
# FROM rocker/verse:latest
# # 適当に
# RUN R -e 'install.packages('glmnet', repos = "https://cran.ism.ac.jp/")'
# ~~~~~~~~~~~~

# send dockerfile to ec2 from localhost
$ sftp -i /Users/aki/.ssh/sshkey-rstudio.pem ubuntu@<Elastic Ip>
# pwd:~/Desktop/dockerimage
sftp> put dockerfile
sftp> exit
------------------------------------------------------------

EC2---------------------------------------------------------
$ mkdir docker_build
$ mv dockerfile docker_build/
$ cd docker_build/
$ docker build .
------------------------------------------------------------

#Access to Server
# user:passwd equals rstudio:rstudio2
$ docker run -e PASSWORD=rstudio2 -p 8787:8787 -d rocker/verse
# http://<Elastic Ip>:8787