前言
有客户提出不想使用 Superset App,暂时也不打算购买云服务,问我还有啥办法,这里我就把帮客户实施的方案共享出来。
这个是几个可选方案中的一个,部署简单, 后续可根据需要升级为付费服务。
Heroku
Heroku 是一个支持多种编程语言的云平台即服务。在 2010 年被 Salesforce.com 收购。Heroku 算是云平台的元祖之一了,从 2007 年 6 月起开发,当时它仅支持 Ruby,但后来增加了对 Java、Node.js、Scala、Clojure、Python 以及(未记录在正式文件上)PHP 和 Perl 的支持。基础操作系统是 Debian,在最新的技术堆栈则是基于 Debian 的 Ubuntu(服务器操作系统,Ubuntu 是我的最爱)。
Heroku 支持 Git 和 Docker 两种方式部署应用。免费账号,可以在单 dynos(轻量级、隔离的 Linux 容器,heroku 的最小应用部署单位)中运行您的应用程序,并且提供一个免费的 Postgres 实例。
本文介绍的是以 GitHub 的方式一键部署 Apache Superset。
准备工作
-
注册 Heroku 账号 -
安装 heroku cli(这个在 load_example 的时候用到,最简方式,这步可以省略)
一键部署
部署代码,我已经放到 GitHub[1] 上。访问我的 GitHub 项目页面,点

开始部署。
免费版本,因为资源有限,load_examples 数据需要单独手动执行命令,否则会报错导致部署失败,如果你不需要examples,可以忽略这步,
heroku run bash --app YOURAPPNAME
superset load_examples
superset init
就算如此,仍然会报错,但可以正常运行。
详细解释
该项目主要有以下几个文件
-
Aptfile
:告诉 heroku 先准备哪些安装,如果不安装 mysqlclient,可以省略这个文件。 -
Procfile
:告诉heroku安装成功后运行什么,这里是运行 web,具体命令是superset run -p $PORT -h 0.0.0.0 --with-threads
-
README.md
-
app.json
:应用的基本配置信息都在这里了 从文件中可以看出,这是一个 python 应用,使用了 Postgres 实例(插件), 第一次部署执行脚本sh ./postdeploy.sh
{
"name": "Superset on Heroku",
"keywords": [
"superset",
"business intelligence"
],
"description": "Data exploration platform designed to be visual, intuitive, and interactive",
"logo": "https://raw.githubusercontent.com/apache/superset/master/superset-frontend/src/assets/branding/superset-logo-stacked.png",
"repository": "https://github.com/alitrack/superset-on-heroku",
"addons": [
"heroku-postgresql"
],
"buildpacks": [
{ "url": "heroku/python" }
],
"env": {
"FLASK_APP": {
"description": "Flask application name",
"value": "superset"
},
"SECRET_KEY": {
"description": "A secret key for verifying the integrity of signed cookies.",
"generator": "secret"
}
},
"scripts": {
"postdeploy": "sh ./postdeploy.sh"
}
}
-
postdeploy.sh
就是安装好 superset 后,数据库初始化最简脚本
superset db upgrade
flask fab create-admin --username admin --firstname user --lastname user --email admin@fab.org --password qwert
# superset load_examples
superset init
-
requirements.txt
安装 superset 所需要的依赖包,同时包括几个常用的数据库支持包,Postgres,MySQL,MSSQL,ClickHouse -
runtime.txt
指定 python 的版本,这里是 3.7.12
python-3.7.12
-
superset_config.py
自定义superset 配置,
import os
#---------------------------------------------------------
# Superset specific config
#---------------------------------------------------------
# ROW_LIMIT = 5000
SUPERSET_WORKERS = 1 # for it to work in heroku basic/hobby dynos increase as you like
# 端口由heroku指定,
SUPERSET_WEBSERVER_PORT = os.environ['PORT']
#---------------------------------------------------------
# 后期可以通过设置变量,添加MAPBOX_API_KEY
MAPBOX_API_KEY = os.getenv('MAPBOX_API_KEY')
#---------------------------------------------------------
# Flask App Builder configuration
#---------------------------------------------------------
# Your App secret key
# 这个在app.json里指定了,自动生成,可以通过环境变量设置
SECRET_KEY = os.environ['SECRET_KEY']
# 这个是Postgres addon的链接,系统自动生成
# 如果你不想使用heroku提供的Postgres,你可以使用覆盖这个变量
SQLALCHEMY_DATABASE_URI = os.environ['DATABASE_URL']
# Flask-WTF flag for CSRF
WTF_CSRF_ENABLED = CSRF_ENABLED = True
# use inserted X-Forwarded-For/X-Forwarded-Proto headers
ENABLE_PROXY_FIX = True
## Superset的几个参数设置
SQLLAB_ASYNC_TIME_LIMIT_SEC = 300
SQLLAB_TIMEOUT = 300
SUPERSET_WEBSERVER_TIMEOUT = 300
# 语言设置
# Setup default language
BABEL_DEFAULT_LOCALE = 'zh'
# Your application default translation path
BABEL_DEFAULT_FOLDER = 'superset/translations'
# The allowed translation for you app
LANGUAGES = {
'en': {'flag': 'us', 'name': 'English'},
'zh': {'flag': 'cn', 'name': 'Chinese'},
}
写在后面
有兴趣的可以体验下
网址:https://bisuperset.herokuapp.com/
用户名:alitrack
密码:qwert
为了方便大家体验,请不要修改密码,谢谢。
参考资料
GitHub: https://github.com/alitrack/superset-on-heroku
原文始发于微信公众号(alitrack):Apache Superset免费上云: 一键部署到Heroku
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/62818.html