我们目前使用的是nginx1.20.2和openssl-1.0.2k。其中查看服务器上openssl的脚本名利是:openssl version -v/-a
一:需要的包
1:nginx-1.25.1.tar.gz
2:openssl-1.1.1u.tar.gz
二:升级操作
1:检查当前nginx版本
/usr/local/nginx/sbin/nginx -v
2:备份旧版本nginx
cp /usr/local/nginx/ /apps/svrt/back/nginx.bak -R
3:上传更新文件到服务器上
ls(查看上传的文件。)
4:编译安装openssl
- :解压: tar -zxvf openssl-1.1.1u.tar.gz
- :进入目录:cd openssl-1.1.1u
- :准备新目录:mkdir /usr/local/openssl
- :编译配置检查指定预安装路径:./config --prefix=/usr/local/openssl
- :编译:make
- :安装:make install
- :查看版本:/usr/local/openssl/bin/openssl version -v/-a
这个时候可能会出现错误找不到libssl.so.1.1 和libcrypto.so.1.1
执行如下命令:
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
- :查看版本:/usr/local/openssl/bin/openssl version -v/-a
这时候是成功的。但是需要全局配置
- :全局配置
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
如果显示已经存在/usr/bin/openssl,则只需要备份下
mv /usr/bin/openssl /usr/bin/opensslb
再次执行
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
- :查看版本:openssl version -v/-a
5:安装最新nginx
- :解压:tar -zxvf nginx-1.25.1.tar.gz
- :进入nginx: cd nginx-1.25.1
- :需要修改/nginx-1.25.1目录下的/auto/lib/openssl/conf的openssl目录
修改前:
CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
CORE_LIBS="$CORE_LIBS $NGX_LIBDL"
CORE_LIBS="$CORE_LIBS $NGX_LIBPTHREAD"
修改后:
CORE_INCS="$CORE_INCS $OPENSSL/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"
CORE_LIBS="$CORE_LIBS $NGX_LIBDL"
CORE_LIBS="$CORE_LIBS $NGX_LIBPTHREAD"
- :配置文件检查: ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream --with-openssl=/usr/local/openssl/
- :编译:make
- :停止nginx拷贝,否则文件会被占用:systemctl stop nginx
- :拷贝objs中nginx到旧版本nginx位置:cp /nginx-1.25.1/objs/nginx /usr/local/nginx/sbin/nginx 要覆盖原来的。
- :开启nginx: systemctl start nginx
- :检查nginx : systemctl status nginx
- :使用make upgrade 平滑更新: make upgrade
- :重启并检查状态:systemctl restart nginx && systemctl status nginx
- :查看nginx版本是否更新成功:/usr/local/nginx/sbin/nginx -v
三:回退操作
1:openssl 回退操作
在/usr/bin目录下
rm -rf ./openssl
把备份的opensslb改成openssl
mv opensslb openssl
2:nginx回退操作
先在/usr/local/nginx/sbin/中执行cp nginx nginxb
然后将备份文件的nginx复制过来。
cp /apps/vart/back/nginx.bak/sbin/nginx /usr/local/nginx/sbin/
覆盖原来的,然后重新nginx即可。