【发布时间】:2017-10-16 15:38:51
【问题描述】:
我在 Ubuntu 上运行 shiny-server,我需要设置不同的 R 命令行选项 - 特别是 --max-ppsize。我没有找到如何修改闪亮服务器运行R 的方式。这个怎么修改?
【问题讨论】:
标签: r shiny-server
我在 Ubuntu 上运行 shiny-server,我需要设置不同的 R 命令行选项 - 特别是 --max-ppsize。我没有找到如何修改闪亮服务器运行R 的方式。这个怎么修改?
【问题讨论】:
标签: r shiny-server
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 步:配置 Shiny 以以 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 指向 Bob 的版本,因为 $PATH 优先。 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 应用程序。
/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 中的结果:
【讨论】: