Tomcat

如何修復 catalina.out 中的錯誤“libjli.so:無法打開共享對象文件:沒有這樣的文件或目錄”

  • August 26, 2019

systemctl restart tomcat在我的$CATALINA_HOME/logs/catalina.out日誌文件 中執行時出現此錯誤: https ://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: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory 這意味著庫是從動態路徑導入的,而不是在受信任的 ld.so 路徑。有關詳細資訊,請參閱 http://bugs.sun.com/view_bug.do?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

到目前為止,我為 nginx 部分添加了完整的方法,因為 apache-tomcat 已通過重新安裝解決

mkdir /var/cache/nginx/cache

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

現在編輯 http 部分下方的 nginx.conf

###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+

引用自:https://serverfault.com/questions/978854