我正在尝试为我的同事提供闪亮的应用程序,而无需他们运行甚至安装R。
所以我读了this webpage 并找到了这句话:
如果您熟悉网络托管或可以访问IT 部门,您可以自己托管您的Shiny应用程序。
在“作为网页共享”下 - 部分。
我该怎么做?
问题是我的公司必然会受到关于网络托管和安全等方面的某些限制,并且(现在)不会支付闪亮的服务器专业版。
但上面的句子让我希望自己设置一些东西来说服他们。
答案 0 :(得分:73)
如果您的PC和同事PC属于同一个局域网,则很容易实现。只需运行您的应用程序:
runApp(host="0.0.0.0",port=5050)
通过host
参数设置的值表示接受任何连接(不仅仅是来自localhost)。 port
参数可以假设您想要的任何值(只是确保避免选择其他服务使用的端口,如ssh
或http
)。然后,记下你的本地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 起到了作用,但绝对不是一个适合生产的解决方案。