gpt4 book ai didi

r - 将 Shiny 的应用程序开发为一个包并将其部署到 Shiny 的服务器

转载 作者:行者123 更新时间:2023-12-03 10:00:16 29 4
gpt4 key购买 nike

我正在开发一个 Shiny 的应用程序,因为我想使用该功能的自动化测试和文档,我开始在一个包中开发界面(推荐 here)。

我在 RStudio 中开发了这个 Shiny 的应用程序,我有一个 server.R文件,我可以点击 运行应用 RStudio 中的按钮,一切正常。我将我的包提交到 github 存储库,从现在开始我想使用 devtools 将它安装在我的 R Shiny 服务器上和 install_github功能。

现在我想知道如何在服务器中启动我的应用程序。我天真地想安装软件包并指向server.R文件,但这在某种程度上不起作用。不知道问题出在哪里。

我的第二次尝试是创建一个名为 app.R 的文件。在 Shiny 的服务器可访问的文件夹中,在这个文件中,我基本上加载了我的包, Shiny 的和其他需要的包,但由于缺少变量,它以某种方式提示......

有人可以给我建议吗?我也很乐意回答任何问题,因为我不确定如何正确地提出这个问题。
提前致谢。

编辑部署到 Shiny 的服务器

由于 Colin D 在评论中询问如何在 Shiny 的服务器上部署这些包,我想演示我如何做到这一点。

首先,我直接通过命令行将我的软件包安装在 Shiny 的服务器上 使用以下命令。

su - -c "R -e \"devtools::install_github('user/shinypackage')\"" 

下一步是更改包文件夹的所有者
chown -R shiny:shiny /usr/local/lib/R/site-library/shinypackage/

然后我重新启动 Shiny 的服务器,因为这有时会出现缓存问题。
systemctl restart shiny-server

这些是我更新 Shiny 应用程序时执行的步骤。我通常在一行中以 root 身份再次执行此操作
su - -c "R -e \"devtools::install_github('user/shinypackage')\"" &  chown -R shiny:shiny /usr/local/lib/R/site-library/shinypackage/ & systemctl restart shiny-server

我们还需要做的一件事是在 shiny-server.conf 中设置目录。文件。我只是添加了包路径+应用程序所在目录 ui.Rserver.R被保存。
  location /shinypackage {
app_dir /usr/local/lib/R/site-library/shinypackage/application;
log_dir /var/log/shiny-server;
}

然后我必须使用 systemctl restart shiny-server 再次重新启动服务器.

这是在 Ubuntu 服务器上使用的。

最佳答案

当我将 Shiny 的应用程序作为独立包制作时,我通常按如下方式组织文件:

在 R 目录中:

  • 我支持应用程序的所有方法(如果它们将用于 ui.Rserver.Rglobal.R 文件,则应导出这些方法)
  • A launch_application功能
  • launch_application的定义类似于:
    launch_application <- function(x, ...)
    {
    shiny::runApp(appDir = system.file("application", package = [my_pkg]),
    ...)
    }

    在inst目录中
  • application/server.R
  • application/ui.R
  • application/global.R

  • 构建和安装包后,我只需要运行
    library(my_pkg)
    launch_application(...)

    关于r - 将 Shiny 的应用程序开发为一个包并将其部署到 Shiny 的服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37830819/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com