Apache Superset免费上云: 一键部署到Heroku

前言

有客户提出不想使用 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 项目页面,点

Apache Superset免费上云: 一键部署到Heroku
Deploy

开始部署。

Apache Superset免费上云: 一键部署到Heroku


免费版本,因为资源有限,load_examples 数据需要单独手动执行命令,否则会报错导致部署失败,如果你不需要examples,可以忽略这步,

heroku run bash --app YOURAPPNAME
superset load_examples
superset init

就算如此,仍然会报错,但可以正常运行。

Apache Superset免费上云: 一键部署到Heroku

详细解释

该项目主要有以下几个文件

  • 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

为了方便大家体验,请不要修改密码,谢谢。

参考资料

[1]

GitHub: https://github.com/alitrack/superset-on-heroku


原文始发于微信公众号(alitrack):Apache Superset免费上云: 一键部署到Heroku

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/62818.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!