在没有闪亮服务器的情况下托管和设置自己的闪亮应用


95

我正在尝试使我的同事可以使用闪亮的应用程序,而不必运行它们甚至不必安装R。

所以我读了这个网页 ,发现了这句话:

如果您熟悉网络托管或有权访问IT部门,则可以自己托管Shiny应用程序。

在“ 共享为网页 ”部分下。

我怎样才能做到这一点?

问题是我的公司在网络托管和安全性等方面受到某些限制,并且(暂时)不会为闪亮的服务器专业版付费。

但是上面的句子给了我希望自己做些什么来说服他们。


Answers:


86

如果您的PC和同事PC属于同一个LAN,则很容易实现。只需通过以下方式运行您的应用程序:

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

通过host参数设置的值表示接受任何连接(不只是来自本地主机)。该port参数可以采用您想要的任何值(请确保避免选择其他服务(如sshhttp)使用的端口)。然后,记下您的本地IP(如果您使用的是Linux,则可以通过查看ifconfig)。假设您的IP是192.168.1.70。您的同事可以通过在浏览器的地址栏中插入您的应用程序192.168.1.70:5050,即您的IP后跟:您选择的端口号。

如果要从LAN外部访问,则当有人通过5050端口连接到您的公共IP时,可以将路由器定向到PC。


2
谢谢。我要在星期一尝试。但这意味着我必须在其他人访问R和应用程序的同时运行它吗?
schlusie 2014年

2
是。您的应用程序必须在PC上运行。
nicola

5
好的。我现在尝试了一下,它奏效了。但是有可能在我的机器上不运行该应用程序吗?就像我说的,我们可以访问IT部门和一些服务器,引用的句子表明可以这样做。
schlusie 2014年

3
该应用程序必须在某处运行。承载它的机器必须具有R,闪亮和所有必需的依赖关系才能运行。
nicola

6
这是一篇非常有帮助的帖子-我的后续问题是,有多少人可以同时访问该应用程序?
md1630

34

像这样通过LAN共享应用程序非常酷,但这是一种黑客。我曾与一些同事一起尝试过,并且可以工作,但它更多的是办公技巧,而不是可持续的解决方案。

我刚刚完成了针对该确切问题的RInno软件包的开发,即当公司不支付Shiny Server的费用或云服务存在安全问题时。

开始:

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

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

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

如果您想为未安装R的同事提供R,请添加include_R = TRUEcreate_app

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

它的默认设置是包含Shiny,Magrittr和jsonlite,因此,如果您使用的是ggplot2或plotly等其他软件包,只需将它们添加到pkgs参数中即可。您还可以在remotes参数中包含GitHub软件包:

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

如果您对其他功能感兴趣,请查看FI Labs-RInno


3
仅适用于Windows ^^
pawamoy

2
是的,我买了一台Linux笔记本电脑,接下来我正在寻找支持Ubuntu的方法
Jonathan Hill

7

您可能需要看一下开源解决方案Shinyproxy

使用Shinyproxy,您将必须将应用程序包装在Docker容器中以托管它们。

在这里,您可以找到有关如何在Docker容器中部署闪亮应用程序的指南(顺便说一句,即使不使用Shinyproxy维护应用程序依存关系也是一种很好的做法)。

有不同的身份验证和缩放方法


3

我最近在本地安装的Centos 7 Linux OS服务器上安装了Shiny。我们大部分使用了下面的指南。 https://www.vultr.com/docs/how-to-install-shiny-server-on-centos-7

请随时在此处询问有关设置问题的任何问题,以便使用本指南的其他任何人都可以看到答案!

我们还考虑将其推到AWS服务器上,因为内容敏感,因此选择了我们自己的服务器。否则,两种解决方案看起来都相似。Linux和Shiny系统很轻便,您也许可以在免费的Amazon服务器上运行它!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.