运行shiny-server时的特定R命令行选项

时间:2017-10-16 15:38:51

标签: r shiny-server

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

1 个答案:

答案 0 :(得分:1)

在Shiny Server配置手册的1.3.5 R Installation Location中概述了实现此功能的关键。主要的想法是创建一个名为R的自己的可执行文件,并让它将命令行参数传递给真正的R可执行文件。

第1步:创建新用户

我把我的名字命名为鲍勃。将以下文件添加到Bob的主目录。

<强> /home/bob/.bash_profile:

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

<强> /家庭/鲍勃/ 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;
}

当运行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以确保所有内容都按预期运行

这是我的测试Shiny app。

<强> /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中的结果:

enter image description here