安裝與升級 > 安裝 ThingWorx > 手動安裝 > RHEL 安裝 > 安裝 Java、Apache Tomcat 與 ThingWorx
安裝 Java、Apache Tomcat 與 ThingWorx
在下面的步驟中,使用您所使用的版次編號取代 xxxxx
* 
在此程序中複製並貼上指令可能會導致格式發生問題。如有必要,請複製並貼上到文字編輯器中以最大程度減少格式問題。
1. 如需有關版本需求的資訊,請參閱 ThingWorx 系統需求
2. 下載並安裝 JavaRPM 檔案。
9.0:Java
9.1 及更新版本:OpenJDKJava 11
3. 執行 Java 安裝程式:
* 
針對某些 JDK 8 版次 (ThingWorx 9.2 及更新版本中不支援),檔案名稱將類似于 jdk1.8.0_xxx-amd64。下列範例使用 jdk-11.x.x,但如有必要,請以您使用的版本取代。
sudo rpm -i jdk-11.x.x_linux-x64_bin.rpm
4. 建立資料夾並移動 JDK:
$ sudo mkdir -p /usr/lib/jvm
$ sudo mv /usr/java/jdk-11.x.x/ /usr/lib/jvm/
5. 設定 Java 替代選項:
$ sudo alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-11.x.x/bin/java 1
$ sudo alternatives --install /usr/bin/keytool keytool /usr/lib/jvm/jdk-11.x.x/bin/keytool 1
6. 變更存取權限:
$ sudo chmod a+x /usr/bin/java
$ sudo chmod a+x /usr/bin/keytool
如果您收到錯誤,請使用下列指令:
$ sudo chmod -f a+x /usr/bin/keytool
7. 變更擁有者:
$ sudo chown -R root:root /usr/lib/jvm/jdk-11.x.x/
8. 配置主物件連結:
$ sudo alternatives --config java
選取包含 /usr/lib/jvm/jdk-11.x.x/bin/java 的選項
$ sudo rm /usr/java/latest
$ sudo ln -s /usr/lib/jvm/jdk-11.x.x /usr/java/latest
$ sudo ln -s /usr/lib/jvm/jdk-11.x.x/bin/keytool /usr/bin/keytool
如果您收到 File Exists 錯誤,請略過並繼續。
$ sudo alternatives --config keytool
9. 核對 Java 版本。您的版本可能不是下列範例中的版本:
$ java -version
java version "11.0.9" 2020-10-20 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.9+7-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.9+7-LTS, mixed mode)
10. 安裝 Tomcat。下載 Tomcat 安裝程式。此流程中的步驟使用 Tomcat 9.0.xx,其中 xx 會取代為您正在使用的版本。
$ wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.xx/bin/apache-tomcat-9.0.xx.tar.gz
* 
最佳作法包括對每個發行版本使用簽名或加總核對碼來核對 Tomcat 檔案的完整性。如需詳細資訊,請參閱 Apache 的文件
11. 萃取內容:
$ tar -xf apache-tomcat-9.0.xx.tar.gz
12. 將 Tomcat 移至 /usr/share/tomcat9.0
$ sudo mkdir -p /usr/share/tomcat9.0
$ sudo mv apache-tomcat-9.0.xx /usr/share/tomcat9.0/9.0.xx
13. /etc/environment 檔案中定義環境變數 (以根使用者身分):
export JAVA_HOME=/usr/lib/jvm/jdk-11.x.x_xxx
export CATALINA_HOME=/usr/share/tomcat9.0/9.0.xx
14. 執行下列指令 (以根使用者身分):
source /etc/environment
15. 將資料夾變更為 /usr/share/tomcat9.0/9.0.xx
$ cd /usr/share/tomcat9.0/9.0.xx
16. 將使用者和群組新增至系統:
$ sudo groupadd -r tomcat9.0
$ sudo useradd -r -d /usr/share/tomcat9.0 -g tomcat9.0 -s /bin/false tomcat9.0
$ sudo chown -R tomcat9.0:tomcat9.0 /usr/share/tomcat9.0
17. 變更 bin/lib/webapps/ 的擁有者及存取權限:
$ sudo chown -Rh tomcat9.0:tomcat9.0 bin/ lib/ webapps/
$ sudo chmod 775 bin/ lib/ webapps/
18. 變更 usr/share/tomcat9.0/9.0.xx 的擁有者與存取權限:
$ sudo chown -R tomcat9.0:tomcat9.0 /usr/share/tomcat9.0/9.0.xx
$ sudo chmod -R 775 /usr/share/tomcat9.0/9.0.xx
19. 變更 conf/ 的擁有者及存取權限:
$ sudo chown -Rh root:tomcat9.0 conf/
$ sudo chmod -R 640 conf
$ sudo chown -R tomcat9.0:tomcat9.0 /usr/share/tomcat9.0/9.0.xx
$ sudo chmod -R 777 /usr/share/tomcat9.0/9.0.xx
若要使生產系統增加作業系統層級上的安全性,應重新檢閱權限及擁有權。
20. 變更 logs/temp/work/ 的存取權限:
$ sudo chown -R tomcat9.0:adm logs/ temp/ work/
$ sudo chmod 760 logs/ temp/ work/
21. 建立自我簽署的憑證:
$ /usr/lib/jvm/jdk-11.x.x_xxx/jre/bin/keytool -genkey -alias tomcat9.0 -keyalg RSA
22. 請遵循指示來完成憑證建立流程:
設定金鑰庫密碼。
請遵照提示來設定您的安全性憑證。
將 tomcat9.0 使用者密碼設定為與金鑰庫密碼相同。
$ sudo cp ~/.keystore /usr/share/tomcat9.0/9.0.xx/conf/
$ sudo chown root:tomcat9.0 /usr/share/tomcat9.0/9.0.xx/conf/.keystore
$ sudo chmod 640 /usr/share/tomcat9.0/9.0.xx/conf/.keystore
23. context.xml 中的 Manager 元素取消註解,以防止工作階段持續重新啟動。在文字編輯器中開啟 /usr/share/tomcat9.0/9.0.xx/conf/context.xml (以根身分),並移除 ‘<Manager pathname="" />’ 前的 ‘<!—‘ ,然後移除 ‘-->’
24. 儲存檔案。
25. tomcat-users.xml 中定義 Apache 管理員使用者。在文字編輯器中開啟 /usr/share/tomcat9.0/9.0.xx/conf/tomcat-users.xml (以根身分)。在最後一行 (</tomcat-users>) 的正上方添加以下行:
<user username="<Tomcat username> " password="<Tomcat password> " roles="manager,manager-gui"/>
26. 儲存檔案。
* 
包括的角色是為了便於測試。如果重視安全性,可以將這些角色移除。
27. 將 Tomcat 設定為在開機時啟動的服務。首先,如果您的系統尚未安裝 JSVC,請先建構 (以根身分):
$ sudo yum install gcc
$ cd /usr/share/tomcat9.0/9.0.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 ../..
28. 建立 Tomcat 服務檔案:
$ sudo touch /usr/lib/systemd/system/tomcat.service
29. 在文字編輯器中開啟 /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/jdk-11.x.x_xxx
Environment=CATALINA_HOME=/usr/share/tomcat9.0/9.0.xx
Environment=CATALINA_BASE=/usr/share/tomcat9.0/9.0.xx
Environment=CATALINA_OPTS=

