记一次服务器迁移后的nginx启动难题美高梅手机登

作者:电脑系统

背景

服务器A准备下线,故直接将上面的所有应用/资料打包迁移到服务器B。包括搭建的nginx,迁移到B服务器后,楼主偷懒,就想着直接./nginx启动,过程遇到如下问题。

./nginx
./nginx: error while loading shared libraries: libssl.so.6: cannot open shared object file: No such file or directory

原因:找不到动态链接库。

在部署LNMP的时候遇到Nginx启动失败的2个问题

到下载最新版本的Nginx并安装.

附录:

1、64位 libssl.so.6下载地址
wget 。

2、查看nginx依赖的so库
ldd nginx
linux-vdso.so.1 => (0x00007fff09fff000)
libpthread.so.0 => /lib64/libpthread.so.0(0x0000003fc8400000)
libcrypt.so.1 => /lib64/libcrypt.so.1(0x0000003fccc00000)
libssl.so.6 => not found
libcrypto.so.6 => not found
libdl.so.2 => /lib64/libdl.so.2(0x0000003fc8000000)
libz.so.1 => /lib64/libz.so.1(0x0000003fc8c00000)
libc.so.6 => /lib64/libc.so.6(0x0000003fc7c00000)
/lib64/ld-linux-x86-64.so.2(0x0000003fc7800000)
libfreebl3.so => /lib64/libfreebl3.so(0x0000003fcd000000)

3、nginx启动参数
./nginx -h
nginx version: nginx/1.4.2
Usage: nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives]

Options:
-?,-h : this help
-v : show version and exit
-V : show version and configure options then exit
-t : test configuration and exit
-q : suppress non-error messages during configuration testing
-s signal : send signal to a master process: stop, quit, reopen, reload
-p prefix : set prefix path (default: /home1/xxxx/local/nginx-1.4.2//)
-c filename : set configuration file (default: conf/nginx.conf)
-g directives : set global directives out of configuration file

参考:

美高梅手机登录网站 1

启动nginx上时,服务无法启动,出现libpcre.so.1 not found的错误,解决方法如下:

问题具体解决过程

(1)安装libssl.so.6
rpm包下载:
安装:rpm2cpiolibstdc -4.4.7-4.el6.x86_64.rpm |cpio -idvm

(2)LD_LIBRARY_PATH修改
楼主不是root,故只能将libssl.so.6安装到普通用户目录,再通过LD_LIBRARY_PATH添加LD加载目录。
具体在.bashrc中添加:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/lib/usr/lib64(libssl.so.6具体目录)

(3)安装64位的libssl.so.6
前两个步骤搞定后,启动时候仍遇到这个错误:
./nginx
./nginx: error while loading shared libraries: libssl.so.6: wrong ELF class: ELFCLASS32

错误原因:安装的so.6是32位,当前系统需要64位。
重新下载64位的libssl.so.6再安装步骤(1)(2)操作就可以。

    linux-vdso.so.1 =>  (0x00007fff98d03000)  

 ----#ln -s libpcre.so.0.0.1 libpcre.so.1

报错如下:
 
1,/usr/local/nginx/sbin/nginx: error while loading shared libraries: libssl.so.6: cannot open shared object file: No such file or directory
 
意思是导入共享库错误,libssl.so.6无法打开,或者是没有这个文件或者文件夹
 
用命令查看:
 
#ldd $(which /usr/local/nginx/sbin/nginx)  

tar -xvzf nginx-$NGINX_VERSION.tar.gz
cd nginx-$NGINX_VERSION
patch -p1 < ../nginx_tcp_proxy_module/tcp.patch
./configure --add-module=../nginx_tcp_proxy_module/
sudo make && make install

 libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f21404ab000)
 
 libpcre.so.0 => /lib64/libpcre.so.0 (0x00007f214027f000) 
 
        libssl.so.6 => no found
 
 libcrypto.so.6 =>  no found
 
 libdl.so.2 => /lib64/libdl.so.2 (0x00007f213facf000)
 
 libz.so.1 => /lib64/libz.so.1 (0x00007f213f8b8000)
 
 libc.so.6 => /lib64/libc.so.6 (0x00007f213f525000)
 
 libfreebl3.so => /lib64/libfreebl3.so (0x00007f213f2c3000)
 
 libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007f213f07e000)
 
 libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f213ed98000)
 
 libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f213eb94000)
 
 libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f213e967000)
 
 libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f213e74d000)
 
 /lib64/ld-linux-x86-64.so.2 (0x00007f21406ed000)
 
 libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f213e541000)
 
 libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f213e33e000)
 
 libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f213e121000)
 
 libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f213df01000)
 
去/lib64/下面查找,果然没有这两个文件,我的系统是CentOS6.3_x86_记一次服务器迁移后的nginx启动难题美高梅手机登录网站。64,我用yum网络安装libssl,没有这个包,在网上找了,有网友说要yum install libssl.so.6,网络安装了openssl098e.i686包,安装完了我在/usr/lib/下找到了libcrypto.so.6和libssl.so.6,依然无法启动,我做了软连接到/lib64下面,启动的时候报了第二个错误:
 
2,nginx: error while loading shared libraries: libssl.so.6: wrong ELF class: ELFCLASS32
 
我看到了错误才发现yum安装的是32位的包,只有在网上找64位的安装包,有网友提供了64位openssl098e-0.9.8e下载地址:wget ftp://ftp.pbone.net/mirror/www.startcom.org/AS-6.0.0/os/x86_64/Packages/openssl098e-0.9.8e-17.SEL6.x86_64.rpm。在安装rpm包的时候提示已经安装或者需要更新的,可以删除rpm包再重新安装即可。安装完了执行:
 
#ldd $(which /usr/local/nginx/sbin/nginx)就发现已经找到那两个共享库,在/usr/lib64/下面,然后启动成功。
 
解决问题

一 下载并安装pcre库

二 安装openssl 

   yum -y install openssl openssl-devel

---#ldd $(which /usr/sbin/nginx)

 ----#ldd $(which /usr/sbin/nginx)

   tar zxvf pcre-8.30.tar.gz

    linux-vdso.so.1 =>  (0x00007fff4d7ff000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fb06f13e000)
    libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007fb06ef07000)
    libpcre.so.1 => /lib64/libpcre.so.1 (0x00007fb06ecda000)
    libz.so.1 => /lib64/libz.so.1 (0x00007fb06eac4000)
    libc.so.6 => /lib64/libc.so.6 (0x00007fb06e723000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fb06f368000)
    libfreebl3.so => /lib64/libfreebl3.so (0x00007fb06e4c0000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007fb06e2bc000)

    linux-vdso.so.1 =>  (0x00007fff7e9db000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fe4629d0000)
    libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007fe462799000)
    libpcre.so.1 => not found//果然没找到
    libz.so.1 => /lib64/libz.so.1 (0x00007fe462582000)
    libc.so.6 => /lib64/libc.so.6 (0x00007fe4621e1000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fe462bfa000)
    libfreebl3.so => /lib64/libfreebl3.so (0x00007fe461f7e000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007fe461d7a000)

先执行下述命令,查看

curl -O http://nginx.org/downlad/nginx-$NGINX_VERSION.tar.gz

 

Reverse Proxy Web Sockets with Nginx and Socket.IO

   ./configure     make    make install

执行如下:

再次查看一下:

显示如下:

export NGINX_VERSION=1.2.1

为websocket应用实现负载均衡  

三 下载tcp_proxy_module

 ----#cd /lib64

 

四 安装nginx

到  下载

 

显示已经ok了:

本文由美高梅4858官方网站发布,转载请注明来源

关键词: Linux/Mono