2017-11-09 4 views
1

私は配管工を使用して、R apiをデジタル海洋に配備しています。再現可能な例をここに提供するのは難しいですが、私が望むのは、端切れのエンドポイントをコンパイルして利用できるようにすることです。ローカルでは動作しますが、デジタルオーシャンサーバーでは動作しません。ローカルR配管のデジタル海洋での配管の展開

私はこれを行う:私は、サーバーにデプロイする場合、以下のように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__/に行く

library(plumber) 
r <- plumb("api/plumber.R") 
r$run(port=8000) 

は今闊歩のドキュメントがでご利用いただけます私は404を得る。

誰でもこの方法を知っていますか? 非常に感謝しています。

+1

良い点。対話的に実行している場合、 'run()'コールはデフォルトでSwaggerを表示するだけなので、IDEからは動作しますが、プロダクションサーバでは動作しません。私はこれを 'do_deploy_api'のオプションとして追加するべきです。 https://github.com/trestletech/plumber/issuesでチケットを開けますか? –

+1

FYIもしあなたがピンチであれば、 '/ etc/systemd/system ___。service 'のファイルを編集して' run() '呼び出しを変更して' swagger = TRUE'パラメータを含めることができます。しかし、これはdo_deploy_api()を呼び出すたびに騒がしくなり、やり直す必要があります。 –

+0

輝かしい、感謝ジェフ!あなたが提案した通りにチケットを開いた。 – roman

答えて

0

私は会話のおかげで仕事を見つけましたheredo_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) 
}) 
関連する問題