已经很久没折腾建站环境,昨晚不知道为啥想升级一下系统、php 和 nginx,前两者很顺利,最后却卡在了平常最容易升级也是耗时最少的 nginx 升级,怎么折腾都失败,并且费时!
往常都是执行以下代码清理更新 ngx_brotli 和 ngx_cache_purge 代码,然后使用 OneinStack 自带升级脚本升级 nginx 即可:
「OneinStack 升级 nginx-1.25.2 失败折腾记录:https://0xo.net/638」rm -rf /root/oneinstack/src/ngx_* && cd /root/oneinstack/src
wget --no-check-certificate -c -O ngx_cache_purge-2.3.tar.gz https://github.com/FRiCKLE/ngx_cache_purge/archive/2.3.tar.gz && tar xzf ngx_cache_purge-2.3.tar.gz
git clone https://github.com/google/ngx_brotli.git && cd ngx_brotli && git submodule update --init
cd /root/oneinstack/
看了一下错误提示应该与 ngx_brotli 有关,提示如下错误就更新失败:
/bin/ld: cannot find -brotlienc
/bin/ld: cannot find -lbrotlicommon
系统版本:CentOS Linux release 7.9.2009 (Core),这次升级 nginx 编译 OpenSSL 1.1.1v 速度巨慢,一度想放弃,删除 ngx_brotli 再编译……
折腾几次,参考 ngx_brotli 官方安装说明,先把 ngx_brotli 依赖编译好,再使用 OneinStack 自带升级脚本升级 nginx 就好了。
「OneinStack 升级 nginx-1.25.2 失败折腾记录:https://0xo.net/638」下面记录一下折腾过程:
1、升级 cmake(也可以 cmake --version 检查一下版本 3.22 以上应该就可以):
cd /usr/local/src && curl -LO https://github.com/Kitware/CMake/releases/download/v3.22.2/cmake-3.22.2-linux-x86_64.tar.gz && tar -xvf cmake-3.22.2-linux-x86_64.tar.gz && mv cmake-3.22.2-linux-x86_64 /usr/local/cmake
echo 'export PATH="/usr/local/cmake/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
2、清理更新 ngx_brotli 和 ngx_cache_purge 代码:
「OneinStack 升级 nginx-1.25.2 失败折腾记录:https://0xo.net/638」rm -rf /root/oneinstack/src/ngx_* && cd /root/oneinstack/src
wget --no-check-certificate -c -O ngx_cache_purge-2.3.tar.gz https://github.com/FRiCKLE/ngx_cache_purge/archive/2.3.tar.gz && tar xzf ngx_cache_purge-2.3.tar.gz
git clone https://github.com/google/ngx_brotli.git && cd ngx_brotli && git submodule update --init
cd /root/oneinstack/
3、编译 ngx_brotli 依赖:
cd /root/oneinstack/src/ngx_brotli/deps/brotli && mkdir out && cd out
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DCMAKE_C_FLAGS="-Ofast -m64 -march=native -mtune=native -flto -funroll-loops -ffunction-sections -fdata-sections -Wl,--gc-sections" -DCMAKE_CXX_FLAGS="-Ofast -m64 -march=native -mtune=native -flto -funroll-loops -ffunction-sections -fdata-sections -Wl,--gc-sections" -DCMAKE_INSTALL_PREFIX=./installed ..
cmake --build . --config Release --target brotlienc
cd ../../../..
4、下载 nginx 代码(如 1.25.2 版本)并解压,配置:
cd /root/oneinstack/src
wget --no-check-certificate -c http://nginx.org/download/nginx-1.25.2.tar.gz
tar xzf nginx-1.25.2.tar.gz && cd nginx-1.25.2
export CFLAGS="-m64 -march=native -mtune=native -Ofast -flto -funroll-loops -ffunction-sections -fdata-sections -Wl,--gc-sections"
export LDFLAGS="-m64 -Wl,-s -Wl,-Bsymbolic -Wl,--gc-sections"
5、如无意外,这时候再使用 OneinStack 自带升级脚本升级 nginx 就可以了:
「OneinStack 升级 nginx-1.25.2 失败折腾记录:https://0xo.net/638」温馨提示:记得先开启 screen 再执行升级,瓦工 2018 年双十一 2G2C 套餐编译 OpenSSL 1.1.1v 相当费时,RackNerd 劳动节绝版 3C3G 套餐就快一点。
cd /root/oneinstack && ./upgrade.sh
经过 7 个多小时漫长的等待,终于成功升级到 nginx-1.25.2……
应该算是目前折腾历史上耗时最长的一次 nginx 升级:
# nginx -V
nginx version: nginx/1.25.2
built with OpenSSL 1.1.1v 1 Aug 2023
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-openssl=../openssl-1.1.1v --with-pcre=../pcre-8.45 --with-pcre-jit --with-ld-opt=-ljemalloc --add-module=../ngx_brotli --add-module=../ngx_cache_purge-2.3
瓦工老款 VPS 套餐真的老了……
任何服务、机场均有跑路风险,大小机场也没有绝对好坏,请注意甄别防范!!备用节点参考:大哥云官网、万城专线官网、飞机云官网、搬瓦工JMS、极客云官网……解压及网盘密码 1024
Comments:0