信创麒麟v10 nginx在线丝滑升级

638 阅读3分钟

背景说明

准备工作

查看os的版本

aarch架构 版本kyV10(SP1)

nkvers 麒麟专属命令

image.png

获取nginx源码

坑点说明

  • nginx源码选择

鉴于ky10是信创产物,在不同的os版本下nginx采用官方源码编译升级是可以的,但是有些又是不行,所以推荐采用nginx兼容版本来升级。

  • ky10在线库升级

ky10的repo一定要先备份,备份之后才能进行配置文件变动,不然砖头机的幸福就会到来,切记切记

  • 老的nginx平滑升级

nginx原先就已经是存在了,除了必要的备份之外,我们还需要在编译源码之前,必须要查看老版本提前配置了那些配置文件参与编译,为啥需要这步呢?最主要是不想要二次编译,二次返工,重复工作,避免影响到生产nginx,比如https,hls等模块应用

实操

下载nginx

本质上最好是采用官网源码进行编译升级,但是实际上采用官网源码编译的话,会出现大量no found问题,不同kyV10的分支都有不同,因为笔者有几套系统都是kyV10,采用官网源码编译很丝滑,实话实说,就这个sp1有点诡异,花了很多时间在源码源下载上,轻踩信创哈哈哈,希望越来越好,越来越兼容

image.png

备份老nginx并停机

    cp -rf /usr/local/nginx /usr/local/nginx1.19.1
    ps -ef |grep nginx
    kill -15 pid

image.png

新nginx编译升级

这里有个需要注意的就是传统的configure不是在一级目录下,而是藏在auto里面,更狗的来了,configure源码里面,依赖是在一级目录下开始查找

image.png

image.png

  • 依赖安装

依赖不能在线拉取的话,建议查看我之前文章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   

image.png

  • 本地测试一下
  curl http://localhost:{端口}/     

image.png

老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/

效果

升级前

企业微信截图_17142889975822.png

升级后

image.png

参考内容