一、下载源码
git clone https://github.com/apache/superset.git
二、安装虚拟环境
cd superset
构建虚拟环境:
python3 -m venv venv;
source venv/bin/activate
deactivate
构建虚拟环境:
python3 -m pip install -r requirements/development.txt -i https://pypi.tuna.tsinghua.edu.cn/simple;
(总有一些包跟你的python版本冲突, 要修个一些requirements/development.txt 的版本指定)
pip install mysqlclient
ps: 碰到mysqlclient无法安装问题, 使用如下方法
参考:mac上python安装mysqlclient模块方法-天翼云
brew install mysql
#安装 mysqlclient 之前,先安装 openssl:
brew install openssl
#使用以下命令来安装 mysqlclient:
env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip install mysqlclient
三、前端依赖准备:
31.前置依赖:安装node npm
// 安装 sudo npm install -g n // 切换指定版本 sudo n latest sudo n stable sudo n lts
四、安装supperset
前置依赖:
安装:元数据DB
createdb -h localhost -p 5432 -U phoenix -E UTF-8 superset_db; GRANT ALL PRIVILEGES ON DATABASE superset_db TO phoenix;
安装:样例数据DB
createdb -h localhost -p 5432 -U phoenix -E UTF-8 superset_examples_db; GRANT ALL PRIVILEGES ON DATABASE superset_examples_db TO phoenix;
安装:Redis服务器
Mac安装Redis,原来就是这么简单_mac redis-优快云博客
安装主流程:
进入:cd superset
运行:make install
背后运行脚步:/Users/phoenix/superset/Makefile
配置:superset_config.py
配置 缓存服务器redis
REDIS_HOST = os.getenv("REDIS_HOST", "localhost") # 注意修改这个, 指向你的服务器 REDIS_PORT = os.getenv("REDIS_PORT", "6379") REDIS_CELERY_DB = os.getenv("REDIS_CELERY_DB", "0") REDIS_RESULTS_DB = os.getenv("REDIS_RESULTS_DB", "1")
配置元数据库和样例数据库:
先修改config.py 中的:SQLALCHEMY_DATABASE_URI
SQLALCHEMY_DATABASE_URI = 'postgresql://phoenix:123456@localhost:5432/superset_db'
在修改superset_config.py中的:
DATABASE_PORT=5432
DATABASE_DIALECT='postgresql'
POSTGRES_DB='superset_db'
POSTGRES_USER='phoneix'
POSTGRES_PASSWORD='123456'
#重点是下面者两个:
SQLALCHEMY_DATABASE_URI = 'postgresql://phoenix:123456@localhost:5432/superset_db'
SQLALCHEMY_EXAMPLES_URI = 'postgresql://phoenix:123456@localhost:5432/superset_examples_db'
安装过程中的问题:
问题1: python pip 未升级
解决方案: 根据提示升级pip, 修改requirements的版本号, 解决版本冲突问题。
问题2、Refusing to start due to insecure SECRET_KEY
解决方案:参考【superset安装】史上最全superset安装过程中错误解决方案_usage: superset [options] command [args]... try 's-优快云博客
环境变量问题:
1、安装过程系统会生成配置文件:superset_config.py(用户自定义), 改文件会覆盖掉config.py中相同的部分, 两个文件路径如下:
/Users/phoenix/superset/docker/pythonpath_dev/superset_config.py
/Users/phoenix/superset/superset/config.py
2、但是安装脚步不会修改MAC的环境变量, 需要自行单独修改:
sudo open -e /etc/profile;
添加一行:export SUPERSET_CONFIG_PATH=/Users/phoenix/superset/docker/pythonpath_dev/superset_config.py;
问题三:前端登陆用户和密码设置:
make install 会自动设置用户名, 在这个文件中定义的:/Users/phoenix/superset/Makefile
superset fab create-admin \
--username admin \
--firstname "Admin I."\
--lastname Strator \
--email admin@superset.io \
--password general
问题四:superset load-examples 报错
防火墙问题, 从git拉样例数据报错, 多拉几次就好
p.s: 安装过程中的问题:
1、Refusing to start due to insecure SECRET_KEY
export SUPERSET_CONFIG_PATH=/Users/phoenix/superset/docker/pythonpath_dev/superset_config.py
参考:
superset 源码的 IDE 调试_superset修改源码后如何重新编译运行-优快云博客
【superset安装】史上最全superset安装过程中错误解决方案_usage: superset [options] command [args]... try 's-优快云博客
Superset配置_superset config-优快云博客
问题五:跨域访问+iframe嵌套问题
设置config.py文件
WTF_CSRF_ENABLED = False # 解决跨域 # PUBLIC_ROLE_LIKE: Optional[str] = "Gamma" AUTH_USER_REGISTRATION = True AUTH_USER_REGISTRATION_ROLE = 'Public'
TALISMAN_ENABLED = utils.cast_to_boolean(os.environ.get("TALISMAN_ENABLED", False))
DEFAULT_HTTP_HEADERS: dict[str, Any] = {'X-Frame-Options': 'ALLOWALL',} OVERRIDE_HTTP_HEADERS: dict[str, Any] = {'X-Frame-Options': 'ALLOWALL',} HTTP_HEADERS: dict[str, Any] = {'X-Frame-Options': 'ALLOWALL',} WTF_CSRF_ENABLED = False
PUBLIC_ROLE_LIKE = "Gamma" PUBLIC_ROLE_LIKE_GAMMA = True
执行:superset init;
五、启动superset命令:
在ID启动:
superset run -p 8080 --with-threads --reload --debugger;
在命令行启动:
cd superset
source venv/bin/activate
source /etc/profile;
superset run -p 8088 --with-threads --reload --debugger;
六、datahub 连接 superset
source:
type: superset
config:
connect_uri: 'http://host.docker.internal:8088'
username: admin
password: general
provider: db
# 这个方式是在superset的config.py配置文件中定义的:
AUTH_TYPE = AUTH_DB