(可选)制作独立WAAS Booster RPM
由于某些部署环境不支持网络连接操作,无法安装WAAS Booster所需依赖,因此本节给出不依赖环境的独立RPM包制作过程。

- 制作该RPM包的机器环境需能访问外部网络。
- root用户可直接执行下述命令;普通用户执行本小节的操作时,需要在下述命令前加sudo提高权限。
- 安装软件运行必要依赖。
1
yum install -y python rpm-build cpio
- 下载Miniconda3安装脚本。
- 按默认安装Miniconda3。
sh Miniconda3-py310_25.1.1-2-Linux-aarch64.sh
- 在“/etc/profile”里配置安装好的Miniconda3的二进制路径。
- 打开文件。
vim /etc/profile
- 在文件末尾添加如下内容。
export PATH=$PATH:/root/miniconda3/bin/
- 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存退出文件。
- 使文件生效。
source /etc/profile
- 打开文件。
- 初始化创建好的conda环境。
1
conda init
- 退出当前SSH窗口,再重新连接SSH窗口,确保conda生效。
如果重新进入SSH窗口显示为在base环境中,则需要使用conda deactivate退出base环境,如果不在则无需操作。
- 使用conda创建Python环境,例如环境命名为waasbooster_env。
- 添加conda-forge channel。
conda config --add channels conda-forge
- 使用conda-forge创建python环境。
conda create -n waasbooster_env python=3.9.9 -c conda-forge
- 添加conda-forge channel。
- 查看waasbooster_env环境路径。
1
conda env list
回显如下图所示:
- 执行命令进入指定虚拟环境。
conda activate waasbooster_env
- 新增文件requirements.txt,添加如下内容。
numpy==1.23.4 pandas==2.2.3 prophet==1.1.7
- 执行命令行安装上述依赖。
1
pip3 install -r requirements.txt
- 创建并进入waasbooster rpm编译路径,例如此处路径为“/home/waasbooster_rpm_build”。
- 创建路径。
1
mkdir /home/waasbooster_rpm_build
- 进入路径。
1
cd /home/waasbooster_rpm_build
- 创建路径。
- 拷贝conda环境文件到RPM编译路径。
1
cp -r /root/miniconda3/envs/waasbooster_env/ /home/waasbooster_rpm_build/
- 获取并解压WAAS软件安装包waas-waasbooster.zip。
获取链接请参见操作系统和软件要求。
1
unzip waas-waasbooster.zip
- 拷贝主程序文件夹waasbooster。
1
cp -r waas-waasbooster/src/waasbooster/ /home/waasbooster_rpm_build/
- 修改waasbooster.service文件。
- 打开waasbooster.service文件。
vim /home/waasbooster_rpm_build/waasbooster/waasbooster.service
- 按“i”进入编辑模式,
将
ExecStart=/usr/local/waasbooster/bin/python3 /usr/local/waasbooster/waas_booster.py
修改为
ExecStart=/usr/local/waasbooster/waasbooster_env/bin/python3 /usr/local/waasbooster/waas_booster.py
- 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存退出文件。
- 打开waasbooster.service文件。
- 新增文件,保存指定内容。
root用户可直接执行下述命令;普通用户执行本小节的操作时,需要在下述命令前加sudo提高权限。
- 新增文件build.sh,添加如下内容。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
#!/bin/bash # ******************************************************************************** # # Copyright Huawei Technologies Co., Ltd. 2023-2024. All rights reserved. # File Name: build.sh # Description: 编译构建总调用脚本 # Usage: sh build.sh clean --> 环境清理 # sh build.sh build_debug --> 部署调试环境(需要先安装server并配置WAAS_HOME环境变量) # sh build.sh build_package --> 打包 # ******************************************************************************** # CURRENT_DIR=$(dirname $(readlink -f "$0")) BUILD_DIR=${CURRENT_DIR}/build mkdir -p ${BUILD_DIR} mkdir -p ${CURRENT_DIR}/output function clean() { rm -rf ${BUILD_DIR}/rpmbuild/* rm -rf ${CURRENT_DIR}/build rm -rf ${CURRENT_DIR}/output rm -rf ${CURRENT_DIR}/debug } function build_booster_package() { clean cd ${CURRENT_DIR}/ mkdir -p ${BUILD_DIR}/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} rm -rf build/rpmbuild/BUILDROOT/* cp -rf waasbooster_env ${BUILD_DIR}/rpmbuild/SOURCES build_waas_booster } function build_waas_booster() { mkdir -p ${CURRENT_DIR}/output cp waas_booster.spec ${BUILD_DIR}/rpmbuild/SPECS/ find waasbooster -name '__pycache__' | xargs rm -rf zip -r ${BUILD_DIR}/rpmbuild/SOURCES/waasbooster.zip \ waasbooster/* \ waasbooster_env/* rpmbuild --define "_topdir ${BUILD_DIR}/rpmbuild" -v -ba ${BUILD_DIR}/rpmbuild/SPECS/waas_booster.spec --undefine=py_auto_byte_compile cp ${BUILD_DIR}/rpmbuild/RPMS/aarch64/waasbooster-1.0.0-1.aarch64.rpm ./output/waasbooster-1.0.0-1.aarch64.rpm } main() { item=$1 eval ${item} } main "$@" exit $?
- 新增文件waas_booster.spec,添加如下内容。
%define projectdir /usr/local/waasbooster Name: waasbooster Version: 1.0.0 Release: 1%{?dist} Summary: 负载感知 License: FIXME BuildArch: %{_build_arch} Vendor: Huawei Provides: waasbooster = 1.0.0 %description WaaS Booster是一款在线版容器quota调优工具 %prep unzip %{_sourcedir}/waasbooster.zip %build %install mkdir -p %{buildroot}/usr/lib/systemd/system/ mkdir -p %{buildroot}/usr/bin/ mkdir -p %{buildroot}/%{projectdir} cp %{_builddir}/waasbooster/* %{buildroot}/%{projectdir} install -m 444 waasbooster/waasbooster.service %{buildroot}/usr/lib/systemd/system/waasbooster.service cp -r %{_sourcedir}/waasbooster_env %{buildroot}/usr/local/waasbooster %files %dir %attr(644, waas, waas) %{projectdir} %defattr (0440, waas, waas) %{projectdir}/* %dir %attr(644, waas, waas) %{projectdir} %attr(644, root, root) /usr/lib/systemd/system/waasbooster.service %dir %attr(750, waas, waas) /usr/local/waasbooster/waasbooster_env %{projectdir}/waasbooster_env/* #=======以上是打包过程执行脚本======== #=======以下是安装卸载时执行脚本======== %pre -p /bin/sh getent group waas &> /dev/null || \ groupadd -r waas &> /dev/null getent passwd waas &> /dev/null || \ useradd -r -g waas -d /usr/local/waasbooster -s /sbin/nologin \ -c 'Waas booster' waas &> /dev/null if [ $SUDO_USER ]; then usermod -a -G waas $SUDO_USER elif [ $USER ]; then usermod -a -G waas $USER else usermod -a -G waas `whoami` fi exit 0 %post -p /bin/sh mkdir -p /var/waasbooster chown waas:waas /var/waasbooster chmod 750 /var/waasbooster mkdir -p /var/run/waasbooster_manager systemctl enable waasbooster.service chmod +x /usr/local/waasbooster/waasbooster_env/bin/python3 exit 0 %preun -p /bin/sh exit 0 %postun -p /bin/sh rm -rf /usr/local/waasbooster rm -rf /var/waasbooster rm -rf /var/run/waasbooster_manager exit 0
- 新增文件build.sh,添加如下内容。
- 编译RPM包。
sh build.sh build_booster_package
编译结果输出至编译路径的output文件夹下,此处为“/home/waasbooster_rpm_build/output/”。
- 安装独立RPM包。
- 无需安装WAAS Booster运行环境即可部署运行此安装包。
- 安装此RPM包时请添加--nodeps命令,否则将无法安装运行。
rpm -ivh --nodeps /home/waasbooster_rpm_build/output/waasbooster-1.0.0-1.aarch64.rpm
- (可选)卸载独立RPM包。
rpm -e --nodeps waasbooster
父主题: RPM部署WAAS Booster