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