我正在使用水管工将R api部署到数字海洋。在这里提供一个可重复的例子很难,但我想要的是swagger端点编译和可用。它在本地工作,但不在数字海洋服务器上工作。
在本地我这样做:
library(plumber)
r <- plumb("api/plumber.R")
r$run(port=8000)
现在可以在http://127.0.0.1:8000/__swagger__/
当我按如下方式部署到服务器时:
library(analogsea)
library(plumber)
my_droplet <- as.droplet("my_droplet")
do_deploy_api(
droplet = my_droplet,
path = "my_path",
localPath = "my_local_path",
port = 8000
)
do_forward(my_droplet, "my_path")
现在我转到[my_remote_ip]/my_path/__swagger__/
我得到404
。
任何人都知道如何做到这一点? 非常感谢。
答案 0 :(得分:0)
由于对话here,我找到了一个工作。在do_deploy_api()
和do_forward()
之后我执行此操作:
droplet_execute([my_droplet], {
system("sed -i 's/pr$run(port=8000)/pr$run(port=8000, swagger = TRUE)/g' /etc/systemd/system/plumber-[my_api].service", intern = TRUE)
system("systemctl daemon-reload", intern = TRUE)
system("service plumber-[my_api] restart", intern = TRUE)
})