Rocky Linux, RStudio Server, Shiny Server 설치

Rocky Linux에 RStudio Server와 Shiny Server를 설치한 내용을 간단하게 요약하고자 합니다.

Rocky Linux 설치

Rocky Linux는 Red Hat Enterprise Linux(RHEL)의 소스 코드를 이용하여 만들어진 무료 리눅스 배포판으로서 2021년 6월 21일부터 정식으로 공개되었습니다. 2022년 7월 현재 가장 최신 버전은 2022년 5월 6일에 공개된 Rocky Linux 8.6(Green Obsidian)입니다.

Rocky Linux 준비

Rocky Linux를 PC에 설치하기 전에 파일을 다운받아 설치 USB를 만듭니다.

Rocky Linux 다운로드

Intel CPU를 가진 일반 데스크탑 PC에 설치할 계획이라서 x86_64용으로 다운 받았습니다. DVD용으로 파일용량이 큰 것을 다운 받았는데, 용량이 작은 Minimal로 다운 받아도 될 것으로 봅니다.

Rocky Linux 설치 USB 만들기

부팅용 설치 USB를 만드는 프로그램은 여러가지가 있습니다. 여기서는 fedora media writer를 이용하였습니다.

Rocky Linux 설치

PC는 USB 부팅이 가능하여야 합니다. 만일 USB 부팅이 안된다면 BIOS 설정을 열어 USB 부팅이 되도록 설정합니다.

  1. 컴퓨터를 켜고 Delete, F2, F10 또는 F11 키를 누릅니다. (컴퓨터마다 키가 다르므로 BIOS가 나타날때까지 반복해서 다 눌러봅니다)
  2. BIOS가 나타나면 커서 키를 사용해 부팅 메뉴를 찾습니다.
  3. 부팅 메뉴에서 USB가 목록의 맨 위에 오도록 변경합니다.

Rocky Linux 설치화면이 나타나면 아래 사항을 조정하고 나머지는 그대로 진행하여 설치합니다.

  • time & date : asia/seoul
  • software selection : minmal
  • network & host name : 주어진 ip 설정(또는 동적 ip 설정)
  • root password 설정
  • user creation 설정

Rocky Linux 설치

설치가 끝나면 재부팅됩니다. 이때 USB를 빼고 로그인 화면이 나타날 때까지 기다립니다. 로그인 화면에서 id는 root, 패스워드는 설치할 때 설정한 패스워드를 입력하여 로그인합니다. 아래 명령어들을 입력하여 설치가 잘 되었는지 확인합니다.

login: root
# who
# whoami
# rpm -qa | nl
# df -h
# date
# ping -c3 8.8.8.8
# exit
  • who : 로그인된 id들이 화면에 출력됩니다.
  • whoami : 내 id가 화면에 출력됩니다.
  • rpm -qa | nl : 설치된 패키지들을 확인합니다.
  • df -h : 디스크 파티션 사용 통계가 나타납니다.
  • date : 날짜를 확인합니다.
  • ping -c3 8.8.8.8 : 네트워크가 잘 되는지 확인합니다.

확인 결과 이상이 없으면 설치가 잘 된 것입니다. 이제 exit을 입력하여 로그아웃을 합니다.

리눅스 초기 설정

클라이언트 PC에서 리눅스 서버 접속

이제는 리눅스가 설치된 PC에서 바로 접속하기 보다는 클라이언트 PC에서 PuTTY를 이용하여 접속하여 작업하겠습니다.

PuTTY를 검색하여 다운 받아 설치합니다. 리눅스 서버의 ip에 Telnet으로 접속합니다. 접속하는 포트 22번은 기본적으로 열려 있습니다.

sudo 계정 설정

