最近有个管理上的想法,建设开发咋们广电系统的拓客发展系统。当然,这个系统,可以用Python + Flask或者可以用R语言的shinydashboard快速部署。前面自己写了点R语言shiny登录应用的demo,还有一些ggplot2的快速地图结合数据的呈现,还有一些其他的简单数据呈现。但是,这些并未涉及到MySQL的对接。因为想法和系统的需求还没有明确,不管如何我们先尝试在阿里云进行shinyproxy进行登录部署。
在R语言中,shiny server只有收费的版本才有认证功能,免费版本没有认证功能。如何实现认证登录,目前主流做法是通过shinyjs实现登录认证,经过了解发现shinyproxy能够实现登录认证功能。虽然目前还不是很了解docker,先尝试部署一下。从两个方面进行了尝试,第一在vmware虚拟机上进行部署;第二在阿里云上进行部署。跌打过程如下:
其中,在原来自己的阿里云的实例上进行部署,按照参考的文档和shinyproxy的部署文档进行过程部署,不知道原先总是报错,shinyproxy服务运行几秒后报错,经查,java报spring导入出错。后,重置阿里云实例后按文档部署成功。但是,页面如何更新替换还没有研究。
第一步,安装java8:
1、首先:没有add-apt-repository命令,通过以下命令安装
1. sudo apt-get install python-software-properties
2. sudo apt-get update
4. sudo apt install software-properties-common
5. sudo apt-get update
2、添加ppa
sudo add-apt-repository ppa:webupd8team/java
3、搜索相关安装包
sudo apt-cache search jdk
4、最后安装
udo apt-get install openjdk-8-jdk
第二步,安装Docker相关程序:
1.更新Ubuntu的apt源索引
$ sudo apt-get update
2.安装包允许apt通过HTTPS使用仓库
$ sudo dpkg --configure -a
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
3.添加Docker官方GPG key
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
4.设置Docker稳定版仓库
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
5.更新apt源索引
$ sudo apt-get update
6.安装最新版本Docker CE(社区版)
$ sudo apt-get install docker-ce
查看安装Docker的版本
$ docker --version
检查Docker CE 是否安装正确
$ sudo docker run hello-world
第三步,配置Docker启动项:
创建目录和文件:mkdir docker.service.d,tochu override.conf
新增/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:
下载shinyproxy:wget https://www.shinyproxy.io/downloads/shinyproxy_2.4.2_amd64.deb
sudo dpkg -i shinyproxy_2.4.2_amd64.deb
sudo service shinyproxy restart
第五步,配置ShinyProxy的application.yml文件:
在/etc/shinyproxy目录下,用curl命令复制application.yml的模板文件,方便后期修改
curl https://raw.githubusercontent.com/openanalytics/shinyproxy/master/src/main/resources/application-demo.yml ,文件模板内容如下:
proxy:title:Open Analytics Shiny Proxylogo-url:https://www.openanalytics.eu/shinyproxy/logo.pnglanding-page:/heartbeat-rate:10000heartbeat-timeout:60000port:8080authentication:ldapadmin-groups:scientists# Example: 'simple' authentication configurationusers:- name:jackpassword:passwordgroups:scientists- name:jeffpassword:passwordgroups:mathematicians# Example: 'ldap' authentication configurationldap:url:ldap://http://ldap.forumsys.com:389/dc=example,dc=comuser-dn-pattern:uid={0}group-search-base:group-search-filter:(uniqueMember={0})manager-dn:cn=read-only-admin,dc=example,dc=commanager-password:password# Docker configurationdocker:cert-path:/home/noneurl:http://localhost:2375port-range-start:20000specs:- id:01_hellodisplay-name:Hello Applicationdescription:Application which demonstrates the basics of a Shiny appcontainer-cmd:["R","-e","shinyproxy::run_01_hello()"]container-image:openanalytics/shinyproxy-demoaccess-groups:[scientists, mathematicians]- id:06_tabsetscontainer-cmd:["R","-e","shinyproxy::run_06_tabsets()"]container-image:openanalytics/shinyproxy-demoaccess-groups:scientistslogging:file:name:shinyproxy.log
编辑application.yml,参数:authentication: authentication method; one of ldap (default), simple or none; 授权登录的方法:ldap(默认),simple(简单,我就是改成这个后就可以用该参数下面的users配置用户),none(无需授权),这里我们改委simple认证方式,就可以登录认证。
这样,授权验证方式改为simple后就可以通过模板文件里面的用户和密码登录http://localhost:8080,登录页面及登录后的页面如下:
踩过的坑,分享给大家,一起共勉。