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

sch*_*sie 83 web-hosting r shiny shiny-server

我正在尝试为我的同事提供闪亮的应用程序,而无需他们运行甚至安装R.

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

如果您熟悉Web托管或可以访问IT部门,则可以自己托管您的Shiny应用程序.

在" 共享为网页 "部分下.

我怎样才能做到这一点?

问题是我的公司必然会受到关于网络托管和安全等的某些限制,并且不会(现在)支付闪亮的服务器专业版.

但上面的句子让我希望自己设置一些东西来说服他们.

nic*_*ola 79

如果您的PC和同事PC属于同一个局域网,则很容易实现.只需运行您的应用:

runApp(host="0.0.0.0",port=5050)
Run Code Online (Sandbox Code Playgroud)

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

如果您想从局域网外部进行访问,当有人通过5050端口连接到您的公共IP时,您可以将路由器连接到PC.

  • 这是一篇非常有用的帖子 - 我的后续问题是,有多少人可以同时访问该应用? (6认同)
  • 好的.我现在尝试了它并且它有效.但是,如果没有在我的机器上运行应用程序,是否有可能?就像我说的,我们可以访问IT部门和一些服务器,引用的句子表明可以这样做. (5认同)
  • 该应用必须在某个地方运行.托管它的机器必须具有R,闪亮和所有必需的依赖项才能使其运行. (3认同)
  • 谢谢.我星期一试试吧.但这意味着我必须让R和应用程序运行而其他人访问它? (2认同)
  • 是的。您的应用程序必须在您的 PC 上运行。 (2认同)
  • 您好@nicola,请您提供更多信息,了解当有人通过5050端口连接您的公共IP时如何"将路由器指向您的PC"?谢谢! (2认同)

Jon*_*ill 27

像这样通过局域网共享应用程序非常酷,但它有点像黑客.我和一些同事一起尝试过,但它确实有效,但它更像是一种办公技巧,而不是一种可持续的解决方案.

我刚刚为这个确切的问题开发了RInno软件包,即公司不支付Shiny Server的费用或云服务存在安全问题.

开始:

install.packages("RInno")
require(RInno)
RInno::install_inno()
Run Code Online (Sandbox Code Playgroud)

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

create_app(app_name = "myapp", app_dir = "path/to/myapp")
compile_iss()
Run Code Online (Sandbox Code Playgroud)

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

create_app(app_name = "myapp", app_dir = "path/to/myapp", include_R = TRUE)
Run Code Online (Sandbox Code Playgroud)

它默认包含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"))
Run Code Online (Sandbox Code Playgroud)

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

  • 仅适用于Windows ^^ (2认同)
  • 是的,我买了一台Linux笔记本电脑,接下来我正在研究支持Ubuntu的方法 (2认同)

ism*_*gal 8

您可能想看看开源解决方案Shinyproxy

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

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

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


小智 5

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

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

我们还考虑将其推送到 AWS 服务器上,由于内容敏感,因此选择了我们自己的服务器。除此之外,两种解决方案看起来都很相似。Linux和Shiny系统很轻,你也许可以在免费的亚马逊服务器上运行它!