【R】Shiny-Server의 인스톨

3549 단어 Rcentos7Shiny

일의 전말



Shiny를 사용하는 장면으로서 RStudio에서 사용하는 것이 많은 것 같습니다만, 자신으로서는 web 서버상에서 사용하고 싶습니다.
php를 메인으로 이용하고 있으므로, php로 만들어진 시스템으로부터 수집되는 DB정보를 바탕으로 통계등을 그래프화하기 위해 도전하고 있습니다.
갑자기 회사의 서버에 넣는 용기는 절대 없기 때문에, 우선은 VirtualBox나 자신의 vps로 사용할 수 있게 되고 나서입니다.

※이 기사는 요 전날 할 수 없다고 슬퍼했을 때의 기사를 삭제하고 다시 작성한 것입니다.

환경



・사쿠라 vps
· CentOS7.7
・R3.6

R 설치



shiny-server 설치


[root@localhost ~]# yum -y install readline-devel 
[root@localhost ~]# yum -y install libXt-devel 
[root@localhost ~]# yum -y install Xvfb
#上三つはいらないかも知れない
[root@localhost ~]# yum -y install libcurl-devel
[root@localhost ~]# sudo su - -c "R -e \"install.packages(c('shiny', 'rmarkdown'), repos='http://cran.rstudio.com/')\""
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core) #当方の環境
[root@localhost ~]# wget https://download3.rstudio.org/centos6.3/x86_64/shiny-server-1.5.12.933-x86_64.rpm
[root@localhost ~]# yum -y install --nogpgcheck shiny-server-1.5.12.933-x86_64.rpm
[root@localhost ~]# systemctl start shiny-server
[root@localhost ~]# systemctl enable shiny-server

Shiny 구성 파일(나중에 복원)
[root@localhost ~]# cat /etc/shiny-server/shiny-server.conf
# Instruct Shiny Server to run applications as the user "shiny"
run_as shiny;

# Define a server that listens on port 3838
server {
  listen 3838;

  # Define a location at the base URL
  location / {

    # Host the directory of Shiny Apps stored in this directory
    site_dir /srv/shiny-server;

    # Log all Shiny output to files in this directory
    log_dir /var/log/shiny-server;

    # When a user visits the base URL rather than a particular application,
    # an index of the applications available in this directory will be shown.
    directory_index on;
  }
}

[root@localhost ~]# firewall-cmd --add-port=3838/tcp --permanent
[root@localhost ~]# firewall-cmd --reload
[root@localhost ~]# systemctl restart shiny-server
[root@localhost shiny-server]# /opt/shiny-server/bin/deploy-example user-dirs
Configuration file already exists at /etc/shiny-server/shiny-server.conf. Are you sure you want to overwrite it? [yN]y
Copied /opt/shiny-server/config/user-dirs.config to /etc/shiny-server/shiny-server.conf.
Installing sample apps...
/srv/shiny-server/index.html already exists. Not overwriting.
/srv/shiny-server/sample-apps already exists. Not overwriting.
Done installing samples.
Restarting Shiny Server...
Waiting...

The user-dirs config is all setup now. Enjoy!

상기를 실행하면 conf 파일이 초기화되어 움직이지 않는 상태가 된다.
좀 더 위에 쓴 conf 파일이 아니므로, 되돌린다.
아직 시도하지 않았지만 user-dirs 부분에서 인수를 더 넣으면 처음부터 움직일 수 있을지도 모른다.

ip:3838에 브라우저로 액세스


이미지는 127.0.0.1이지만 VirtualBox에서 시도했을 때의 이미지이므로 사용하십시오 (; 'Д`)
포트 번호 3838은 기본값이 아니며 변경하여 사용합시다.

연극



php를 섞어주면 좋겠네・・・안돼요 분명(´・ω・`)
사실은 get 파라미터로 값을 전달하고 싶습니다만, 무리라고 생각하기 때문에 생각합니다. .
원시스템으로부터의 링크를 전부 별개의 html 파일로 작성해, 그 주소에 의해 앱이 바뀐다든가?
php로 천이할 때 특정 페이지로 천이시켜, 거기서 취득한 POST의 값을 json 파일에 기입하고 나서 R의 URL로 천이시키고, 그 json 파일을 읽어들여 R로 처리한다든가?
json이 아니어도 좋을까. user_app.R같은 파일에 r프로그램을 자동으로 생성하는 php의 스크립트를 쓰고, 그것을 R측에서 require같은 것을 하면 할 수 있을까.

좋은 웹페이지 즐겨찾기