sudo는 일반 유저에게 root와 같은 슈퍼 유저 권한을 주는 명령어입니다. 일반적으로 root로 접속하여 작업하기 보다는 일반 유저 id로 접속하여 작업하는 것이 안전합니다. 그러나 일반 유저는 패키지 등을 설치할 때 권한이 없어서 제한이 됩니다. 이때 sudo를 이용하여 한시적으로 슈퍼 유저의 권한을 갖게 됩니다.

일반 유저에게 sudo를 사용할 수 있는 권한을 주려면 아래와 같은 방식으로 합니다. 다른 방법도 있지만 여기서는 간편한 방법으로 하였습니다.

참고로 리눅스에서 #은 root로 로그인할 경우에 나타나며, $은 일반 사용자로 로그인할 때 나타납니다.

login: root
# visudo
# usermod --append -G wheel username
# id username
# exit
login: username
$ sudo date
  1. root로 로그인
  2. visudo를 입력한 후, 아래 내용이 있는지 확인
    • %wheel ALL=(ALL) ALL 확인(수정없는 종료는 :x)
    • 기본으로 위 내용이 있기 때문에 생략 가능
    • 만일 줄 맨 앞에 #이 있으면 제거하고 저장(i -> 편집 -> ESC -> :wq)
  3. 아래 명령어를 입력하여 username(유저id)를 wheel 그룹에 추가
    • usermod –append -G wheel username
  4. 아래 명령어로 그룹에 추가되었는지 확인
    • id username
  5. exit을 입력하여 root 로그아웃
  6. username 으로 로그인
  7. sudo date를 실행하여 잘 작동되는지 확인

이후부터는 일반 유저로 로그인하여 sudo 명령어를 사용하는 방식으로 합니다.

리눅스 초기 설정

upgrade

아래 명령어로 리눅스 업그레이드를 합니다.

$ sudo dnf upgrade

주요 패키지 설치

패키지 설치는 sudo dnf install 패키지명 형식으로 설치합니다. 주요 패키지를 먼저 설치하도록 하겠습니다.

$ sudo dnf install chrony gcc gcc-c++ tree bc zip unzip man-pages wget httpd java-1.8.0-openjdk java-1.8.0-openjdk-devel

chrony 패키지의 경우 시간동기화 패키지인데 필요하면 아래와 같은 명령어로 활성화시킵니다.

$ systemctl enable chronyd
$ systemctl start chronyd
$ systemctl status chronyd

R 설치

준비

$ sudo dnf config-manager --set-enabled powertools
$ sudo dnf install epel-release

설치

$ sudo dnf install R

확인

$ R --version

R 관련 리눅스 패키지 설치

R에 필요한 리눅스 패키지를 설치합니다. 이미 설치되어 있으면 설치되어 있다고 메시지가 나옵니다.

$ sudo dnf install make gcc gcc-c++
$ sudo dnf install libcurl-devel libxml2-devel openssl-devel texlive-*

위 패키지가 설치되어 있지 않으면 R 패키지 설치시 에러가 발생합니다.

전체 유저용 R 패키지 설치

root로 R을 실행하여 패키지를 설치하면 모든 유저가 사용할 수 있습니다. (샤이니 서버 운영에 필요함)

$ sudo -i R
> install.packages("skimr")
> install.packages(c("shiny", "rmarkdown", "tidyverse"))

참고로 “shiny” 패키지는 샤이니 서버를 설치하기 전에 미리 설치하여야 합니다.

RStudio Server 설치

다운로드 및 설치

아래와 같은 명령어로 다운로드하고 설치합니다.

$ sudo wget https://download2.rstudio.org/server/rhel8/x86_64/rstudio-server-rhel-2022.02.3-492-x86_64.rpm
$ sudo dnf install rstudio-server-rhel-2022.02.3-492-x86_64.rpm

8787 포트 firewall 설정

RStudio Server가 사용하는 포트(8787)을 열어줍니다.

$ sudo firewall-cmd --add-port=8787/tcp --zone=public --permanen
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-all

Selinux 비활성화

