运行 闪亮服务器时的特定 R 命令行选项

Specific R command-line options when running shiny-server

我在 Ubuntu 上 运行 闪亮服务器,我需要设置不同的 R 命令行选项 - 特别是 --max-ppsize。我没能找到如何修改 shiny-server 运行方式的方法 R。如何修改?

在 Shiny Server 配置手册的 1.3.5 R Installation Location 中概述了使它起作用的关键。主要思想是创建您自己的名为 R 的可执行文件,并将您想要的命令行参数传递给真正的 R 可执行文件。

第 1 步:创建新用户

我给自己取名为鲍勃。将以下文件添加到 Bob 的主目录。

/home/bob/.bash_profile:

export PATH=/home/bob/myR:$PATH

/home/bob/myR/R:

#!/bin/bash
/usr/bin/R --max-ppsize 123456 "$@"

通过 chmod +x /home/bob/myR/R.

使第二个文件可执行

第 2 步:将闪亮配置为 运行 您的应用程序作为 Bob

在您的 Shiny 配置文件中,添加以下内容:

location /testApp {
  run_as bob;
  site_dir /srv/shiny-server/testApp;
  log_dir /var/log/shiny-server;
}

当 运行ning testApp 时,Shiny 将首先获取 Bob 的 .bash_profile,这使得 R 由于 $PATH 优先级而指向 Bob 的版本。 Bob 的版本只是添加了您想要的 --max-ppsize 选项,并将其与其他选项 "$@" 一起传递给真正的 R 可执行文件。您可以通过以下方式自行测试:

$ su bob
$ source /home/bob/.bash_profile
$ which R
/home/bob/myR/R
$ R -q --args Test
> commandArgs()
[1] "/usr/lib/R/bin/exec/R" "--max-ppsize"          "123456"
[4] "-q"                    "--args"                "Test" 

第 3 步:创建一个 testApp 以确保一切 运行ning 如预期

这是我的测试 Shiny 应用程序。

/srv/shiny-server/testApp/ui.R

ui <- fluidPage(
  textOutput( "user" ),
  textOutput( "cmdArgs" )
)

/srv/shiny-server/testApp/server.R

server <- function(input, output, session)
{
  output$user <- renderText({
    Sys.info()["user"]
  })

  output$cmdArgs <- renderText({
    paste( commandArgs(), collapse=" " )
  })
}

Firefox 中的结果: