我正在开发一个shiny 的应用程序,因为我想使用自动测试和功能文档,我开始在一个包中开发接口(推荐here).

我在RStudio中开发了这个shiny 的应用程序,我有一个server.R文件,我可以在RStudio中点击Run App按钮,一切正常.我将我的包提交到github存储库,从现在开始,我想使用devtoolsinstall_github函数将其安装到我的R shiny server上.

现在我想知道如何在服务器上启动我的应用程序.我天真地想安装这个包,并指向server.R文件,但不知怎么的,这是行不通的.不确定问题出在哪里.

我的第二次try 是在shiny服务器可以访问的文件夹中创建一个名为app.R的文件,在这个文件中,我基本上加载了我的包、shiny和其他需要的包,但由于缺少变量,它不知何故会抱怨...

谁能给我一个建议吗?我也很乐意回答任何问题,因为我不知道如何正确地问这个问题.

EDIT Deploying to shiny server

由于Colin D在 comments 中询问如何在shiny 的服务器上部署这些包,我想演示一下我是如何做到这一点的.

首先,我使用下面的命令直接通过命令行as root将我的软件包安装到Shining服务器上.

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 应用程序时的步骤.我通常在一行中以根的形式再次这样做

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文件中使用,则应导出这些方法)
  • 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相关问答推荐

结合qwrap的平均值和标准差以及平均值和置信区间2

当使用stat_summary()+ after_stat()在图表上标记中位数/均值时,如何整齐地定位geom_text标签

替换收件箱的子集(行和列)

R包terra在投影时如何决定模板格栅属性?

基于2行删除重复项指定每列要执行的操作

使用lares::corr_var函数在for循环中分配变量的问题

如何在编辑列时更新可编辑数据表,并使用该表在Shiny中执行连续计算

如何根据R中其他列的值有条件地从列中提取数据?

合并DFS列表并将索引提取为新列

在嵌套列表中查找元素路径的最佳方法

在RStudio中堆叠条形图和折线图

使用Facet_WRAP时更改框图中线的 colored颜色

使用data.table::fcase()而不是dplyr::case_When()时保持值

如何基于两个条件从一列中提取行

TreeNode打印 twig 并为其上色

在另一个包中设置断点&S R函数

观察器中的inaliateLater的位置

将工作目录子文件夹中的文件批量重命名为顺序

在散点图中使用geom_point放置线图例

R:使用ApexCharge更改标签在饼图中的位置