背景说明
准备工作
查看os的版本
aarch架构 版本kyV10(SP1)
nkvers 麒麟专属命令
获取nginx源码
坑点说明
- nginx源码选择
鉴于ky10是信创产物,在不同的os版本下nginx采用官方源码编译升级是可以的,但是有些又是不行,所以推荐采用nginx兼容版本来升级。
- ky10在线库升级
ky10的repo一定要先备份,备份之后才能进行配置文件变动,不然砖头机的幸福就会到来,切记切记
- 老的nginx平滑升级
nginx原先就已经是存在了,除了必要的备份之外,我们还需要在编译源码之前,必须要查看老版本提前配置了那些配置文件参与编译,为啥需要这步呢?最主要是不想要二次编译,二次返工,重复工作,避免影响到生产nginx,比如https,hls等模块应用
实操
下载nginx
本质上最好是采用官网源码进行编译升级,但是实际上采用官网源码编译的话,会出现大量no found问题,不同kyV10的分支都有不同,因为笔者有几套系统都是kyV10,采用官网源码编译很丝滑,实话实说,就这个sp1有点诡异,花了很多时间在源码源下载上,轻踩信创哈哈哈,希望越来越好,越来越兼容
备份老nginx并停机
cp -rf /usr/local/nginx /usr/local/nginx1.19.1
ps -ef |grep nginx
kill -15 pid
新nginx编译升级
这里有个需要注意的就是传统的configure不是在一级目录下,而是藏在auto里面,更狗的来了,configure源码里面,依赖是在一级目录下开始查找
- 依赖安装
依赖不能在线拉取的话,建议查看我之前文章rpm离线升级(juejin.cn/post/736145…)
yum install gcc gcc-c++ make libtool zlib zlib-devel pcre pcre-devel perl-devel perl-ExtUtils-Embed openssl -y
- 源码包解压
tar -zxvf nginx-release-1.22.0.tar.gz
mv nginx-release-1.22.0 nginx-1.22.0
- 移动configure文件到一级目录下后,开始编译
不移动出来话,就会报错 ./configure: line 10: auto/options: No such file or directory 很多都说压缩包问题,还有说是缺失autoconf 工具,在我这里只需要看源码就好了
cd nginx-1.22.0/auto
mv configure ../
./configure --prefix=/usr/local/nginx-1.22.0 --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module --with-http_perl_module --with-pcre
- 构建makefile
lscpu 查看cpu核数
make -j2 && make install 查看系统核数,来编译
- 重建logs目录文件
mkdir logs
cd logs/
echo "" > access.log
echo "" > error.log
- 启动nginx
cd /usr/local/nginx-1.22.0/sbin/
./nginx
- 本地测试一下
curl http://localhost:{端口}/
老nginx文件迁移
平滑过渡,基本上就是这一步和编译时采用的模块
cp -rf /usr/local/nginx1.19.1/conf/* /usr/local/nginx-1.22.0/conf/
cp -rf /usr/local/nginx1.19.1/html/* /usr/local/nginx-1.22.0/html/