1. 概述
1.1 預期效果
用戶希望将 FineReport 報表工程部署到 Linux 系統上的 Tomcat 中,效果如下圖所示:
1.2 實現思路
1)将本地工程的 webroot 文件夾以壓縮包形式上傳到 Tomcat 服務器的%TOMCAT_HOME%\webapps下,并解壓。
2)将 tools.jar 文件放到%TOMCAT_HOME%\lib下或者%TOMCAT_HOME%\webapps\工程名\WEB_INF\lib下。
3)重啓 Tomcat 服務器,訪問報表工程地址即可。
1.3 環境準備
用戶需要提前在 Linux 系統下安裝 JDK 和 Tomcat,具體的安裝方法可以自行查閱資料,文檔和技術支持不負責環境搭建部分的内容。
本文以 CentOS7+JDK1.8+Tomcat8.5 爲例進行演示,其他版本命令可能略有區别,請自行處理。
2. 操作步驟
2.1 上傳 webroot 文件至 Tomcat 環境中
1)将本地報表工程的 webroot 文件夾壓縮,将壓縮包上傳至%TOMCAT_HOME%\webapps下,可以通過 WinSCP/FTP 等軟件上傳。如下圖所示:
注:不推薦直接上傳文件夾,防止文件出現問題。
上傳完成後,解壓壓縮包,代碼如下所示:
unzip webroot.zip
2.2 引入 JDK 中的 tools.jar 文件
将%JAVA_HOME%\jdk\lib下的 tools.jar 拷貝到部署的服務器中,拷貝到%TOMCAT_HOME%\lib下或者%TOMCAT_HOME%\webapps\工程名\WEB_INF\lib下。詳細内容參見文檔:擊報錯500:服務器部署需引入tools.jar
代碼如下所示:
cp /usr/java/jdk1.8.0_131/lib/tools.jar /usr/tomcat/apache-tomcat-8.5.61/lib
2.3 重啓 Tomcat 服務器
1)進入%TOMCAT_HOME%/bin目錄,先運行shutdown.sh,關閉 Tomcat 服務器。
./shutdown.sh
2)查找是否還有 Tomcat 的進程,如果有 kill tomcat 進程。
ps -ef |grep tomcat
如果有 Tomcat 的進程,則 kill,pid 爲相應的進程号。
注:2019-12-05 及之後版本的 JAR 包可正常使用 shutdown 完全清理所有進程,不需要再操作這一步。
kill -9 pid
3)再運行 startup.sh 。
./startup.sh
4) 查看 Tomcat 日志。
tail -f ../logs/catalina.out
這樣 Tomcat 服務器就重啓完成了。
2.4 效果查看
啓動浏覽器,在地址欄輸入:http://ip:服務器端口号/工程名/decision,能成功看到部署成功頁面,則表明 FineReport 應用部署 Tomcat 服務器成功,如下圖所示:
3. 注意事項
3.1 權限問題
Linux 的文件權限,檢查整個工程讀寫運行權限,一般我們可以直接給整個工程全部的權限,命令如下:
chmod -R 777 webroot/
3.2 路徑問題
Linux 的路徑裏需要使用反斜杠,舉例:Windows 中 URL 路徑爲 emb:jdbc:hsqldb:file://${ENV_HOME}\finedb\db,而 Linux 中 URL 路徑爲emb:jdbc:hsqldb:file://${ENV_HOME}/finedb/db
3.3 中文亂碼問題
Linux 下的中文亂碼問題一般可以通過兩種方式解決。
1)安裝中文語言包
安裝方法:Linux 系統中文語言包的安裝
2)安裝字體包
安裝方法:在 Windows 系統中下的C:\WINDOWS\Fonts\找到相應的字體,将其拷貝到 Linux 系統下報表服務器使用的 JDK 下 JRE 的\lib\fonts目錄下,重啓服務器。
3.4 雲遷移目錄丢失
Ubuntu 系統下,将正式環境中的 Tomcat 打包後拷貝到雲服務器上,啓動Tomcat後,目錄丢失,同時,在目錄管理中新增目錄,提示報錯信息“目錄已存在”。
3.4.1 報錯信息一
問題描述
報錯信息如下所示:
AWT is not properly configured on this server. Perhaps you need to run your container with "-Djava
.awt.headless=true"? See also: https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+got+java.awt.headle ss+problem
java.lang.UnsatisfiedLinkError: /mnt/jdk1.8/jre/lib/amd64/libawt_xawt.so: libXrender.so.1: cannot open shared
object file: No such file or directory
解決方案
apt-get install libxrender-dev,重啓 Tomcat 。
3.4.2 報錯信息二
問題描述
java.lang.UnsatisfiedLinkError: /mnt/jdk1.8/jre/lib/amd64/libawt_xawt.so: libXtst.so.6: cannot open shared object
file: No such file or directory
解決方案
apt-get install libxtst-dev,重啓 Tomcat 。