二次開發(fā)環(huán)境搭建 (V1.3.0)
目的
- 用 mac 搭建superset v1.3.0的前后端二次開發(fā)環(huán)境。
- superset 后臺(tái)是個(gè)flask web app. 前端是react項(xiàng)目漆羔。,
- 開發(fā)環(huán)境是熱更新握联,需要同時(shí)啟動(dòng)兩個(gè)服務(wù)铛楣。一個(gè)是服務(wù)端的服務(wù) 铝宵,一個(gè)是前端的打包服務(wù)首懈,修改前端的代碼時(shí)翎冲,前端的代碼會(huì)實(shí)時(shí)的打包更新到 superset/static/assets 文件夾下垂睬,服務(wù)端根據(jù)這個(gè)文件夾內(nèi)的文件對(duì)前端的頁面進(jìn)行渲染。
過程:
1. 先下載源碼
git clone https://github.com/apache/superset.git
2. 再安裝Python環(huán)境
安裝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-自己總結(jié)(superset自己推薦使用3.7.9)
然后搞一個(gè)虛擬python環(huán)境用 (以下所有操作都是在此虛擬環(huán)境)
cd /superset/
virtualenv venv
source venv/bin/activate
準(zhǔn)備環(huán)境變量
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 開發(fā)者模式
如果安裝 python-geohash 遇到 ld: library not found for -lstdc++ 的問題, 先確保安裝gcc 7, brew info gcc@7, 然后多引入一個(gè)變量export CFLAGS=-stdlib=libc++
3. 再安裝npm node
brew install node
4. 初始化superset配置
superset db upgrade # 默認(rèn)是sqlite, 同步數(shù)據(jù)庫數(shù)據(jù)
superset fab create-admin # 創(chuàng)建admin用戶
superset load_examples #下載 superset 案例抗悍,需要安全上網(wǎng)驹饺, 可選
superset init # 初始化
啟動(dòng) superset server
superset run -p 3000 --with-threads --reload --debugger
這時(shí)訪問地址,會(huì)發(fā)現(xiàn)沒有樣式資源缴渊。
5. 最后配置前端
安裝前端項(xiàng)目依賴
cd superset-frontend
npm install
運(yùn)行前端項(xiàng)目
npm run dev
6. 打開網(wǎng)頁 enjoy
其他問題
1. 想使用mysql作為系統(tǒng)數(shù)據(jù)庫赏壹?
先裝依賴包
pip install mysqlclient
在superset/config.py中,修改數(shù)據(jù)庫配置:
# 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后臺(tái)flask衔沼?
第一種是在Pycharm中直接啟動(dòng)flask
第二中是在vscode中命令行啟動(dòng)如下:
export FLASK_APP = superset/__init__.py
export FLASK_ENV = development
export FLASK_DEBUG = 1
flask run
2. 想debug前端蝌借?
flask run啟動(dòng)后臺(tái)昔瞧,默認(rèn)端口為5000
修改 superset/webpack.proxy-config.js 中的 supersetPort 為 5000,
然后 npm run dev-server
訪問 http://localhost:9000