ExecStart=/usr/share/tomcat9.0/9.0.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 -Dlog4j2.formatMsgNoLookups=true\
-Xms=<75% of available OS memory> \
-Xmx=<75% of available OS memory> \
-Djava.library.path=${CATALINA_BASE}/webapps/Thingworx/WEB-INF/extensions \
-cp ${CATALINA_HOME}/bin/commons-daemon.jar:${CATALINA_HOME}/bin/bootstrap.jar:${CATALINA_HOME}/bin/tomcat-juli.jar \
-user tomcat9.0 \
-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
30. 如果您是第一次安裝 ThingWorx Platform,應將 Java 選項 -Duser.timezone=UTC 新增至上方 ExecStart 區塊中緊隨以 -Djava.library.path 開頭的一行之後。UTC 時區不會辨識日光節約時間。設定此選項可防止在發生日光節約時間變更時覆寫資料。
31. 在 Tomcat usr/share/tomcat9.0/9.0.xx/bin 檔案中建立名為 setenv.sh 的新檔案,然後將下列內容新增至檔案:
CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/share/tomcat9.0/9.0.xx/webapps/Thingworx/WEB-INF/extensions"
32. 將 Tomcat 設定為在系統啟動時執行:
$ sudo systemctl daemon-reload
$ sudo systemctl enable tomcat.service
* 
如果您在執行上述指令時發生任何權限錯誤,請執行下列指令 (以根身分):
ausearch -c '(jsvc)' --raw | audit2allow -M my-jsvc
semodule -i my-jsvc.pp
/sbin/restorecon -v /usr/share/tomcat9.0/9.x.xx/bin/jsvc
這將允許使用者使用下列指令來控制 Tomcat 服務:
sudo systemctl start tomcat
sudo systemctl stop tomcat
sudo systemctl restart tomcat
sudo systemctl status tomcat
33. 在 Tomcat 安裝位置,開啟 CATALINA_HOME/conf/web.xml 以取代預設錯誤頁 (預設為堆疊追蹤)。將下列內容置於 web-app 標籤中 (在 welcome-file-list 標籤之後):
<error-page><exception-type>java.lang.Throwable</exception-type><location>/error.jsp</location></error-page>
正確配置的 web 應用程式將會在 CATALINA_HOME/webapps/APP_NAME/WEB-INF/web.xml 中覆寫此預設,以防導致發生問題。
34. 在 Tomcat 安裝位置,開啟 CATALINA_HOME/conf/server.xml。在 <Host> </Host> 標籤內新增下列項目:
<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" />
* 
基於安全性原因,如果預設未禁用 AJP 連接器,透過執行下列步驟完成此操作很重要。
35. 在 Tomcat 安裝位置,開啟 conf/server.xml,然後搜尋以下這行程式碼。如果找到,請為其加上註解並儲存檔案:
<Connector port ="8009" protocol="AJP/1.3" redirectPort="8443"/>
* 
在 Apache Tomcat 9.0 及更新版本中,rejectIllegalHeader 屬性預設為 true。PTC 不建議或支援手動修改 conf/web.xml 檔案,以將此屬性設定為 false。
36. 移除 /<path_to_tomcat>/webapps/ 中的所有 Tomcat 範例 webapp (docsexampleshost-managermanagerROOT)。移除這些應用程式可防非必要存取 Tomcat,特別是在可允許使用者檢視其他使用者 cookie 的前後關聯中。
37. PTC 強烈建議在執行 ThingWorx 時使用 TLS。如需有關設定 TLS 的詳細指示,請參閱此技術支援文章
38. 如果您的應用程式需要特定加密套件,請參閱下列文件集以取得組態資訊:
配置 Ulimit 設定
以 "root" 使用者身分執行 Tomcat 應用程式伺服器處理程序會影響整體系統安全性,違反業界最佳作法。為了避免發生這種情況,PTC 建議您修改 /etc/security/limits.d/80-nofiles.conf 檔案,以包含將執行應用程式伺服器之使用者的特有設定。
組態檔案範例
下列組態是預設 Redhat OS 組態的範例,該預設組態位於 /etc/security/limits.d/80-nofiles.conf,且內含所需變更。在下列範例中,thingworx 是應用程式伺服器的使用者名稱。

