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 這個檔案,BI 啟動需要呼叫這個檔案。
需將%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 目錄無法寫入檔案,可能導致這個現象的原因和解決方案是:
1)/tmp 所在磁碟空間已滿,清理下磁碟即可
2)普通使用者沒有權限,請給 /tmp 賦權
命令:chmod -R 1777 /tmp
命令詳解:
允許所有使用者讀、寫、執行
只有檔案所有者和伺服器超管使用者才能刪除自己在 /tmp 中建立的檔案
6. java.io.tmp 無法寫入
不同的容器部署,java.io.tmp 指向的位置也不同。可能導致這個現象的原因是:
使用者沒有權限,賦權即可。
java.io.tmp 所在磁碟空間已滿,清理磁碟即可。
7. GLIBC 版本問題
解決方案:升級 gcc ,具體方法請百度。
升級結束後: 命令行輸入:ldd FineAssist_x86_64.so,如下圖所示,即為正常。
8. FinePrivacy未知異常
拿啟動日誌交握技術支援,請前往 【服務平台>線上支援】。
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,即可成功安裝,然後重啟帆軟應用。
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
11. msvcr120.dll 運作庫不存在
問題描述
Windows 系統中,安裝或部署 5.1.15 及之後的版本時,報錯 msvcr120.dll 運作庫不存在。
解決方案
建議安裝 msvcr120.dll 檔案後再進行部署,缺失檔案下載請參見:Microsoft Visual C++ Redistributable 最新支援的下載
注:只有下載Visual Studio 2010 (VC++ 10.0) SP1版本才能解決該問題