二次开发环境搭建 (V1.3.0)
目的
- 用 mac 搭建superset v1.3.0的前后端二次开发环境。
- superset 后台是个flask web app. 前端是react项目。,
- 开发环境是热更新,需要同时启动两个服务。一个是服务端的服务 ,一个是前端的打包服务,修改前端的代码时,前端的代码会实时的打包更新到 superset/static/assets 文件夹下,服务端根据这个文件夹内的文件对前端的页面进行渲染。
过程:
1. 先下载源码
git clone https://github.com/apache/superset.git
2. 再安装Python环境
安装linux包依赖
sudo yum install gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel cyrus-sasl-devel openldap-devel
安装 python 3.7.9
安装python3.7.9-自己总结(superset自己推荐使用3.7.9)
然后搞一个虚拟python环境用 (以下所有操作都是在此虚拟环境)
cd /superset/
virtualenv venv
source venv/bin/activate
准备环境变量
xcode-select --install
brew install readline pkg-config libffi openssl mysql postgres
pip install --upgrade setuptools pip
export LDFLAGS="-L$(brew --prefix openssl)/lib"
export CFLAGS="-I$(brew --prefix openssl)/include"
export CFLAGS=-stdlib=libc++
pip install -e . # 安装 superset 开发者模式
如果安装 python-geohash 遇到 ld: library not found for -lstdc++ 的问题, 先确保安装gcc 7, brew info gcc@7, 然后多引入一个变量export CFLAGS=-stdlib=libc++
3. 再安装npm node
brew install node
4. 初始化superset配置
superset db upgrade # 默认是sqlite, 同步数据库数据
superset fab create-admin # 创建admin用户
superset load_examples #下载 superset 案例,需要安全上网, 可选
superset init # 初始化
启动 superset server
superset run -p 3000 --with-threads --reload --debugger
这时访问地址,会发现没有样式资源。
5. 最后配置前端
安装前端项目依赖
cd superset-frontend
npm install
运行前端项目
npm run dev
6. 打开网页 enjoy
image.png
其他问题
1. 想使用mysql作为系统数据库?
先装依赖包
pip install mysqlclient
在superset/config.py中,修改数据库配置:
# The SQLAlchemy connection string.
# SQLALCHEMY_DATABASE_URI = "sqlite:///" + os.path.join(DATA_DIR, "superset.db")
SQLALCHEMY_DATABASE_URI='mysql://root:123456@localhost:3306/superset_db?charset=UTF8'
2. 想debug后台flask?
第一种是在Pycharm中直接启动flask
第二中是在vscode中命令行启动如下:
export FLASK_APP = superset/__init__.py
export FLASK_ENV = development
export FLASK_DEBUG = 1
flask run
2. 想debug前端?
flask run启动后台,默认端口为5000
修改 superset/webpack.proxy-config.js 中的 supersetPort 为 5000,
然后 npm run dev-server
访问 http://localhost:9000