分析宝塔在Arm盒子上的安装过程,编译调试依赖包,将宝塔面板安装速度从100+分钟降低到5分钟
5分钟在ARM盒子上安装完宝塔面板,不得不说的秘密?
各种ARM电视盒子刷了Linux/Ubuntu/Centos/Debian/UOS是真香,盒子大部分有1-4G的RAM,尤其是4G版本的,跑起数据库和PHP也是很香,LNMP更是顺畅.
在Linux系统上安装LNMP最简单直接的方法是用宝塔面板来一键安装.
但是在ARM盒子上安装宝塔面板简直慢的要命,宝塔面板本身就需要1个多小时,再安装LNMP往往需要几个小时,实在是慢的惊人.
进入正文前,循例先肝效果,干货放前面
- 5分钟内在Arm64盒子的Linux系统上安装完成宝塔面板
- LNMP安装加速30%以上
- 安装脚本是官网下载
宝塔安装在Arm上为什么这么慢
经过调试、跟踪宝塔面板的安装过程,下图是宝塔安装的基本步骤
安装python 3.7
这一步并不是通过apt-get或者dnf来安装,安装脚本会自动到宝塔的服务器上去下载python3.7对应的编译好的包,
如果没有就下载源代码,重新编译整个python 。
很不幸的是宝塔面板并没有aarch64的预编译包,因此每次安装都会重新编译整个python.
安装python libs
这一步是pip install 一些依赖库,有些库实在是编译的巨慢,而且pip install多线程貌似还不能用
编译依赖包
宝塔面板为了更加简单、方便、可靠,很多包是自行重新编译的,如curl/openssl等等。
Arm64还是前妻的孩子,服务器上没有对应的预编译包,对应的包都需要完全重新编译,这个也是漫长的过程。
对于LNMP依赖的每个具体组件,如Nginx其安装的基本步骤
可以看到耗时的是编译依赖包和组件本身
加速包的实现
针对宝塔面板的安装实现,使用如下直接方式来加速其安装:
- 打包保存预编译的python3.7,安装时直接解压使用,类比其从服务器下载
- 提取保存pip libs的whl文件,安装时直接安装耗时的whl文件
- 将依赖包编译成.deb包,安装时直接apt-get install方式直接使用
- 将每个组件的常见依赖包编译成.deb包,安装时直接使用以加速LNMP等各种组件
针对每个组件本身的编译,如nginx,目前尚未做优化,其安装脚本实现较为零散,以待后续持续优化。
其中目前编译好的deb包如下
包 | 版本 | 安装路径 | 库 |
---|---|---|---|
curl7.74 | 7.74 | /usr/local/curl_2 | /usr/local/curl_2/lib |
curl7.70 | 7.70 | /usr/local/curl | /usr/local/curl/lib |
openssl102 | 1.0.2 | /usr/local/openssl | /usr/local/openssl/lib |
openssl111 | 1.1.1 | /usr/local/openssl111 | /usr/local/openssl111/lib |
lua5.1 | 5.1.5 | /usr/local/ | /usr/local/lib |
luajit | 2.1 | /usr/local/ | /usr/local/lib |
luasocket | 2.5.8 | /usr/local/ | /usr/local/lib |
lua-cjson | 2.1 | /usr/local/ | /usr/local/lib |
freetype | 2.9.1 | /usr/local/freetype | /usr/local/freetype/lib |
icu4c | 60.3 | /usr/local/icu/ | /usr/local/icu/lib |
libiconv | 1.14 | /usr/local/libiconv/ | /usr/local/libiconv/lib |
onig | 6.9.6 | /usr/local/onig | /usr/local/onig/lib |
rpcsvc-proto | 1.4 | /usr/local/rpcgen | /usr/local/rpcgen/lib |
mhash | 0.9.9 | /usr/local/ | /usr/local/lib |
mcrypt | 2.5.8 | /usr/local/ | /usr/local/lib |
libsodium | 1.0.18 | /usr/local/libsodium/ | /usr/local/libsodium//lib |
libmcrypt | 2.5.8 | /usr/local/ | /usr/local/lib |
加速包的效果
通过这些预编译的包,整个安装过程得到极大加速
- 5分钟内在Arm64盒子的Linux系统上安装完成宝塔面板
- LNMP安装加速30%以上
加速包的使用
git clone https://gitee.com/pdusb/pdusb-fast-btpanel.git .
su -
./pdbolt-inst-bt-acel.sh
bash /tmp/btp/pdbolt-bt-install/install.sh
几分钟后,宝塔安装完成!!!
加速包的获取
两个途径哦,一个是网盘
链接: https://pan.baidu.com/s/1pGLi-EP0wWJeh4OgKWVc7g
提取码: 395h
另外一个是gitee下载
git clone https://gitee.com/pdusb/pdusb-fast-btpanel.git