我没有使用opencpu作为服务器的经验,所以我试图在文档中找到这个问题的答案,但没有找到这个问题的答案。尽管如此,就权限和身份验证而言,这对我来说似乎是非常基本的,所以我猜这是在某个地方记录的,只是我没有找到它……我的问题是关于向OpenCPU服务器运行请求时的用户和权限。我已经编写了一个R包,我想使用OpenCPU服务器托管它。到目前为止,我成功地安装了OpenCPU服务器,没有任何问题,它对我的R包中的大多数功能都工作得很好。但是,有一个函数使用Sys.getenv('USERNAME')
来确定运行代码的用户。但是,当R代码由客户端请求触发时,我不知道如何识别用户。
最小示例:假设我的R包中包含一个名为"MyRPkg“的函数"myFun”,如下所示:
MyRPkg/R/myFun.R
myFun(v){
return(Sys.getenv('USERNAME'))
}
当我安装了这个包(在“根”R库中)并运行了我的OpenCPU服务器之后,我就可以访问这个包并通过POST请求调用这个函数,如下所示:
SERVERNAME/ocpu/library/MyRPkg/R/myFun/json
并得到一个空字符串作为答案。
[""]
我如何弄清楚在服务器端发生了什么,在哪一个用户“运行”的R代码,它可以配置吗?我最初的想法是用户应该是"data-www“,这是我系统上的默认Apache设置。我不知道用户设置在哪一层,Apache,rApache还是opencpu,但我猜它应该可以在OpenCPU级别上配置?
服务器运行的系统或多或少是一台linux Ubuntu服务器。
发布于 2018-12-12 17:15:39
OpenCPU系统在系统默认的Apache2服务器上运行。在您的系统上配置用于运行apache2守护进程的uid。默认情况下,它是Debian/Ubuntu上的www-data
。您可能可以在某个地方覆盖它。
https://stackoverflow.com/questions/53744789
复制