托管和设置自己的闪亮的应用程序没有闪亮的服务器

我正在努力让我的同事可以使用闪亮的应用程序,而不需要运行它们,甚至不需要安装 R。

所以我读了这个网页 and found this sentence:

如果你熟悉网站托管或有访问一个 IT 部门,你可以托管自己的闪亮应用程序。

under the 'Share as a web page'-section.

我怎么能这么做?

问题是,我的公司必须遵守一定的网站托管和安全等方面的限制,不会(现在)支付一个闪亮的服务器专业。

但是上面这句话给了我希望,让我们自己建立一些东西来说服他们。

49288 次浏览

如果你的电脑和你的同事的电脑属于同一个局域网,这是很容易实现的。只要运行你的应用程序:

runApp(host = "0.0.0.0", port = 5050)

通过 host参数设置的值表示接受任何连接(而不仅仅是来自 localhost)。port参数可以假定您想要的任何值(只需确保避免选择其他服务(如 sshhttp)使用的端口)。然后,注意你的本地 IP (如果你在 linux 下,你可以通过 ifconfig看到它)。假设你的 IP 地址是 192.168.1.70。你的同事可以通过在浏览器 192.168.1.70:5050的地址栏中插入你的应用程序,也就是说,你的 IP 后面跟着 :和你选择的端口号。

如果你想从局域网外部访问,当有人通过5050端口连接到你的公共 IP 时,你可以将你的路由器指向你的电脑。

像这样在局域网上分享应用程序是很酷的,但是这有点像黑客。我在一些同事身上试验过,效果不错,但与其说它是一种可持续的解决方案,不如说它更像是一种办公室把戏。

我刚刚完成了 林诺软件包的开发,解决了这个问题,也就是说,当一家公司不愿意为 Shiny Server 付费,或者云服务存在安全隐患的时候。

开始:

install.packages("RInno")
require(RInno)
RInno::install_inno()

然后您只需要调用两个函数来创建一个安装框架:

create_app(app_name = "myapp", app_dir = "path/to/myapp")
compile_iss()

如果您希望为没有安装它的同事添加 R,请将 include_R = TRUE添加到 create_app:

create_app(app_name = "myapp", app_dir = "path/to/myapp", include_R = TRUE)

它的默认值是包含 shine、 magrittr 和 jsonlite,所以如果您使用的是 ggplot2或 plot 等其他包,只需将它们添加到 pkgs参数中。您还可以将 GitHub 包包含到 remotes参数中:

create_app(
app_name = "myapp",
app_dir  = "path/to/myapp"
pkgs     = c("shiny", "jsonlite", "magrittr", "plotly", "ggplot2"),
remotes  = c("talgalili/installr", "daattali/shinyjs"))

If you are interested in other features, check out FI 实验室-RInno

I have recently installed Shiny on a Centos 7 Linux OS server we have locally. We used the guide below for the most part. https://www.vultr.com/docs/how-to-install-shiny-server-on-centos-7

欢迎在这里询问任何关于安装问题的问题,这样其他使用指南的人都可以看到答案!

We also looked into pushing it up on a AWS server, opted for our own as the content is sensitive. Otherwise both solutions looked similar. The Linux and Shiny system are light, you might be able to run it on the free Amazon server!

您可能想了解一下开源解决方案 闪亮代理人

Using shinyproxy you will have to wrap your apps in a docker container to host them.

在这里 你可以找到一个关于如何在 docker 容器中部署一个闪亮的应用程序的指南。是一个很好的实践,即使不使用 shinyxy,也可以维护应用程序的依赖性)。

有不同的 认证和缩放方法可用。

Here's another really "hacky" solution. I recently had to deal with the same issue you faced, and wasn't sure how to get some sort of POC in front of the eyes of those who make the decisions. I knew that they could access a particular shared network drive. So I saved the R binaries to that network drive. The app that I wrote was saved on that same network drive. I then wrote a .R file and saved it in the app's working directory that had these lines in it to set the working directory and source the global variables.

App _ start. R 的内容

setwd("shared/drive/app_directory")
source("./global.R")
runApp("launch.browser=TRUE")

所有这些都是由一个批处理文件(如果是窗口,则为。Sh 文件) ,其中一行包含两部分,即到网络驱动器上的 R 二进制文件的绝对文件路径,然后是。上面运行应用程序的 R 脚本

# something to the effect of
filepath/to/R/bin/Rscript.exe filePath/to/app_start.R

它为 POC 提供了技巧,但肯定不是一个适合生产的解决方案。

Web 托管数据应用程序有一些教程来托管只使用 系统码头的 Shiny 应用程序,并使它们在全球范围内可访问,您可以查看它们。