Hue 4.11.0 基于 Python 3.9.9 编译
编译环境说明Python 版本3.9.9Hue 版本4.11.0系统环境OpenEuler 21.10一、下载 Hue 源码包首先需要获取 Hue 4.11.0 的源码包你可以通过以下两种方式下载官方下载访问Hue 官方下载页https://docs.gethue.com/releases/release-notes-4.11.0下载对应版本源码包。wget 命令直接下载推荐# 可根据实际需求替换下载路径此处示例下载到/opt目录 wget https://cdn.gethue.com/downloads/hue-4.11.0.tgz -P /opt # 解压源码包 tar -zxvf /opt/hue-4.11.0.tgz -C /opt/ # 进入Hue根目录后续操作均基于此目录下文用${HUE_ROOT}表示 export HUE_ROOT/opt/hue-4.11.0 cd ${HUE_ROOT}二、安装系统级依赖包Hue 编译需要依赖多个系统库和工具使用 YUM 一次性安装sudo yum install -y ant asciidoc cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-plain gcc gcc-c krb5-devel libffi-devel libxml2-devel libxslt-devel make mysql mysql-devel openldap-devel python3-devel sqlite-devel gmp-devel说明-y参数用于自动确认安装避免手动交互提升部署效率。三、安装 Node.js 和 npm版本要求Node≥20.xnpm≥10.xHue 的前端编译依赖 Node.js 和 npm需根据服务器架构选择对应安装包1. x86_64 架构# 下载Node.js 20.x最新版 wget https://nodejs.org/dist/latest-v20.x/node-v20.19.6-linux-x64.tar.xz # 解压 tar -xvf node-v20.19.6-linux-x64.tar.xz # 移动到指定目录统一管理 sudo mv node-v20.19.6-linux-x64 /usr/local/lib/node_modules/node2. ARM 架构# 下载Node.js 20.x最新版 wget https://nodejs.org/dist/latest-v20.x/node-v20.19.6-linux-arm64.tar.gz # 解压 tar -xvf node-v20.19.6-linux-arm64.tar.gz # 移动到指定目录 sudo mv node-v20.19.6-linux-arm64 /usr/local/lib/node_modules/node3. 创建软链接将 node 和 npm 加入系统环境变量sudo ln -s /usr/local/lib/node_modules/node/bin/node /usr/bin/node sudo ln -s /usr/local/lib/node_modules/node/bin/npm /usr/bin/npm4. 验证安装结果# 查看npm版本应≥10.x npm -v # 查看node版本应≥20.x node -v示例输出npm -v → 10.2.4node -v → v20.19.6四、搭建 Python 虚拟环境并配置编译依赖为了隔离 Python 环境避免系统依赖冲突我们使用 Python 3.9 创建虚拟环境并安装所需的 Python 包。1. 清理残留的虚拟环境sudo rm -rf ${HUE_ROOT}/build/env2. 创建 Python 3.9 虚拟环境# 确保系统已安装python3.9若未安装需先安装如yum install python39-devel sudo /usr/bin/python3.9 -m venv ${HUE_ROOT}/build/env3. 激活虚拟环境并验证source ${HUE_ROOT}/build/env/bin/activate # 验证Python版本应输出3.9.x python --version # 验证pip路径应指向虚拟环境的pip pip --version4. 创建 stamp 文件解决 Hue 编译时的环境检测问题sudo touch ${HUE_ROOT}/build/env/stamp5. 安装 Python 依赖包步骤 1在 ${HUE_ROOT} 目录下创建requirements.txt文件写入以下内容apache-ranger0.0.3 requests-gssapi1.2.3 asn1crypto0.24.0 avro-python31.8.2 Babel2.9.1 celery[redis]5.2.3 cffi1.15.0 channels3.0.3 channels-redis3.2.0 configobj5.0.6 django-auth-ldap2.3.0 Django3.2.16 daphne3.0.2 django-celery-beat2.2.1 django-celery-results2.4.0 django-cors-headers3.7.0 django-crequest2018.5.11 django-debug-panel0.8.3 django-debug-toolbar1.11.1 django-extensions3.1.3 django-ipware3.0.2 django-nose1.4.7 django_opentracing1.1.0 django_prometheus1.0.15 django-webpack-loader1.0.0 djangomako1.3.2 djangorestframework-simplejwt5.2.0 djangorestframework3.12.2 future0.18.2 greenlet2.0.1 ipython8.1.1 jaeger-client4.3.0 jdcal1.0.1 kazoo2.8.0 kerberos1.3.0 lockfile0.12.2 Mako1.2.3 Markdown3.1 nose1.3.7 openpyxl3.0.9 phoenixdb1.2.1 prompt-toolkit2.0.10 protobuf3.20.3 pyformance0.3.2 pylint2.6.0 pylint-django2.3.0 pytest6.0.2 pytest-django3.10.0 python-dateutil2.8.2 python-daemon2.2.4 python-ldap3.1.0 python-oauth21.1.0 python-pam2.0.2 pytidylib0.3.2 pytz2021.3 PyJWT2.4.0 PyYAML5.4.1 requests-kerberos0.12.0 rsa4.7 sasl0.3.1 slack-sdk3.2.0 SQLAlchemy1.3.8 sqlparse0.4.2 tablib0.13.0 tabulate0.8.9 thrift0.16.0 thrift-sasl0.4.3 werkzeug2.0.1 django-utils-six2.0 six1.16.0 boto2.49.0 django_babel django-axes pandas2.1.4 lxml4.9.3 eventlet0.30.2 gunicorn20.1.0 mysqlclient2.0.3步骤 2使用 pip 批量安装添加阿里云源加速解决国内下载慢的问题pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ # 升级djangorestframework按需执行 pip install --upgrade djangorestframework -i https://mirrors.aliyun.com/pypi/simple/6. 修复 Bootstrap 源映射文件缺失问题# 下载Bootstrap 3.3.7的源映射文件 wget https://cdn.jsdelivr.net/npm/bootstrap3.3.7/dist/css/bootstrap.min.css.map # 复制到指定目录 sudo cp bootstrap.min.css.map ${HUE_ROOT}/build/env/lib/python3.9/site-packages/rest_framework/static/rest_framework/css/7. 修改 CSRF 信任源配置解决跨域 CSRF 验证失败问题编辑${HUE_ROOT}/desktop/core/src/desktop/settings.py文件找到对应位置添加 / 修改以下代码if TRUSTED_ORIGINS: # 为每个信任源添加http/https协议前缀若已有则不重复添加 CSRF_TRUSTED_ORIGINS [] for origin in TRUSTED_ORIGINS: if not origin.startswith((http://, https://)): # 测试环境可改为http://生产环境建议使用https:// origin fhttps://{origin} CSRF_TRUSTED_ORIGINS.append(origin)8. 禁用metrics中间件sed -i /desktop.middleware.MetricsMiddleware/s/^/# / desktop/core/src/desktop/settings.py9. 退出虚拟环境deactivate五、执行 Hue 编译设置编译环境变量执行 make 编译命令# 解决Node.js 17的OpenSSL兼容性问题 export NODE_OPTIONS--openssl-legacy-provider # 指定Python版本 export PYTHON_VERpython3.9 # 指定Hue根路径与前文保持一致 export ROOT${HUE_ROOT} # 进入Hue根目录 cd ${HUE_ROOT} # 执行编译apps参数表示编译所有应用 make apps编译说明编译过程可能需要 5-10 分钟取决于服务器性能若出现报错可检查依赖是否安装完整。六、编译成功验证编译完成后可通过以下命令验证# 启动Hue测试默认端口8888 ${HUE_ROOT}/build/env/bin/supervisor -u root ${HUE_ROOT}/bin/hue runserver 0.0.0.0:8888访问http://服务器IP:8888若能看到 Hue 的登录界面说明编译成功。