首页 文章

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

提问于
浏览
64

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

所以我读了this webpage并发现了这句话:

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

在“分享为网页”部分 .

我想知道是否有人能指点我对这个话题有所帮助?像最低要求(甚至是教程) . 问题是我的公司必然会受到关于网络托管和安全等的某些限制,并且不会(现在)支付闪亮的服务器专业版 .

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

4 回答

  • 65

    如果您的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 .

  • 2

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

    我刚刚完成了针对这个问题的RInno软件包的开发,即当公司不支付Shiny Server的费用或 Cloud 服务存在安全问题时 .

    开始:

    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

  • 20

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

    请随时询问有关设置问题的任何问题,以便使用该指南的任何人都能看到答案!

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

  • 0

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

    使用shinyproxy,您必须将您的应用程序包装在docker容器中以托管它们 . 有不同的身份验证和扩展方法 .

相关问题