一:配置服务器环境
1.安装python3
注意:centos和ubuntu安装python3之前都需要安装依赖
安装完成后需要对python3建立软链接,或者写入环境变量。
以centos为例子:
1) 安装依赖
yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum install libffi-devel -y
2) 解压安装
解压下载好的安装包
tar -xvJf python-------.tar.xz
mkdir /usr/local/python3 #创建编译安装目录
cd python------
配置安装目录和安装
./configure --prefix=/usr/local/python3
make && make install
3) 创建软连接
ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3
4)更新pip 和 setuptools包
pip3 install --upgrade setuptools
系统不一样更新命名有差别,如果是最新的就不用更新了。
参考自 https://www.cnblogs.com/anxminise/p/9650206.html
2, 安装nodejs
从官网下载nodejs,每个平台的安装方法不一样。
Centos,下载nodejs版本为v12.18.2,对应的npm版本为6.14.5
下载node-v12.18.2-linux-x64.tar.xz版本的nodejs,其他版本也可以,但是别太旧
tar -xvf node-v12.18.2-linux-x64.tar.xz
解压即可,不用安装。重命名放到某个目录下(usr/local/node)
创建软连接
ln -s /usr/local/node/bin/node /usr/bin/node
ln -s /usr/local/node/bin/npm /usr/bin/npm
执行node -v, npm -v 可以显示版本号即可。
(注意:
1,出现过没有权限的错误,cd到/usr/local/node/bin目录下,执行 sudo chmod +rx node和sudo chmod +rx npm
2, Nodejs版本不可以太低,要不然后面会出问题)
参考自 https://www.jianshu.com/p/ea0fe8d177c0
3. 下载superset
从github上下载apache-superset0.36.0版本的superset
二. 安装步骤
1,配置虚拟环境
先配置python3的环境,然后用 pip3 install virtualenv
安装虚拟环境模块
centos系统需要为virtualenv创建软连接。
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv #创建软连接
2,创建虚拟环境
创建superset目录,在superset目录下创建虚拟环境
virtualenv env
把下载的superset0.36.0源码(文件夹名为incubator-superset)拷贝到superset目录下。
3,激活虚拟环境和更新包
在superset目录下的终端执行
source /env/bin/activate
以下步骤皆在env虚拟环境下执行,执行命令时前面有(env)的标识就是在虚拟环境中执行的。
更新env环境中的pip 和 setuptools包。
python -m pip install -U pip setuptools
4,安装扩展依赖,及开发依赖
指定豆瓣源,原始源很慢,在安装requirements-dev.txt之前需要把文本中mypy和psycopg2-binary模块的版本号去掉,要不然会报错。
#进入到目录
cd incubator-superset
pip install -r requirements.txt -i https://pypi.douban.com/simple/
安装开发依赖
pip install -r requirements-dev.txt -i https://pypi.douban.com/simple/
#1.psycopg2-binary 模块的版本去掉
#2.typed-ast 模块去掉版本号
5.安装superset
pip install -e .
6. 开始配置superset
# 创建用户并按提示设置密码
superset fab create-admin
# 初始化数据库
superset db upgrade
# 初始化角色和权限
superset init
# 在本机8088端口运行superset
superset run -p 8088
远端运行superset时,要写上主机host的iP地址。最后一步改成
superset run -h host -p 8088
#或者
superset run -h 0.0.0.0 -p 8088
#在后台启动,输出重新定向到a.txt
superset run -h 0.0.0.0 -p 8088 &>> a.txt &
#后面一个&在后台启动服务
#&>> a.txt 输出重定向到当前目录的a.txt
#不挂起后台启动,不会自动中断服务。
nohup superset run -h 0.0.0.0 -p 8088 > output.txt 2>&1 &
到这里,superset的后端编译,和配置设置都已经结束。
7.前端组件的编译
# 进入到目录superset-frontend下
cd superset-frontend
npm install -d #没有报红色的错误即可
# 这里有时候可能会用到强制安装命令
npm install --no-optional --no-shrinkwrap --no-package-lock
npm run build
npm run dev #这步执行结束后不会结束,是一个监听界面,可以ctrl+c结束也没有影响。
npm run build
这一步会报很多错误,每个系统都不太一样。
npm insatll 安装失败可以尝试换npm的源
npm install -g cnpm --registry=https://registry.npm.taobao.org
#为cnpm建立软连接
ln -s /usr/local/node/bin/cnpm /usr/bin/cnpm
就这一步报错的总结:
-
首先检测nodejs和npm的版本,太低就要更新。
-
centos系统出现的报错。
# 一:模块报错
Cannot find module '@babel/compat-data/corejs3-shipped-proposals
#解决办法
npm install @babel/compat-data #在superset-frontend下执行
#二:内存溢出的错误
#修改webpack.config.js文件。
#在performance中添加字段,大约在177行
hints:'warning',
maxEntrypointSize: 50000000,
maxAssetSize: 30000000,
- ubuntu系统的报错。
# 一:@babel/plugin-proposal-private-methods和@babel/plugin-proposal-class-properties的loose值不一致。
#修改.../incubator-superset-0.36.0/superset-frontend/babel.config.js,添加两行,将loose都设置为true. 43——50行
plugins: [
'lodash',
'@babel/plugin-syntax-dynamic-import',
//'@babel/plugin-proposal-class-properties', //这行需注释掉。
'@babel/plugin-proposal-optional-chaining',
['@babel/plugin-transform-runtime', { corejs: 3 }],
'react-hot-loader/babel',
['@babel/plugin-proposal-private-methods', { 'loose': true }],//新增的,将loose设为true
['@babel/plugin-proposal-class-properties', { 'loose': true }],//新增的,将loose设为true
],
# 二: Property 'hidden' does not exist on type 'ColumnInstance<{}>'.
# 修改TableCollection.tsx文件 位于superset-frontend/src/components/ListView
#修改44行,修改前
{headerGroup.headers.map(column =>
#修改后
{headerGroup.headers.map((column:any) =>
#修改82行,修改前
{row.cells.map(cell:any => {
#修改后
{row.cells.map((cell:any) => {
这里只是列举出来了一些错误,可能会有其他错误,根据报错信息修改即可。
另外:需要在环境中安装mysqlclient包,censtos系统安装会报错。
需要安装依赖。
yum install python3
yum install mariadb-devel
#最后在安装mysqlclient即可
pip install mysqlclient
参考自:
https://blog.csdn.net/weixin_42036641/article/details/106479093
https://blog.csdn.net/yun_hou/article/details/87818475
到这里superset前端组件也编译完成。可以正常启动superset。
后面的集成echarts,二次开发只需要修改对应的源码组件,然后用npm编译即可。