安裝與組態 > 安裝 ThingWorx > RHEL 安裝 > PostgreSQL > 安裝 Java 與 Apache Tomcat (RHEL)
安裝 Java 與 Apache Tomcat (RHEL)
在下面的步驟中,使用您所使用的版次編號取代 xxxxx
1. 如果您要針對您的資料庫使用 AzureSQL,請轉至 使用 Azure SQL Server 作為持續性提供者。執行該部份中的步驟來設定資料庫,並返回此部份。
2. 如果使用 MSSQL 作為資料庫,請轉至 將 MSSQL 用作持續性提供者 。執行該部份中的步驟來設定資料庫,並返回此部份。
3. Oracle 的網站下載 Java (JDK) RPM 檔案。
4. 執行 Java 安裝程式:
$ sudo rpm -i jdk-8uxxx-linux-x64.rpm
5. 建立目錄並移動 JDK:
$ sudo mkdir -p /usr/lib/jvm
$ sudo mv /usr/java/jdk1.8.0_xxx/ /usr/lib/jvm/
6. 設定 Java 替代選項:
$ sudo alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_xxx/bin/java 1
$ sudo alternatives --install /usr/bin/keytool keytool /usr/lib/jvm/jdk1.8.0_xxx/bin/keytool 1
7. 變更存取權限:
$ sudo chmod a+x /usr/bin/java
$ sudo chmod a+x /usr/bin/keytool
* 
如果您收到錯誤,請使用下列方法:
$ sudo chmod -f a+x /usr/bin/keytool
8. 變更擁有者:
$ sudo chown -R root:root /usr/lib/jvm/jdk1.8.0_xxx/
9. 配置主物件連結:
$ sudo alternatives --config java
* 
選取包含 /usr/lib/jvm/jdk1.8.0_xxx/bin/java 的選項
$ sudo rm /usr/java/latest
$ sudo ln -s /usr/lib/jvm/jdk1.8.0_xxx /usr/java/latest
$ sudo ln -s /usr/lib/jvm/jdk1.8.0_xxx/bin/keytool /usr/bin/keytool
* 
這可能會傳回 File Exists 錯誤。如果是這樣,請略過並繼續。
$ sudo alternatives --config keytool
10. 核對 Java 版本:版次版本可能會有所不同。
$ java -version
java version "1.8.0_xxx"
Java(TM) SE Runtime Environment (build 1.8.0_xxx-bxx)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-bxx, mixed mode)
11. 安裝 Tomcat。下載 Tomcat 安裝程式。此流程中的此步驟使用 Tomcat 8.5.xx,其中 xx 會被取代為您正在使用的版本。
$ wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.xx/bin/apache-tomcat-8.5.xx.tar.gz
* 
最佳作法包括對每個發行版本使用簽名或加總核對碼來核對 Tomcat 檔案的完整性。如需詳細資訊,請參閱 Apache 的文件
12. 萃取內容:
$ tar -xf apache-tomcat-8.5.xx.tar.gz
13. 將 Tomcat 移至 /usr/share/tomcat8.5
$ sudo mkdir -p /usr/share/tomcat8.5
$ sudo mv apache-tomcat-8.5.xx /usr/share/tomcat8.5/8.5.xx
14. /etc/environment 中定義環境變數:
$ export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_xxx
$ export CATALINA_HOME=/usr/share/tomcat8.5/8.5.xx
15. 將目錄變更為 /usr/share/tomcat8.5/8.5.xx
$ cd /usr/share/tomcat8.5/8.5.xx
16. 將使用者和群組新增至系統:
$ sudo groupadd -r tomcat8.5
$ sudo useradd -r -d /usr/share/tomcat8.5 -g tomcat8.5 -s /bin/false tomcat8.5
$ sudo chown -R tomcat8.5:tomcat8.5 /usr/share/tomcat8.5
17. 變更 bin/lib/webapps/ 的擁有者及存取權限:
$ sudo chown -Rh tomcat8.5:tomcat8.5 bin/ lib/ webapps/
$ sudo chmod 775 bin/ lib/ webapps/
18. 變更 usr/share/tomcat8.5/8.5xx 的擁有者與存取權限:
sudo chown -R tomcat8.5:tomcat8.5 /usr/share/tomcat8.5/8.5.xx
sudo chmod -R 775 /usr/share/tomcat8.5/8.5.xx
19. 變更 conf/ 的擁有者及存取權限。若要使生產系統增加作業系統層級上的安全性,應重新檢閱權限及擁有權。
$ sudo chown -Rh root:tomcat8.5 conf/
$ sudo chmod -R 640 conf
sudo chown -R tomcat8.5:tomcat8.5 /usr/share/tomcat8.5/8.5.xx
sudo chmod -R 777 /usr/share/tomcat8.5/8.5.xx
20. 變更 logs/temp/work/ 的存取權限:
$ sudo chown -R tomcat8.5:adm logs/ temp/ work/
$ sudo chmod 760 logs/ temp/ work/
21. 建立自我簽署的憑證:
$ /usr/lib/jvm/jdk1.8.0_xxx/jre/bin/keytool -genkey -alias tomcat8.5 -keyalg RSA
22. 請遵循指示來完成憑證建立流程。
設定金鑰庫密碼。
請遵照提示來設定您的安全性憑證。
將 tomcat8.5 使用者密碼設定為與金鑰庫密碼相同。
$ sudo cp ~/.keystore /usr/share/tomcat8.5/8.5.xx/conf/
$ sudo chown root:tomcat8.5 /usr/share/tomcat8.5/8.5.xx/conf/.keystore
$ sudo chmod 640 /usr/share/tomcat8.5/8.5.xx/conf/.keystore
23. context.xml 中的 Manager 元素取消註解,以防止工作階段持續重新啟動。在文字編輯器中開啟 /usr/share/tomcat8.5/8.5.xx/conf/context.xml (作為根),並移除 ‘<Manager pathname="" />’ 前的 ‘<!—‘ ,然後移除 ‘-->’
24. 儲存檔案。
25. tomcat-users.xml 中定義 Apache 管理員使用者。在文字編輯器中開啟 /usr/share/tomcat8.5/8.5.xx/conf/tomcat-users.xml (作為根)。在最後一行 (</tomcat-users>) 的正上方添加以下行:
<user username="<Tomcat username> " password="<Tomcat password> " roles="manager,manager-gui"/>
26. 儲存檔案。
* 
包括的角色是為了簡化測試,如果關注安全性,則可以將其移除。
* 
基於安全性原因,如果預設未禁用 AJP 連接器,透過執行下列步驟完成此操作很重要。
27. 在 Tomcat 安裝位置,開啟 conf/server.xml,然後搜尋以下這行程式碼。如果找到,請為其加上註解並儲存檔案:
<Connector port ="8009" protocol="AJP/1.3" redirectPort="8443"/>
* 
在 Apache Tomcat 9.0 及更新版本中,rejectIllegalHeader 屬性預設為 true。PTC 不建議或支援手動修改 conf/web.xml 檔案,以將此屬性設定為 false。
28. 將 Tomcat 設定為在開機時啟動的服務。首先,如果您的系統尚未安裝 JSVC,請先建構。
$ sudo yum install gcc
$ cd /usr/share/tomcat8.5/8.5.xx/bin/
$ sudo tar xvfz commons-daemon-native.tar.gz
$ cd commons-daemon-*-native-src/unix
$ sudo ./configure --with-java=$JAVA_HOME
$ sudo yum install make
$ sudo make
$ sudo cp jsvc ../..
29. 建立 Tomcat 服務檔案:
$ sudo touch /usr/lib/systemd/system/tomcat.service
30. 在文字編輯器中開啟 /usr/lib/systemd/system/tomcat.service (作為根) 並貼上下列內容:
* 
在以下範例中,將 -Xms-Xmx 的值設定為可用 OS 記憶體的 75% (例如,16GB RAM 的系統為 12GB)。如需其他資訊,請參閱 JVM 調整
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking
PIDFile=/var/run/tomcat.pid
Environment=CATALINA_PID=/var/run/tomcat.pid
Environment=JAVA_HOME=/usr/lib/jvm/jdk1.8.0_xxx
Environment=CATALINA_HOME=/usr/share/tomcat8.5/8.5.xx
Environment=CATALINA_BASE=/usr/share/tomcat8.5/8.5.xx
Environment=CATALINA_OPTS=