thingworx soft nofile 30720
thingworx hard nofile 30720
欲執行此變更,請登出然後再登入您的系統。
安裝 ThingWorx
1. 建立 /ThingworxStorage /ThingworxBackupStorage/ThingworxPlatform 目錄。
$ sudo mkdir /ThingworxStorage /ThingworxBackupStorage /ThingworxPlatform
2. 變更 /ThingworxPlatform、/ThingworxStorage/ThingworxBackupStorage 的擁有者與存取權限。如果沒有這些權限,伺服器將無法啟動。
$ sudo chown tomcat9.0:tomcat9.0 /ThingworxStorage /ThingworxBackupStorage /ThingworxPlatform
$ sudo chmod 775 /ThingworxStorage /ThingworxBackupStorage /ThingworxPlatform
3. 針對您使用的資料庫,取得適當的 Thingworx.war 檔案。最新的 ThingWorx 下載發佈在 support.ptc.com 中的「下載軟體」>「訂購或下載軟體更新」> ThingWorx Foundation >「X.X 發行版本」> ThingWorx PostgreSQLThingWorx MssqlThingWorx H2ThingWorx AzureSql >「最新日期代碼」> ThingWorx-Platform-<資料庫類型>-<版本>
4. Thingworx.war 移至 $CATALINA_HOME/webapps
$ sudo mv Thingworx.war $CATALINA_HOME/webapps
$ sudo chown tomcat9.0:tomcat9.0 $CATALINA_HOME/webapps/Thingworx.war
$ sudo chmod 775 $CATALINA_HOME/webapps/Thingworx.war
5. platform-settings.json 放置在 ThingworxPlatform 資料夾中。
* 
如果您要使用 H2,必須建立 platform-settings.json 檔案,因其並不包含在下載中。
6. 如果您要使用 H2 作為資料庫,請執行此步驟。如果您未將 H2 作為資料庫使用,請轉至下一個步驟。在 platform-settings.json 檔案中新增 H2 的使用者名稱與密碼。如需詳細資訊,請參閱 platform-settings.json 組態詳細資訊
* 
ThingWorx 與 H2 資料庫的連線需要使用者定義的使用者名稱與密碼,否則伺服器將不會啟動。此設計完全降低了CVE-2018-10054 所表示的任何潛在弱點。
},
"PersistenceProviderPackageConfigs":{
"H2PersistenceProviderPackage":{
"ConnectionInformation":
{
"password": "<addsecurepassword>",
"username": "twadmin"
}
},
7. 配置管理員密碼。
將下列 AdministratorUserSettings 區段 (在 PlatformSettingsConfig 中) 新增至您的 platform-settings.json 檔案,並設定長度至少為 14 個字元的密碼。如需有關放置的詳細資訊,請參閱 platform-settings.json 組態詳細資訊。如需有關設定密碼的其他資訊,請參閱密碼
* 
請勿複製並貼上下列範例,因為它可能導致 platform-settings.json 中的格式錯誤。相反,請按一下此處並從檔案進行複製。

{
"PlatformSettingsConfig": {
"AdministratorUserSettings": {
"InitialPassword": "changeme"
}
}
}
* 
如果 Tomcat 無法啟動,並報告錯誤訊息:Check the InitialPassword setting in the AdministratorUserPassword section in platform-settings.json...,請檢查下列內容:
密碼設定存在於 platform-settings.json 中。
密碼有效 (依預設為 14 個或更多字元)。
platform-settings.json 檔案格式是否正確。格式錯誤會導致發生錯誤。
8. 啟用延伸功能匯入。依預設,延伸功能匯入針對所有使用者皆為禁用。
將下列內容新增到 PlatformSettingsConfig 下的 platform-settings.json 檔案中。將下列 ExtensionPackageImportPolicy 參數更新為 true 以允許匯入延伸功能。如需組態的最佳作法,請參閱匯入延伸功能
"ExtensionPackageImportPolicy": {
"importEnabled": <true or false>,
"allowJarResources": <true or false>,
"allowJavascriptResources": <true or false>,
"allowCSSResources": <true or false>,
"allowJSONResources": <true or false>,
"allowWebAppResources": <true or false>,
"allowEntities": <true or false>,
"allowExtensibleEntities": <true or false>
},
9. 如果您不是針對資料庫使用 H2,請轉至資料庫安裝與組態來設定您的資料庫。在配置資料庫之後返回到下一個步驟。如果您使用的是 H2,請繼續下一步。
10. 配置授權:
開啟 platform-settings.json 檔案,然後將下列內容新增至 PlatformSettingsConfig 區段。如需有關放置的詳細資訊,請參閱 platform-settings.json 組態詳細資訊
* 
如果您執行的是已中斷連線的安裝 (無網際網路存取),則不需要編輯 platform-settings.json 檔案。如需已中斷連線的網站,請參閱授權 ThingWorx Platform,並略過此步驟。
{
"PersistenceProviderPackageConfigs": {
"PostgresPersistenceProviderPackage": {
"ConnectionInformation": {
"jdbcUrl": "jdbc:postgresql://localhost:5432/thingworx",
"password": "<password>",
"username": "<username>"
}
}
},
"PlatformSettingsConfig": {
"LicensingConnectionSettings": {
"username":"<PTC_support_portal_username>",
"password":"<PTC_support_portal_password>"
}
}
}
* 
如果設定填寫錯誤或伺服器無法連線,則會在 ThingworxPlatform 資料夾中建立授權請求文字檔案 (licenseRequestFile.txt)。在此情況下,必須手動建立授權。如果未建立授權,ThingWorx 將在限制模式下啟動。限制模式下不允許您將授權的實體保存至資料庫。授權的實體是物件、混搭、主物件、小工具、使用者和持續性提供者。
如需有關透過授權管理網站取得 ThingWorx 已中斷連線網站授權的詳細資訊,請參閱已中斷連線網站 (未連線至 PTC 支援入口網站) 的授權 ThingWorx Platform。在此情況下,如果手動產生授權檔案,必須將其重新命名為 license_capability_response.bin,並放在 ThingworxPlatform 資料夾中。
* 
如需授權疑難排解,請參閱此支援文章
11. 依照加密密碼中的步驟加密授權伺服器密碼。
12. 如果您使用 Azure SQL 作為資料庫,請遵循下列步驟下載 JDBC 驅動程式。如果您不使用 Azure SQL,請略過此步驟。
a. 轉至 Azure 入口網站,並導覽至您的 ThingWorx 資料庫。
b. 選取「連接字串」
c. 選取 JDBC 標籤。
d. 選取「下載 Microsoft JDBC Driver for SQL Server」
e. 選取 Microsoft JDBC Driver 6.0 for SQL Server
f. 將 ThingWorx VM 中的已下載二進位檔案解壓縮並複製到 Tomcat lib 目錄中。
13. 啟動 Tomcat。

$ sudo systemctl start tomcat
請核對是否在 ThingworxPlatform 資料夾中建立了授權檔案 (successful_license_capability_response.bin)。
14. 欲啟動 ThingWorx,請在 Web 瀏覽器中轉至 http://<伺服器名稱>:<埠>/Thingworx
15. 變更預設密碼:
a. 在 Composer 中,選取「管理員」>「變更密碼」
b. 「變更密碼」視窗中,輸入「目前密碼」「新密碼」「確認密碼」
* 
密碼應不易猜測,也不應為已知的通用密碼,建議其長度應至少為 14 個字元,其中包含大寫與小寫字母、數字和特殊字元的混合。
c. platform-settings.json 檔案中刪除初始密碼。
16. 選取「完成」
17. (選用步驟) 欲確定授權狀況,請在 Composer 中開啟「監視」>「子系統」>「授權子系統設定」以確認包含在授權中的功能 (授權實體) 清單。如果不存在授權實體,您將處於限制模式。
這是否有幫助?