linux下nginx升级报错问题怎么解决

发布时间:2019-12-23编辑:脚本学堂
本文介绍了linux下nginx升级时报错的解决方法,由于目前linux操作系统 的版本也比较多,而且分为x86 x64版,对于nginx需要的环境支持文件也不尽相同。

公司有几台点播服务器,用的是nginx+nginx_mod_h264_streaming模块,由于安装的时间不同,所以几台服务器上的nginx版本都不相同,早起装的是nginx1.0.5版本。
而目前nginx都已经升级到mainline1.5.3版本,stable版本也升级到了1.4.3版本了。

主要还是更新太快了,仔细考虑下,决定把使用的版本升级到1.3.3版。
准备工作需要确认服务器系统版本,由于目前linux操作系统 的版本也比较多,而且分为x86 x64版,对于nginx需要的环境支持文件也不尽相同。
首先,nginx -V 确认下原来安装时执行的configure命令
执行后会显示当前nginx服务器版本及./configure时添加的configure arguments.
稳妥起见把原来的nginx主文件先备份下 mv nginx  nginx.bak
详细的重新编译步骤就不在详述了,一般套路 ./configure --prefix=/usr/local/nginx  --等等根据自己要求来添加  后面make完成  cp objs/nginx /usr/local/nginx/sbin/
执行/usr/local/nginx/sbin/nginx -V 看下是否正确 正常情况下到这里基本就完成了。
笔者在执行升级过程中遇到几个问题,今天着重说下遇到的问题。
重新编译过程中configure参数有改动使的当前环境不支持,缺少库文件的安装包。

正常完成编译:
/usr/local/nginx/sbin/nginx -V 报错
/usr/local/nginx/sbin/nginx: error while loading shared libraries: libssl.so.6: cannot open shared object file: No such file or directory

启动过程中找不到某个library 从错误看出是缺少lib文件导致,进一步查看
 

复制代码 代码示例:
# ldd $(which /usr/local/nginx/sbin/nginx)
linux-vdso.so.1 =>  (0x00007fffb79ff000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f5a10ea3000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f5a10c6c000)
libssl.so.6 => not found
libdl.so.2 => /lib64/libdl.so.2 (0x00007f5a10a67000)
libc.so.6 => /lib64/libc.so.6 (0x00007f5a106d3000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5a110d3000)
libfreebl3.so => /lib64/libfreebl3.so (0x00007f5a10471000)

可看到 libssl.so.6  有个文件未能找到 需要安装openssl098e-0.9.8e-17.el6.centos.2.x86_64包,或可以从别的服务器上拷出方至/lib或者/lib64下。
完成后再次:
 

复制代码 代码示例:
/usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

问题成功解决,nginx升级得以顺利进行。