1. 概述
在進行伺服器部署時,會出現部署失敗的情況,「部署環境異常」屬於原因之一,使用者可在 伺服器部署報錯嚮導 中查看並修復問題。其中,「部署環境異常」這個原因又被分為不同情況,本文將介紹具體報錯及解決方案。報錯頁面如下圖所示:
2. tools.jar不存在
注1:這裏以 Tomcat 為例進行示範,其他容器同樣為copy到對應的容器的 lib 下。
注2:%JAVA_HOME%/jdk/lib 下的 tools.jar 為部署伺服器本地 JAVA_HOME 裏面的檔案,不是開發計算機本地。
將%JAVA_HOME%/jdk/lib下的tools.jarcopy到部署的伺服器中,即%TOMCAT_HOME%/lib下和%TOMCAT_HOME%/webapps/工程名/WEB_INF/lib下。如下圖所示:
3. tools.jar不匹配
報錯例如:Caused by: java.lang.UnsatisfiedLinkError: sun.tools.attach.LinuxVirtualMachine.isLinuxThreads()Z
可以根據提示資訊不同判斷是 Windows 環境放了 Linux 的 tools.jar 還是 Linux 環境放了 Windows 的 tools.jar 。
4. attach.dll不存在
日誌報錯存在:Caused by: com.sun.tools.attach.AttachNotSupportedException: no providers installed
Windows 下安裝 JDK 時會同時安裝一個獨立的 jre ,獨立安裝的 jre 下沒有 attach.dll 這個檔案,11.0 啟動需要呼叫這個檔案。
需將%JAVA_HOME%/jdk/jre/bin下的 attach.dll copy到%JRE_HOME%/bin下。如下圖所示:
5. /tmp 無法寫入
日誌報錯存在:Caused by: com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded
/tmp 目錄無法寫入檔案,可能導致這個現象的原因和解決方案是:
普通使用者沒有權限,用管理者給 /tmp 賦權chmod -R 1777 /tmp;1代表這是粘滯位,他的作用就是只有建立者和 root 可以刪除。
/tmp 所在磁碟空間已滿,清理下磁碟即可。
6. java.io.tmp 無法寫入
不同的容器部署,java.io.tmp 指向的位置也不同。可能導致這個現象的原因是:
使用者沒有權限,賦權即可。
java.io.tmp 所在磁碟空間已滿,清理磁碟即可。
7. GLIBC 版本問題
解決方案:升級 gcc ,具體方法請百度。
升級結束後: 命令行輸入:ldd FineAssist_x86_64.so,如下圖所示,即為正常。
8. FinePrivacy未知異常
拿啟動日誌聯絡技術支援,技術支援聯絡方式:前往「服務」,選擇「線上支援」、電話「400-811-8890」。
9. fontconfig缺失/Dec-Basic_Non_Existent
伺服器部署包中的 OpenJDK,因版權原因不帶字體包。如果 Linux 本身缺少字體包就會報錯:fontconfig缺失,或Dec-Basic_Non_Existent。
因此需要使用者在進行部署前,先檢查fontconfig。
檢查方法:
使用者可透過在伺服器上執行fc-list命令,或者檢查/usr/bin目錄下是否存在fc-list檔案,來判斷伺服器是否已安裝好fontconfig。
安裝方法:
使用者可根據自身系統情況自行百度安裝fontconfig的方法。
一般在 Linux 中直接執行命令 yum install fontconfig,然後重啟 Tomcat 伺服器,即可成功安裝 。
10. 伺服器環境缺少libxrender和libxtst圖形庫
解決方案一:設定headless=true(推薦)
headless 模式是系統的一種工作模式,如果系統屬性 java.awt.headless被設定true,那麼headless工具包就會被使用。
本節展示 Tomcat 環境下啟動 headless 模式的步驟。
Windows:進入%Tomcat_HOME%\bin目錄。尋找名為setenv.bat的檔案。如果檔案不存在,可以建立一個新的setenv.bat檔案。在檔案中新增以下行來設定,配置完成後重啟工程。
set JAVA_OPTS=%JAVA_OPTS% -Djava.awt.headless=true
Linux:進入%Tomcat_HOME%\bin目錄。尋找名為setenv.sh的檔案。如果檔案不存在,可以建立一個新的setenv.sh檔案。在檔案中新增以下行來設定,配置完成後重啟工程。
JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"
解決方案二:安裝缺失圖形庫
外網使用者:
執行命令行線上安裝圖形庫(範例為unbuntu系統)
apt-get install libxrender-dev
apt-get install libxtst-dev
內網使用者:
1)存取 https://developer.aliyun.com/packageSearch?word=libxrender ,按照系統和版本選擇安裝包
2)手動安裝,安裝語句範例:
deb包系列的系統(如 ubuntu) : dpkg -i **.deb
rpm包系列的系統(如 centos) : yum install **.rpm