ExecStart=/usr/share/tomcat8.5/8.5.xx/bin/jsvc \
-Dcatalina.home=${CATALINA_HOME} \
-Dcatalina.base=${CATALINA_BASE} \
-Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dserver -XX:+UseNUMA \
-XX:+UseG1GC -Dfile.encoding=UTF-8 \
-Djava.library.path=${CATALINA_BASE}/webapps/Thingworx/WEB-INF/extensions \
-Xms=<75% of available OS memory> \
-Xmx=<75% of available OS memory> \
-cp ${CATALINA_HOME}/bin/commons-daemon.jar:${CATALINA_HOME}/bin/bootstrap.jar:${CATALINA_HOME}/bin/tomcat-juli.jar \
-user tomcat8.5 \
-java-home ${JAVA_HOME} \
-pidfile /var/run/tomcat.pid \
-errfile ${CATALINA_HOME}/logs/catalina.out \
-outfile ${CATALINA_HOME}/logs/catalina.out \
$CATALINA_OPTS \
org.apache.catalina.startup.Bootstrap
[Install]
WantedBy=multi-user.target
31. 在名為 setenv.sh 的 Tomcat usr/share/tomcat8.5/8.5.xx/bin 檔案中建立新檔案:
CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/share/tomcat8.5/8.5.xx/webapps/Thingworx/WEB-INF/extensions"
32. 將 Tomcat 設定為在系統啟動時執行,並允許使用者控制 Tomcat 服務:
$ sudo systemctl enable tomcat.service
sudo systemctl start tomcat
sudo systemctl stop tomcat
sudo systemctl restart tomcat
sudo systemctl status tomcat
33. 在 Tomcat 安裝位置,開啟 CATALINA_HOME/conf/web.xml。將以下內容新增到 web.xml 檔案來取代預設錯誤頁 (預設為堆疊追蹤)。將以下內容放到 web-app 標籤內 (在 welcome-file-list 標籤之後)。正確配置的 web 應用程式將會在 CATALINA_HOME/webapps/APP_NAME/WEB-INF/web.xml 中覆寫此預設,以防導致發生問題。
<error-page><exception-type>java.lang.Throwable</exception-type><location>/error.jsp</location></error-page>
34. 在 Tomcat 安裝位置,開啟 CATALINA_HOME/conf/server.xml。在 <Host> </Host> 標籤內新增下列項目:
<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" />
35. 移除位於 /<path_to_tomcat>/webapps/ 中的所有 Tomcat webapps。移除這些應用程式可防非必要存取 Tomcat,特別是在允許使用者檢視其他使用者 cookie 的前後關聯中。
36. PTC 強烈建議在執行 ThingWorx 時使用 TLS。如需有關設定 TLS 的詳細指示,請參閱此 技術支援文章
37. 如果您的應用程式需要特定加密套件,請參閱下列文件集以取得組態資訊:
配置 Ulimit 設定
以 "root" 使用者身分執行 Tomcat 應用程式伺服器處理程序會影響整體系統安全性,違反業界標準最佳作法。欲避免這一點,PTC 建議您修改 /etc/security/limits.d/80-nofiles.conf 檔案以包括用以執行應用程式伺服器之使用者的專屬設定。
組態檔案範例
下列組態是預設 Redhat 7.1 OS 組態的範例,該預設組態位於 /etc/security/limits.d/80-nofiles.conf,且內含所需變更。在下列範例中,thingworx 是應用程式伺服器的使用者名稱。

thingworx soft nofile 30720
thingworx hard nofile 30720
欲執行此變更,請登出然後再登入您的系統。
安裝 ThingWorx/PostgreSQL
2. PostgreSQL:請轉至 安裝並配置 PostgreSQL