1

我没有使用 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 服务器。

4

1 回答 1

0

OpenCPU 系统运行在系统默认的 Apache2 服务器之上。在您的系统上配置了用于运行 apache2 守护程序的 uid。默认情况下它www-data在 Debian/Ubuntu 上。您可能可以在某处覆盖它。

于 2018-12-12T17:15:39.007 回答