如何修复 catalina.out 中的错误“libjli.so:无法打开共享对象文件:没有此文件或目录”

如何修复 catalina.out 中的错误“libjli.so:无法打开共享对象文件:没有此文件或目录”

systemctl restart tomcat我在日志文件中运行时出现此错误$CATALINA_HOME/logs/catalina.outhttps://pastebin.com/Cpfs9xCk

于是我关注了网上的这个帖子: https://confluence.atlassian.com/confkb/permission-denied-error-when-binding-a-port-290750651.html

  1. 如果使用 Linux 2.6.24 或更高版本,您可以在 java 可执行文件上设置文件功能,以授予提升的权限以仅允许打开特权端口,而不允许其他超级用户权限:

setcap cap_net_bind_service+ep /path/to/bin/java 设置此项后,您可能会在启动 Java 时注意到如下错误,例如:

$ java -version /path/to/bin/java: 加载共享库时出错:libjli.so:无法打开共享对象文件:没有此文件或目录 这意味着该库是从动态路径导入的,而不是在受信任的 ld.so 路径中。请参阅 https://bugs.java.com/bugdatabase/view_bug?bug_id=7157699有关详细信息。要解决此问题,您需要找到库,并将其路径添加到 ld.so 配置中。请注意,以下是示例,这可能因 Linux 发行版而异。将 JAVA_HOME 替换为正确的位置:

$ find JAVA_HOME -name 'libjli.so' JAVA_HOME/lib/amd64/jli/libjli.so
echo "JAVA_HOME/lib/amd64/jli" > /etc/ld.so.conf.d/java-libjli.conf ldconfig -v 完成所有这些设置后,您需要确保 Confluence 仅使用直接二进制路径启动 java,而不是通过符号链接,否则将无法获得该功能。

所以我运行了这个命令:setcap cap_net_bind_service+ep /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64

我得到了它所说的我可能得到的东西:

 $CATALINA_HOME/logs/catalina.out 
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/bin/java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory

我按照他们说的做了修复但它仍然不起作用并且仍然收到上述错误:

$ find $JAVA_HOME -name 'libjli.so'
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/jre/lib/amd64/jli/libjli.so
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/lib/amd64/jli/libjli.so

由于某种原因,我有两个这样的文件。我使用路径创建了这个文件,但仍然出现错误,并且我的 tomcat 无法启动。

$ cat /etc/ld.so.conf.d/java-libjli.conf
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/jre/lib/amd64/jli
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/lib/amd64/jli

答案1

到目前为止,我为 nginx 部分添加了完整的方法,因为 apache-tomcat 已经通过重新安装解决了

mkdir /var/cache/nginx/cache
chown nginx:nginx /var/cache/nginx/cache


现在编辑 nginx.conf 中的 http 部分

###New cache settings as default
proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=hd_cache:10m max_size=10g inactive=2d use_temp_path=off;
proxy_cache_methods GET HEAD POST;
proxy_cache_valid 200 302 3d;
proxy_cache_valid 404      1m;

编辑 /etc/nginx/sites-avaible/yoursite.com

#http to https redirect
server {
        server_name yoursite.com *.yoursite.com;
        listen 80;
        return 301 https://$host$request_uri;
}

#https server
server {
        proxy_read_timeout 3600;
        listen 443 ssl http2;
        server_name yoursite.com *.yoursite.com;

#a special location in case don't cache this file can be deleted
location updater/serversettings.xml {
          expires -1;
          add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
        }

                #The root/rest will be redirected
                location / {
                        proxy_cache             hd_cache;
                        proxy_set_header        X-Cache-Status $upstream_cache_status;
                        proxy_cache_valid       200 1w;
                        proxy_pass              https://10.10.200.4;
                        proxy_set_header        Host $http_host;
                        proxy_buffers           16 8m;
                        proxy_buffer_size       2m;
                        gzip on;
                        gzip_vary          on;
                        gzip_comp_level    9;
                        gzip_proxied       any;
}
    #SSL Cert section, as we require ssl, using certbot LetsEncrypt
    ssl_certificate /etc/letsencrypt/live/yoursite.com-0001/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/yoursite.com-0001/privkey.pem; # managed by Certbot
}

现在启用该站点。

ln -s /etc/nginx/sites-avaible/yoursite.com /etc/nginx/sites-enabled/yoursite.com

然后运行

服务 Nginx 重新加载

此设置对于 WordPress 网站来说运行良好,我遇到的页面速度计数器为 95+

相关内容