我想让我的同事们能够使用闪亮的应用程序,而不需要运行甚至安装R。
因此,我阅读了这个网页并找到了以下句子:
如果您熟悉Web托管或可以访问IT部门,则可以自己托管Shiny应用程序。
位于“共享为网页”-部分下面。
如何做到这一点?
问题在于,我的公司受到特定的Web托管和安全性限制,现在还不会为闪亮的服务器专业版付费。
但上面的句子给了我希望,可以自己设置一些东西来说服他们。
我想让我的同事们能够使用闪亮的应用程序,而不需要运行甚至安装R。
因此,我阅读了这个网页并找到了以下句子:
如果您熟悉Web托管或可以访问IT部门,则可以自己托管Shiny应用程序。
位于“共享为网页”-部分下面。
如何做到这一点?
问题在于,我的公司受到特定的Web托管和安全性限制,现在还不会为闪亮的服务器专业版付费。
但上面的句子给了我希望,可以自己设置一些东西来说服他们。
如果你的电脑和你的同事的电脑属于同一个局域网,那么这很容易实现。只需要通过以下方式运行你的应用程序:
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外访问,则可以将路由器引导到您的PC,当有人通过5050端口连接到您的公共IP时。
install.packages("RInno")
require(RInno)
RInno::install_inno()
然后,您只需要调用两个函数来创建安装框架:
create_app(app_name = "myapp", app_dir = "path/to/myapp")
compile_iss()
create_app
中添加include_R = TRUE
: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实验室 - RInno
你可能想要看一下开源解决方案shinyproxy。
使用shinyproxy,你需要将你的应用程序封装在docker容器中进行托管。
在这里,你可以找到一个关于如何在docker容器中部署shiny应用程序的指南(顺便说一句,即使不使用shinyproxy,维护应用程序依赖性的做法是很好的实践)。
有不同的身份验证和扩展方法可用。
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
这对于一个概念验证很有用,但肯定不是一个适合生产的解决方案。