Answers:
如果您的PC和同事PC属于同一个LAN,则很容易实现。只需通过以下方式运行您的应用程序:
runApp(host="0.0.0.0",port=5050)
通过host
参数设置的值表示接受任何连接(不只是来自本地主机)。该port
参数可以采用您想要的任何值(请确保避免选择其他服务(如ssh
或http
)使用的端口)。然后,记下您的本地IP(如果您使用的是Linux,则可以通过查看ifconfig
)。假设您的IP是192.168.1.70
。您的同事可以通过在浏览器的地址栏中插入您的应用程序192.168.1.70:5050
,即您的IP后跟:
您选择的端口号。
如果要从LAN外部访问,则当有人通过5050端口连接到您的公共IP时,可以将路由器定向到PC。
像这样通过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 = TRUE
到create_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
您可能需要看一下开源解决方案Shinyproxy。
使用Shinyproxy,您将必须将应用程序包装在Docker容器中以托管它们。
在这里,您可以找到有关如何在Docker容器中部署闪亮应用程序的指南(顺便说一句,即使不使用Shinyproxy维护应用程序依存关系也是一种很好的做法)。
有不同的身份验证和缩放方法。
我最近在本地安装的Centos 7 Linux OS服务器上安装了Shiny。我们大部分使用了下面的指南。 https://www.vultr.com/docs/how-to-install-shiny-server-on-centos-7
请随时在此处询问有关设置问题的任何问题,以便使用本指南的其他任何人都可以看到答案!
我们还考虑将其推到AWS服务器上,因为内容敏感,因此选择了我们自己的服务器。否则,两种解决方案看起来都相似。Linux和Shiny系统很轻便,您也许可以在免费的Amazon服务器上运行它!