如何在腾讯云服务器上部署shiny应用

缘起

最近带学生一起开发了一个英文文献智能分析系统,准备部署在腾讯云服务器上,现在把部署过程记录下来,留作备忘。

部署过程

开发好的shiny应用,首先应该要在本地电脑上运行正常,一般分为 ui.Rserver.R 两个文件。

在向腾讯云服务器部署前,需要确认在腾讯云服务器上已完成以下安装:

  1. R和Rstudio server
  2. Shiny server

如果完成上述软件的安装与配置,就可以开始以下步骤:

步骤1:熟悉并对 shiny server做基本配置

shiny server安装好后,需要熟悉其基本配置,详细的配置说明可以查看 Rstudio公司的官网介绍:https://docs.rstudio.com/shiny-server/

其中需要重点熟悉的配置文件是shiny-server.conf,默认的文件存放路径是 /etc/shiny-server/shiny-server.conf

可以用 vi 编辑器或用 winscp直接打开对应目录下的文件,如下:

# Define the user we should use when spawning R Shiny processes
run_as shiny;  ## 指定运行shinyapp的user是谁

# Define a top-level server which will listen on a port
server {
  # Instruct this server to listen on port 3838
  listen 3838;  ## 设置shiny-app的监听端口是3838

  # Define the location available at the base URL
  location / {
   
    # Run this location in 'site_dir' mode, which hosts the entire directory
    # tree at '/srv/shiny-server'
    site_dir /srv/shiny-server; ## shiny-app对应的服务器根目录
    
    # Define where we should put the log files for this location
    log_dir /var/log/shiny-server; ## shiny-app运行过程中产生的日志文件存放位置
    
    # Should we list the contents of a (non-Shiny-App) directory when the user 
    # visits the corresponding URL?
    directory_index on;
  }
}

上述配置文件中值得注意的三处地方如下:

  • site_dir 后指明的是Shiny App存放的地址,通常将 ui.Rserver.R 放在同一个目录下;

  • log_dir 是Shiny App运行过程中产生的日志文件,App出现了任何报错,都可以从这个目录下去寻找报错原因

  • 可以通过编辑上述配置文件,修改Shiny server侦听的端口,或更改提供应用程序的站点目录。directory_index选项允许访问者通过导航到该路径来查看目录的内容(例如,访问example.com:3838/sample-apps将显示Shiny Server安装中包含的示例应用程序的列表)。可以通过将此选项设置从 on 改为 off 以隐藏目录的内容。

shiny server的常规命令如下

## 在非 root 用户权限下,重启
sudo systemctl restart shiny-server
## 在非 root 用户权限下,查看状态 
sudo systemctl status shiny-server 
## 在非 root 用户权限下,开启 
sudo systemctl start shiny-server 
## 在非 root 用户权限下,停止 
sudo systemctl stop shiny-server 

步骤2:上传开发好的程序文件

在步骤1对 shiny-server.conf 文件配置好的基础上,将 ui.Rserver.R 所在文件夹上传到腾讯云服务器 Shiny server 根目录下。

步骤3:检验程序运行状况

在完成步骤2的基础上,打开网站 http://ip:3838/(目录名) 如果页面刷新后显示在本地成功运行的界面,说明 Shiny app可以在服务器上成功运行。如果页面报错,就需要逐一查明问题所在, 相关的差错方案可以参阅以下资料:

https://support.rstudio.com/hc/en-us/articles/231249288-Why-does-my-app-work-locally-but-not-on-my-Shiny-Server-

https://support.rstudio.com/hc/en-us/search?utf8=%E2%9C%93&query=shiny+server+error

Avatar
Wu, Jun
Associate professor
Next
Previous