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

时间:2014-11-07 10:58:13

标签: r web-hosting shiny shiny-server

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

所以我读了this webpage 并找到了这句话:

  

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

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

我该怎么做?

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

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

5 个答案:

答案 0 :(得分:73)

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

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时,您可以将路由器引导至PC。

答案 1 :(得分:25)

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

我刚刚为这个确切的问题开发了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 = TRUE添加到create_app

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

默认包含shiny,magrittr和jsonlite,因此如果您使用ggplot2或plotly等其他包,只需将它们添加到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"))

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

答案 2 :(得分:3)

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

使用Shinyproxy,您必须将应用包装在Docker容器中以托管它们。 有不同的身份验证和缩放方法。

答案 3 :(得分:2)

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

欢迎在此处询问有关设置问题的任何问题,以便使用该指南的任何其他人都能看到答案!

我们还考虑在AWS服务器上推送它,选择我们自己的,因为内容是敏感的。否则两种解决方案看起来相Linux和Shiny系统很轻,您可以在免费的亚马逊服务器上运行它!

答案 4 :(得分:1)

这是另一个非常“hacky”的解决方案。我最近不得不处理您面临的同样问题,并且不确定如何在做出决定的人面前获得某种 POC。我知道他们可以访问特定的共享网络驱动器。所以我将 R 二进制文件保存到该网络驱动器。我编写的应用程序保存在同一个网络驱动器上。然后我编写了一个 .R 文件并将其保存在应用程序的工作目录中,其中包含这些行以设置工作目录并获取全局变量。

app_start.R 的内容

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

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

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

它对 POC 起到了作用,但绝对不是一个适合生产的解决方案。

相关问题