如何在 CentOS6 上启动/停止/刷新 OpenCPU?
Posted
技术标签:
【中文标题】如何在 CentOS6 上启动/停止/刷新 OpenCPU?【英文标题】:How to start/stop/flush OpenCPU on CentOS6? 【发布时间】:2014-12-29 15:11:56 【问题描述】:我已经在 CentOS6 上成功构建并安装了 OpenCPU 和 RStudio Server。一切都按预期工作,我的本地 R 包确实获得了成功的 GET/POST 响应。
有几件事似乎不起作用:
我想不出一个干净的方法来启动/停止/刷新 OpenCPU。我目前正在使用apachectl restart
,但我什至不确定是否会按预期重新加载 R 包。我在/usr/lib/opencpu/scripts
尝试了 Jeroen 的 bash 脚本,但它们似乎需要进行相当多的调整才能在 CentOS 上运行。
(可能与上述有关)我在/etc/opencpu/Renviron
文件中使用load()
和readRDS()
(也在/etc/opencpu/Rprofile
中尝试过)将持久数据集加载到全局环境中——但这似乎不起作用.我没有收到任何错误日志,但这些对象在后续请求中不可用。
在 Ubuntu OpenCPU 上似乎配置为在 opencpu
用户下运行。在 CentOS6 上,安装后它似乎在root
下运行。我想修改它,但不确定如何修改。
只是想知道是否有人在 CentOS6 上成功配置了 OpenCPU。
非常感谢,--梅尔。
【问题讨论】:
【参考方案1】:一些答案
运行sudo apachectl restart
将重新启动。目前 rpm 中没有用于 opencpu 的特殊 init 或 systemd 脚本,但基本上该脚本在 ubuntu 上所做的只是重新启动 apache 并将一些消息打印到终端。
REnviron
文件仅用于环境变量。自定义代码需要使用RProfile
。另见help。也许它没有在正确的环境中加载。试试:load(file, envir = globalenv(), verbose = TRUE)
。
请注意,推荐的存储方式是将其放入 R 包中,作为延迟加载数据或 sysdata.rda
(请参阅 writing R extensions)。然后,您可以在启动时加载或附加包,或者更好的是:从包含您的应用程序或 R 函数的包中正式导入数据集。
Afaik,centos 以用户 apache
的身份运行 httpd 请求?是什么让您认为 opencpu 以 root 身份运行?这当然不是本意。在 CentOS 上,您有时需要使用 SELinux httpd 标志来让您的应用程序正常工作,另请参阅 rpm readme。
rpm 包比 debian 的包更新且测试较少,所以如果您有问题或建议,请在 github 上提出问题。
【讨论】:
谢谢,这一切都澄清了。我按照建议构建并加载了一个单独的数据包,它比在Rprofile
中编辑自定义指令更有效并且更精简。我对以 root 身份运行的 OpenCPU 感到困惑(我确实有一个以 root 身份运行的 httpd 进程,但结果并不相关)。关于使用 OpenCPU 配置持久变量和数据集的文档有点分散,我花了一段时间才找到最佳方法。在 OpenCPU 服务器手册中添加一节可能很有用。
是的,我知道我不擅长文档。也许可以创建一个 wiki 左右,让人们帮助创建一些手册。
你找到在CentOS6上配置opencpu运行用户库的方法了吗:server.com/ocpu/user/以上是关于如何在 CentOS6 上启动/停止/刷新 OpenCPU?的主要内容,如果未能解决你的问题,请参考以下文章
Centos7.3_x86_64通过systemctl控制tomcat8.0.46启动和停止