首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Plumber API在服务器上工作,但在设置systemd时不起作用

Plumber API在服务器上工作,但在设置systemd时不起作用
EN

Stack Overflow用户
提问于 2019-03-25 06:33:10
回答 1查看 777关注 0票数 5

所以我有一个API,如果我手动运行管道工命令,它在本地和服务器上都可以很好地工作,我这里的意思是在服务器中运行ssh并运行:

代码语言:javascript
复制
r <- plumb("plumber.R")
r$run(port=8000, host = "0.0.0.0")

它看起来像这样:

代码语言:javascript
复制
#* @serializer contentType list(type="application/html")
#* @get /test
function(res){

  include_rmd("test.Rmd", res)

}

#* Echo the parameter that was sent in
#* @param msg The message to echo back.
#* @get /echo
function(msg=""){
  list(msg = paste0("The message is: '", msg, "'"))
}

它们都可以正常工作。但是当我用systemd将它们保存在服务器上时,只有/echo one可以工作。另一个只是说“发生了异常”。

systemd设置如下所示:

代码语言:javascript
复制
[Unit]
Description=Plumber API
# After=postgresql
# (or mariadb, mysql, etc if you use a DB with Plumber, otherwise leave this commented)

[Service]
ExecStart=/usr/bin/Rscript -e "api <- plumber::plumb('/home/chrisbeeley/api/plumber.R'); api$run(port=8000, host='0.0.0.0')"
Restart=on-abnormal
WorkingDirectory=/home/chrisbeeley/api/
[Install]
WantedBy=multi-user.target

我在任何地方都找不到错误日志,我非常困惑为什么当我在服务器上运行命令时它应该工作,而当我使用systemd时却不能。

我使用的是Ubuntu 16.04。

自从我昨晚发布了这篇文章以来,我已经将整个程序部署到了一个完全独立的服务器上,该服务器也在运行16.04,它在那里显示了完全相同的行为。

编辑:我也试过了,基于管道工文档中的代码,它返回了一个pdf,同时也返回了“发生了异常”。

代码语言:javascript
复制
#* @serializer contentType list(type="text/html; charset=utf-8")
#* @get /html
function(){

  tmp <- tempfile()

  render("test_report.Rmd", tmp, output_format = "html_document")

  readBin(tmp, "raw", n=file.info(tmp)$size)
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-02 01:07:38

好吧,我从来没解决过这个问题。相反,我使用pm2进行了尝试,如https://www.rplumber.io/docs/hosting.html#pm2所示

我对npm的依赖有点反感,这看起来像是一种负担,但它的效果却像是一种魔力。

所以,如果有人在谷歌上遇到类似的问题,我建议你使用pm2。我花了大约5分钟才让它启动和运行:-)

我应该补充说,虽然我还没有使用它们,但我估计pm2也会创建日志文件,这听起来很有用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55329229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档