关于一次升级Nginx时遇到的问题及解决
2022/9/15 5:18:31
本文主要是介绍关于一次升级Nginx时遇到的问题及解决,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
问题描述
因需求,需升级xxx.xxx.xxx.126服务器中的Nginx。
可行的操作包括:
- 使用可信的第三方RPM包更新Nginx
- 使用官方提供的Nginx源码进行编译并安装
很不幸,个人选择的是第二种方法。
在使用源码包中的configure检查环境时,发现该本地服务器中并无GCC等C语言编译器,遂尝试RPM安装GCC及其依赖。
在使用rpm命令,后缀--force --nodeps
参数升级Glibc至2.28后,执行rpm命令与yum命令均报'GLIBC_2.14 not found'
。
因缺少C编译器,无法通过编译旧版本Glibc源码回滚;又因rpm命令和yum命令均依赖Glibc而无法执行,问题严重了起来……
处理Glibc升级崩溃导致的报错'GLIBC_2.14 not found'
根据报错
rpm: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /lib64/libgcc_s.so.1)
可考虑大约是动态链接库方面存在问题,但只根据一台设备无法精确定位问题,故参考了相近配置的另一台服务器xxx.xxx.xxx.125,查询得差别如下:
xxx.xxx.xxx.126的相关信息
[root@**** lib64]# ls -la | grep libgcc -rwxr-xr-x 1 root root 93224 4月 30 2012 libgcc_s-4.4.6-20120305.so.1 -rwxr-xr-x 1 root root 99672 11月 13 02:32 libgcc_s-8-20210514.so.1 lrwxrwxrwx 1 root root 24 1月 29 19:11 libgcc_s.so.1 -> libgcc_s-8-20210514.so.1
xxx.xxx.xxx.125的相关信息
[root@**** lib64]# ls -la | grep libgcc -rwxr-xr-x. 1 root root 93320 Nov 22 2013 libgcc_s-4.4.7-20120601.so.1 lrwxrwxrwx. 1 root root 28 Feb 6 2018 libgcc_s.so.1 -> libgcc_s-4.4.7-20120601.so.1
观察得libgcc_s.so.1软链的目标有异。好在mv、cp等命令仍可正常使用,尝试备份原so文件后,将libgcc_s.so.1重链至libgcc_s-4.4.6-20120305.so.1。
经测试,重链后各命令均可正常调用。故判定故障原因为:在升级Glibc时中途崩溃,导致软链已被修改但指向的地址内文件不完整、无法正常调用。
升级Nginx
使用rpm包升级相近版本的Nginx
自nginx官方镜像仓库http://nginx.org/packages
下载适用于 Red Hat 6 的版本相近的升级包,即文件夹中的 nginx-1.18.0-2.el6.ngx.x86_64.rpm。
使用如下命令安装该包。
rpm -hiv nginx-1.18.0-2.el6.ngx.x86_64.rpm
得到反馈:
warning: nginx-1.18.0-2.el6.ngx.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY Preparing... ########################################### [100%] getent: relocation error: getent: symbol __libc_dynarray_resize, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference getent: relocation error: getent: symbol __libc_dynarray_resize, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference 1:nginx ########################################### [100%] ---------------------------------------------------------------------- Thanks for using nginx! Please find the official documentation for nginx here: * http://nginx.org/en/docs/ Please subscribe to nginx-announce mailing list to get the most important news about nginx: * http://nginx.org/en/support.html Commercial subscriptions for nginx are available on: * http://nginx.com/products/ ----------------------------------------------------------------------
使用以下命令确认已升级至该版本。
nginx -v
修改引用参数并重启应用
在调用了Nginx服务的配置文件中可见:
home='pwd' sbin/nginx -c ****/nginx.conf -p $home
将其引用的nginx路径修改为新版本所在的路径,仍旧引用之前的配置文件,即:
home='pwd' nginx -c ****/nginx.conf -p $home
重启应用,见Nginx版本已更新。
后记
参考文章
https://blog.51cto.com/meiling/3937697 —— CentOS下安装nginx rpm包
https://blog.csdn.net/ex_xyz/article/details/116199551 —— nginx启动和配置
对以上文章的作者致以感谢。
感想
为什么这台Red Hat 6里没有GCC!?- 尽量不要
--force --nodeps
(即--强制安装 --不检查依赖
),否则后果无法估计。 - 尽量别升级Glibc等底层库。
这篇关于关于一次升级Nginx时遇到的问题及解决的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-13用Nginx防范DDoS攻击的那些事儿
- 2024-12-13用Terraform在AWS上搭建简单NGINX服务器指南
- 2024-10-29Nginx发布学习:从入门到实践的简单教程
- 2024-10-28Nginx发布:新手入门教程
- 2024-10-21nginx 怎么设置文件上传最大20M限制-icode9专业技术文章分享
- 2024-10-17关闭 nginx的命令是什么?-icode9专业技术文章分享
- 2024-09-17Nginx实用篇:实现负载均衡、限流与动静分离
- 2024-08-21宝塔nginx新增8022端口方法步骤-icode9专业技术文章分享
- 2024-08-21nginx配置,让ws升级为wss访问的方法步骤-icode9专业技术文章分享
- 2024-08-15nginx ws代理配置方法步骤-icode9专业技术文章分享