브라우저로 접속할 때 에러가 나는 것을 막기위해 Selinux를 비활성화 합니다.

$ sudo vi /etc/selinux/config
  • i를 눌러 편집 상태로 변환
  • 키보드로 SELINUX 부문을 찾아 SELINUX=disabled로 수정
  • ESC눌러 편집 상태에서 나온 후 :wq를 눌러 저장하고 종료

수정된 부문을 적용하기 위해 아래 명령어로 시스템을 재부팅합니다.

$ sudo reboot

RStudio Server 상태 확인

$ sudo systemctl status rstudio-server

RStudio Server 접속 확인

  • 브라우저에서 http://ip-address:8787 접속하여 확인
  • 리눅스 유저 id와 패스워드로 접속

RStudio server에서 전체유저용 R 패키지 설치

패키지를 전체 유저용으로 설치하여야 Shiny 서비스에서 에러가 나지 않습니다.

  • Terminal 탭에서 sudo -i R 실행
$ sudo -i R
  • install.packages(“패키지명”)
> install.packages("plotly")

Shiny Server 설치

Shiny Server를 설치하기 전에 R에 shiny 패키지가 설치되어 있어야 합니다. 또한 rmarkdown 패키지도 설치되어야 합니다.

다운로드 및 설치

$ sudo wget https://download3.rstudio.org/centos7/x86_64/shiny-server-1.5.18.987-x86_64.rpm
$ sudo dnf install --nogpgcheck shiny-server-1.5.18.987-x86_64.rpm

shiny-server 상태 확인

$ sudo systemctl status shiny-server

샤이니 서버를 시작, 자동시작, 다시시작 하려면 아래와 같은 명령어를 사용합니다.

$ sudo systemctl start shiny-server
$ sudo systemctl enable shiny-server
$ sudo systemctl restart shiny-server
  • 시작 : sudo systemctl start shiny-server
  • 부팅시 자동시작 : sudo systemctl enable shiny-server
  • 다시 시작 : sudo systemctl restart shiny-server

3838 포트 firwall 설정

$ sudo firewall-cmd --add-port=3838/tcp --zone=public --permanen
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-all

shiny-server 접속 확인

  • 브라우저에서 http://ip-address:3838 접속하여 확인

shiny-server 설정

shiny-server에 대한 설정은 아래와 같이 shiny-server.conf 파일을 열어서 편집합니다.

특별히 설정할 것이 없다면 그대로 둡니다.

$ sudo vi /etc/shiny-server/shiny-server.conf

Shiny App 작성 및 서비스

처음에는 브라우저로 RStudio Server에 접속하여 Shiny App 프로젝트를 만들어 작업하는 것이 편리합니다. Shiny App을 만드는 방법은 여기서 다루지 않겠습니다.

만들어진 Shiny App을 shiny-server에서 서비스 하려면 /srv/shiny-server 에 앱(폴더)이 복사되어야 합니다.

  1. 터미널을 통해 RStudio Server에서 만든 Shiny App 프로젝트 홈 폴더에 접속합니다. RStudio에서는 [file]탭의 [More]에서 [Open New Terminal Here]를 클릭하면 터미널이 열리면서 해당 폴더에 접속합니다.

  2. $ cd ..를 입력하여 상위 폴더로 이동합니다.

  3. 터미널에서 아래 명령어를 입력하여 Shiny App 폴더를 /srv/shiny-server로 복사합니다.

$ sudo cp -r hello01 /srv/shiny-server/

만일 /srv/shiny-server의 하위폴더에 복사하려면 다음과 같이 합니다.

$ sudo cp -r hello01 /srv/shiny-server/하위폴더명

샤이니 서비스가 제대로 작동하는 것을 확인하려면 브라우저에서 주소창에 http://ip-address:3838을 입력하여 접속합니다. 하위 폴더가 있다면 http://ip-address:3838/하위폴더명을 입력하여 접속합니다.