nginx: error while loading shared libraries: libjemalloc.so.2: cannot open shared object file: No su
宝塔面板安装好Nginx后启动报错:Starting nginx... /www/server/nginx/sbin/nginx: error while loading shared libraries: libjemalloc.so.2: cannot open shared object file: No such file or directory
在度娘找了教程,折腾了一下,终于解决了这个问题。或者报错:找不到libluajit-5.1.so.2。
原因:报错如图,字面意思看是找不到 “libjemalloc.so.2”和libluajit-5.1.so.2这个库文件。
说明:如果是缺少其他库文件,也可以参考这个方法处理。
解决方法:亲测
经过测试,有两个解决方法。
方法一:(如果能搜索到文件,建议使用方法1)
1、执行如下命令查看下nginx启动时调用的库文件。
ldd /www/server/nginx/sbin/nginx
说明:若您的nginx不是宝塔安装,将上面路径更换为您自己的宝塔启动路径。
执行后显示如下:
[root@localhost ~]# ldd /www/server/nginx/sbin/nginx linux-vdso.so.1 => (0x00007ffd00e85000) libjemalloc.so.2 => not found libdl.so.2 => /lib64/libdl.so.2 (0x00007ff7d0af9000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ff7d08dd000) libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007ff7d06a6000) libluajit-5.1.so.2 => not found libm.so.6 => /lib64/libm.so.6 (0x00007ff7d03a4000) libz.so.1 => /lib64/libz.so.1 (0x00007ff7d018e000) libxml2.so.2 => /lib64/libxml2.so.2 (0x00007ff7cfe24000) libxslt.so.1 => /lib64/libxslt.so.1 (0x00007ff7cfbe5000) libexslt.so.0 => /lib64/libexslt.so.0 (0x00007ff7cf9d0000) libgd.so.2 => /lib64/libgd.so.2 (0x00007ff7cf789000) libc.so.6 => /lib64/libc.so.6 (0x00007ff7cf3bb000) /lib64/ld-linux-x86-64.so.2 (0x00007ff7d0cfd000) libfreebl3.so => /lib64/libfreebl3.so (0x00007ff7cf1b8000) liblzma.so.5 => /lib64/liblzma.so.5 (0x00007ff7cef92000) libgcrypt.so.11 => /lib64/libgcrypt.so.11 (0x00007ff7ced11000) libgpg-error.so.0 => /lib64/libgpg-error.so.0 (0x00007ff7ceb0c000) libXpm.so.4 => /lib64/libXpm.so.4 (0x00007ff7ce8fa000) libX11.so.6 => /lib64/libX11.so.6 (0x00007ff7ce5bc000) libjpeg.so.62 => /lib64/libjpeg.so.62 (0x00007ff7ce367000) libfontconfig.so.1 => /lib64/libfontconfig.so.1 (0x00007ff7ce125000) libfreetype.so.6 => /lib64/libfreetype.so.6 (0x00007ff7cde66000) libpng15.so.15 => /lib64/libpng15.so.15 (0x00007ff7cdc3b000) libxcb.so.1 => /lib64/libxcb.so.1 (0x00007ff7cda13000) libexpat.so.1 => /lib64/libexpat.so.1 (0x00007ff7cd7e8000) libuuid.so.1 => /lib64/libuuid.so.1 (0x00007ff7cd5e3000) libbz2.so.1 => /lib64/libbz2.so.1 (0x00007ff7cd3d3000) libXau.so.6 => /lib64/libXau.so.6 (0x00007ff7cd1cf000)
执行结果看提示“libjemalloc.so.2”和 “libluajit-5.1.so.2”找不到。
2、执行如下命令搜索一下文件是否存在。
find / -name libjemalloc.so.2 find / -name libluajit-5.1.so.2
执行后显示如下,系统中是存在这个文件的。
[root@localhost ~]# find / -name libjemalloc.so.2 /usr/local/lib/libjemalloc.so.2 [root@localhost ~]# find / -name libluajit-5.1.so.2 /usr/local/lib64/libluajit-5.1.so.2 /usr/local/lib/libluajit-5.1.so.2 [root@localhost ~]#
3、将“libjemalloc.so.2”和 “libluajit-5.1.so.2”文件复制到 /lib64/即可。
[root@localhost ~]# cp /usr/local/lib/libjemalloc.so.2 /lib64/ [root@localhost ~]# cp /usr/local/lib64/libluajit-5.1.so.2 /lib64/
文件复制到 /lib64/后再重启nginx即可解决。
方法二:
方法1无法解决时再考虑这个方法。
如果按照方法一无法搜索到两个文件则可直接执行如下命令安装库文件即可。
yum install -y jemalloc
执行后再启动即可正常。