Superset接入CAS单点登录

来源:互联网 发布:spss 22.0软件安装 编辑:程序博客网 时间:2024/06/07 22:15

什么是Superset

Superset是Apache下一个数据平台开源框架,它向用户提供了
1. 多种可视化工具来展现你的数据。
2. 一种简单形成图表的方式。
3. 先进的SQL编辑器,以及基于SQL查询结果直接生成图表的方法。SQL编辑器带有自动提示功能哦!
4. 细粒度的用户权限控制和高扩展的第三方认证方式。权限控制可以精细到表的维度。第三方认证方式支持OpenID、LDAP、OAuth及REMOTE_USER认证。
5. 适配多种数据源MySQL、SQLServer、Postgres等的方式
6. 最最中要的两个,基本的数据查询和数据可视化。

如何安装

此安装步骤是针对于CentOS系统,所用Python版本为2.7。

  • 1、https://github.com/apache/incubator-superset.git 从此地址克隆并修改master的代码。这里有坑,千万别用下下来的zip包解压的代码,里面依赖的版本有冲突,浪费我半天时间。一定要clone master的代码,当前最新的代码有木有版本冲突我就不知道了。
  • 2、sudo yum upgrade python-setuptools
  • 3、sudo yum install gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel libsasl2-devel openldap-devel lrzsz
  • 4、sudo pip install –upgrade pip 这三步安装并更新我们后面要用的命令工具。
  • 5、sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv 安装virtualenv,维护Python独立运行环境的工具。
  • 6、sudo virtualenv venv 会在当前目录创建一个叫venv的独立运行环境(一个文件夹)。
  • 7、到venv/bin文件夹下,运行source activate(Centos是source,其他系统可能不一样)进入venv虚拟环境,如果想退出的话,运行deactivate。
  • 8、sudo yum install npm 安装npm命令,后面需要用到。
  • 9、到$SUPERSET_HOME/superset/assets目录下,也就是我们上面克隆并修改的代码的那些个目录。
  • 10、sudo npm –registry https://registry.npm.taobao.org install。
  • 11、sudo npm run build 这两步应该是在准备node方面的东西吧,具体我也不太清楚。
  • 12、到$SUPERSET_HOME目录,具体参见第9步。
  • 13、sudo python setup.py install 安装Superset。中间可能会安装几个比较大的包,网速较慢的话会卡主,可以直接crtl+C结束掉,用带数据源的pip手动安装下吧。这是我安装的时候所对应的几个需要安装的大包的版本,具体参照安装信息。
    sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -v SQLAlchemy==1.1.9
    sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -v pandas==0.20.2
    sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -v Markdown==2.6.8
    sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -v gunicorn==19.7.1
    sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -v future==0.16.0
    sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -v flower==0.9.1
    sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -v Flask-AppBuilder==1.9.1
    sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -v celery==3.1.25
    sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -v botocore==1.5.90
  • 14、安装完成以后,一般安装目录是在/usr/lib/python2.7/site-packages/superset-0.18.5-py2.7.egg/superset这个目录下,现在这个版本的包安装完成后,还需要手动做几项工作。不过首先应该切换到这个安装目录下面。
  • 15、sudo cp -r /home/yecheng.li/clone/incubator-superset/superset/assets ./ 执行这个命令把源文件里面的assets包拷到安装目录下。
  • 16、sudo cp -r /home/yecheng.li/clone/incubator-superset/superset/static ./ 执行这个命令把源文件里面的static文件夹拷到安装目录下。要拷的这两个目录的内容是在10、11步执行完后生成的。
  • 17、https://github.com/cameronbwhite/Flask-CAS.git 从这个地址克隆最新的Flask-CAS的代码下来。之所以要最新的代码是因为,包1.0.0里面有个bug,我们这个项目里面刚好用到了那里,然而包1.0.1使用pip安装不到,因此只能直接安装其源码了。具体见:http://ju.outofmemory.cn/entry/305202。
  • 18、切到Flask-CAS源文件目录下,执行sudo python setup.py install 命令来安装Flask-CAS。
  • 19、fabmanager create-admin –app superset 这一步是用来创建Flask APP Builder管理员账户的。下面这四步在官网上面安装源码的部分木有写,但是是必须的,他们是属于Flask APP Builder框架的。如果没有以下这四步的话,FAB框架的权限和管理用户的数据库是构建不起来的。创建用户坑了我大半天。
  • 20、superset db upgrade
  • 21、superset load_examples Superset数据库升级,并且插入一些示例数据。
  • 22、superset init 用户、权限、角色数据库的初始化。Superset用来管理用户和权限的数据库默认是sqlite,在FAB的权限和用户数据库创建好后,可以使用sqlite查看数据库信息:sudo sqlite3 superset.db。superset.db文件一般在 ~/.superset/文件夹下。
  • 23、superset runserver 应该是能正常启动的,启动不了就是又有新坑了!去看下官方文档吧!传送门:https://superset.incubator.apache.org/installation.html
  • 24、sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple mysqlclient 如果要配置MySQL数据库的话,需要运行此命令安装一部分组件。但是直接运行的话会报错。应该先安装sudo yum install python-devel mysql-devel 这两个组件才行。
    以上是使用源码安装的套路。如果不需要修改源码的话,就更加简单了!只需要按照官网的步骤来就行啦!

如何接入CAS登陆

FAB已经有了完善的权限管理系统了(是否登陆,是否有权限查看某个界面),这些都不需要额外来做。Flask也有CAS扩展模块用以支持CAS登陆。而我所做的就是把CAS模块集成到FAB的权限管理系统之上。FAB的权限管理是基于Session中的一个User值,因此我只需要拦截/login请求到Flask-CAS,让其做登陆和验证的功能。同时传给其一个login的CallBack URL让其在登陆成功的情况下回调系统,在回调时把User写到当前系统的Session中去。Logout也是同样的道理。都是使用CallBack URL来做的。只不过默认情况下,CAS server端在logout以后,默认不会跳到用户指定的URL中,需要手动的去配置。

几个小坑

中文展示乱码

在写数据库连接串时末尾加上编码格式,如下
mysql://superset_nbdata_r:XXXXXXXXXX@10.64.1.248:3338/spider?charset=utf8

添加SQL_LAB权限找不到数据库

为了控制数据库访问权限,新建Role的时候要配置database access on [xxxxxx]这个时候,如果是刚添加的数据库,可能并看不到,这是因为前端有缓存,清理下重新选就可以了。

SQL_LAB查询时中文报错

UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position xxx ordinal not in range
如上这种错误是因为Python2.x中使用的asscii编码,中文是Unicode编码会出错。两种方案:1是升级python版本至3.x。2是修改代码,在superset/views/core.py文件中加入如下代码

import sys reload(sys) sys.setdefaultencoding('utf-8') 
原创粉丝点击