全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
5045 4
2019-05-10

R的可视化功能是非常强大的,特别是RStudio下面的shinyapp,可以提供可视化的交互分析界面,其开源的shiny-server允许在linux服务器上面部署shinyapp,允许外部网络访问,但是有用户权限控制的shiny-server pro版是收费的,没有用户访问控制,始终觉得shinyapp是在裸奔着,pro版收费太贵了。这时候得感谢openanalytics团队,开源公布了ShinyProxy应用(ShinyProxy绝对是企业和个人开发者最喜欢的部署shinyapp的方式。它具有内置的LDAP身份验证和授权功能,可以轻松地(通过TLS)保护shiny的访问,并且对shinyapp的并发使用没有限制)。以下将分享我个人部署应用ShinyProxy的一些经验,希望可以帮到其他人。在这里建议看到的人有R语言、RStudio、Shiny的相关经验,可以更容易理解。下面的实现都是基于CentOS系统的(看介绍是windows和macos都可以,具体可看ShinyProxy官网:https://www.shinyproxy.io/  )。


第一步,安装必须的环境:java 8 Zulu(官网推荐该版本)和Docker

1、下载java 8 Zulu压缩包(https://www.azul.com/products/zulu-enterprise/[/url]),解压,配置环境变量,查看java版本


java -version

openjdk version "1.8.0_72"

OpenJDK Runtime Environment (Zulu 8.13.0.5-linux64) (build 1.8.0_72-b15)

OpenJDK 64-Bit Server VM (Zulu 8.13.0.5-linux64) (build 25.72-b15, mixed mode)

2、安装Docker相关程序


#按顺序安装

sudo yum install docker-ce-cli-18.09.5-3.el7.x86_64.rpm

sudo yum install containerd.io-1.2.5-3.1.el7.x86_64.rpm

sudo yum install docker-ce-18.09.5-3.el7.x86_64.rpm

3、配置Docker启动项,新增/etc/systemd/system/docker.service.d/override.conf文件,并添加以下内容


[Service]

ExecStart=

ExecStart=/usr/bin/dockerd -H unix:// -D -H tcp://127.0.0.1:2375


第二步,安装ShinyProxy,建议直接安装rpm包,这样ShinyP可常驻程序运行,并随机启动


4、下载rpm包([url]https://www.shinyproxy.io/downloads/)并安装

复制代码

第三步,安装shinyproxy-demo

5、在ShinyProxy中,shinyapp是在docker容器中提供的,openanalytics/shinyproxy-demo是一个演示docker镜像,已经配置好了shinyapp,建议是安装该镜像,然后研究学习,在这个基础上修改创建自己的shinyapp的docker镜像。

6、安装代码如下:

复制代码
复制代码

7、查看安装结果

复制代码
复制代码

第四步,配置ShinyProxy的application.yml文件

8、查看ShinyProxy的状态和返回信息(正常启动是显示active (running)),记下Loaded的shinyproxy.service文件路径,下面会用到

复制代码
复制代码

9、查看/etc/systemd/system/shinyproxy.service中的shinyproxy的工作目录:WorkingDirectory=/etc/shinyproxy,转至该目录下,用curl命令复制application.yml的模板文件,方便后期修改

复制代码

10、编辑application.yml,这里我只想说其中的一个参数:authentication: authentication method; one of ldap (default), simple or none; 授权登录的方法:ldap(默认),simple(简单,我就是改成这个后就可以用该参数下面的users配置用户),none(无需授权),其他参数可以参考官网的说明([url=https://www.shinyproxy.io/configuration/]https://www.shinyproxy.io/configuration/)

11、授权验证方式改为simple后就可以通过模板文件里面的用户和密码登录http://localhost:8080,登录页面及登录后的页面如下:

shinyproxy-login.png

shinyproxy-select-app.png

shinyproxy-shiny-app.png






第五步,添加自己的shinyAPP,这里需要有含shiny的ui.R和server.R(app.R也可以)文件夹、Dockerfile文件Rprofile.site文件,示例如下:

复制代码

12、在application.yml里面的specs节点下添加该shinyapp镜像,然后重启ShinyProxy,登录http://localhost:8080,即可看到新增的app

复制代码

add-another-shiny-app.png

euler-app-running.png


总结:经过上面的一系列操作,就实现了ShinyProxy的安装和使用,不止可以用在shinyapp,其他任何可以用Docker的程序(例如python)都可以用这种方法进行权限控制。我这里只是一个简单的使用方法,更深入的建议查看ShinyProxy的官网和google自己不明白的地方,也欢迎各位留言讨论,谢谢!


附件列表
overview.png

原图尺寸 252.73 KB

overview.png

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2019-5-10 22:29:40
willingpo 发表于 2019-5-10 15:20
好的好的好的好的好的
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-12-20 15:10:08
你好,楼主。

我在阿里云上进行部署shinyproxy时候遇到了问题,shinyproxy的服务启动之后,几秒钟之后,就显示服务进程dead,不知道怎么回事?!
即使如此,通过公网地址访问,8080端口,不能显示成功的界面。以前在阿里云上部署了shinyserver服务能够正常运转,就是RStudio server也能正常部署运转。

求教


看了下日志:

Dec 20 14:57:13 iZuf67l2movj08u9koj6fsZ java[30455]: Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabl
Dec 20 14:57:13 iZuf67l2movj08u9koj6fsZ java[30455]: 2020-12-20 14:57:13.834 ERROR 30455 --- [           main] o.s.boot.SpringApplication               : Applicati
Dec 20 14:57:13 iZuf67l2movj08u9koj6fsZ java[30455]: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ldapContextSource' def

Dec 20 14:57:13 iZuf67l2movj08u9koj6fsZ java[30455]: Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.ld
Dec 20 14:57:13 iZuf67l2movj08u9koj6fsZ java[30455]:         at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiati
Dec 20 14:57:13 iZuf67l2movj08u9koj6fsZ java[30455]:         at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(Constru
Dec 20 14:57:13 iZuf67l2movj08u9koj6fsZ java[30455]:         ... 24 common frames omitted
Dec 20 14:57:13 iZuf67l2movj08u9koj6fsZ java[30455]: Caused by: java.lang.IllegalAccessError: class org.springframework.ldap.core.support.AbstractContextSource (in

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-12-20 19:11:06
willingpo 发表于 2019-5-10 15:20
R的可视化功能是非常强大的,特别是RStudio下面的shinyapp,可以提供可视化的交互分析界面,其开源的shiny- ...
好的好的好的好的
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-3-30 17:29:01
woshiisp 发表于 2020-12-20 15:10
你好,楼主。

我在阿里云上进行部署shinyproxy时候遇到了问题,shinyproxy的服务启动之后,几秒钟之后, ...
是不是java环境没装好
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群