安裝與組態 > 安裝 ThingWorx > Ubuntu 安裝 > PostgreSQL > 安裝 Java 與 Apache Tomcat (Ubuntu)
安裝 Java 與 Apache Tomcat (Ubuntu)
1. 如果您要針對您的資料庫使用 AzureSQL,請轉至 使用 Azure SQL Server 作為持續性提供者。執行該部份中的步驟來設定資料庫,並返回此部份。
2. 如果使用 MSSQL 作為資料庫,請轉至 將 MSSQL 用作持續性提供者 。執行該部份中的步驟來設定資料庫,並返回此部份。
3. 更新 Ubuntu 封裝:
$ sudo apt-get update
4. 安裝與配置網路時間通訊協定 (NTP) 設定以實現時間同步:
$ sudo apt-get install ntp
* 
NTP 的預設組態就已足夠。如需有關 NTP 的其他組態資訊 (超出此文件集範圍),請參閱下列資源:
5. 編輯 AUTHBIND 內容以允許 Tomcat 繫結至低於 1024 的埠:
$ sudo apt-get install authbind
6. 從 Oracle 的網站下載 Java JDK tar 檔案,或執行下列指令
wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz
7. 萃取 tar 檔案:
$ tar -xf jdk-8uxxx-linux-x64.tar.gz
8. 透過將 JDK 移至 /usr/lib/jvm 來建立目錄:
* 
如果目錄不為空,會顯示一則警告訊息。
$ sudo mkdir -p /usr/lib/jvm
$ sudo mv jdk1.8.0_xxx/ /usr/lib/jvm/
9. 將替代選項新增至系統:
$ sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.8.0_xxx/bin/java" 1
$ sudo update-alternatives --install "/usr/bin/keytool" "keytool" "/usr/lib/jvm/jdk1.8.0_xxx/bin/keytool" 1
10. 變更存取權限:
$ sudo chmod a+x /usr/bin/java
$ sudo chmod a+x /usr/bin/keytool
11. 變更擁有者:
$ sudo chown -R root:root /usr/lib/jvm/jdk1.8.0_xxx/
12. 配置主物件連結:
$ sudo update-alternatives --config java
$ sudo update-alternatives --config keytool
* 
Nothing to configure 為對此指令的正常回應,而不是錯誤。可以使用前面的一組步驟安裝 /usr/lib/jvm/jdk1.8.0_xxx/bin/ 中的其他可執行檔。
13. 核對 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 xx.xx-bxx, mixed mode)
14. Download Apache Tomcat:此流程中的此步驟使用 Tomcat 8.5.xx,其中 xx 會被取代為您正在使用的版本。
$ wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.xx/bin/apache-tomcat-8.5.xx.tar.gz
* 
最佳作法包括對每個發行版本使用簽名或加總核對碼來核對 Tomcat 檔案的完整性。如需詳細資訊,請參閱 Apache 的文件
15. 萃取 tar 檔案:
$ tar -xf apache-tomcat-8.5.xx.tar.gz
16. 建立及變更 /usr/share/tomcat8.5 的擁有者,並將 Tomcat 移至下列位置。將使用者和群組新增至系統:
$ sudo mkdir -p /usr/share/tomcat8.5
$ sudo mv apache-tomcat-8.5.xx /usr/share/tomcat8.5/8.5.xx
$ sudo addgroup --system tomcat8.5 --quiet -force-badname
$ sudo adduser --system --home /usr/share/tomcat8.5/ --no-create-home --ingroup tomcat8.5 --disabled-password --force-badname --shell /bin/false tomcat8.5
$ sudo chown -R tomcat8.5:tomcat8.5 /usr/share/tomcat8.5
17. /etc/environment 中定義環境變數:
$ export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_xxx
$ export CATALINA_HOME=/usr/share/tomcat8.5/8.5.xx
18. 將目錄變更為 $CATALINA_HOME
$ cd $CATALINA_HOME
19. 變更 bin/lib/webapps/ 的擁有者及存取權限:
$ sudo chown -Rh tomcat8.5:tomcat8.5 bin/ lib/ webapps/
$ sudo chmod 775 bin/ lib/ webapps/
20. 變更 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
21. 變更 conf/ 的擁有者及存取權限:
$ sudo chown -Rh root:tomcat8.5 conf/
$ sudo chmod -R 650 conf/
22. 變更 logs/temp/work/ 的存取權限:
$ sudo chown -R tomcat8.5:adm logs/ temp/ work/
$ sudo chmod 760 logs/ temp/ work/
23. 建立自我簽署的憑證:
$ sudo $JAVA_HOME/bin/keytool -genkey -alias tomcat8.5 -keyalg RSA -keystore $CATALINA_HOME/conf/.keystore
24. 請遵循指示來完成憑證建立流程。
設定金鑰庫密碼。
請遵照提示來設定您的安全性憑證。
將 tomcat8.5 使用者密碼設定為與金鑰庫密碼相同:
$ sudo chown root:tomcat8.5 $CATALINA_HOME/conf/.keystore
$ sudo chmod 640 $CATALINA_HOME/conf/.keystore
25. $CATALINA_HOME/conf/context.xml 中的 Manager 元素取消註解,以防止工作階段持續重新啟動:
<Manager pathname="" />
* 
基於安全性原因,如果預設未禁用 AJP 連接器,透過執行下列步驟完成此操作很重要。
26. 在 Tomcat 安裝位置,開啟 conf/server.xml,然後搜尋以下這行程式碼。如果找到,請為其加上註解並儲存檔案:
<Connector port ="8009" protocol="AJP/1.3" redirectPort="8443"/>
* 
在 Apache Tomcat 9.0 及更新版本中,rejectIllegalHeader 屬性預設為 true。PTC 不建議或支援手動修改 conf/web.xml 檔案,以將此屬性設定為 false。
如果您收到目錄不存在的錯誤,請使用下列指令來確保連接埠 443 正常運作:
sudo touch /etc/authbind/byport/443
sudo chmod 700 /etc/authbind/byport/443
sudo chown tomcat8.5:tomcat8.5 /etc/authbind/byport/443
27. $CATALINA_HOME/conf/tomcat-users.xml 中定義使用者:
sudo vi $CATALINA_HOME/conf/tomcat-users.xml
<user username="<Tomcat user name> " password="<Tomcat password> " roles="manager"/>
28. 確定 tomcat8.5 使用者的 uid:
$ id -u tomcat8.5
29. 使用此編號,在 /etc/authbind/byuid/ 中建立 ID 檔案:
* 
<uid> 變更為上一步中傳回的編號。
$ sudo touch /etc/authbind/byuid/<uid>
sudo vi /etc/authbind/byuid/<uid>
30. 編輯上述步驟中的檔案,並貼上下列內容:
0.0.0.0/0:1,1023
31. 變更 /etc/authbind/byuid/<uid> 的擁有者與存取權限:
$ sudo chown tomcat8.5:tomcat8.5 /etc/authbind/byuid/<uid>
$ sudo chmod 700 /etc/authbind/byuid/<uid>
32. $CATALINA_HOME/bin/startup.sh 修改為始終使用 authbind:
sudo vi $CATALINA_HOME/bin/startup.sh
為檔案中的下列內容加註解:
#exec "$PRGDIR"/"$EXECUTABLE" start "$@"
33. 將下列內容新增至檔案結尾:
exec authbind --deep "$PRGDIR"/"$EXECUTABLE" start "$@"
34. /etc/init.d 中,建立 tomcat8.5 檔案:
$ sudo touch /etc/init.d/tomcat8.5
35. 編輯該檔案,並輸入下列內容:
$ sudo vi /etc/init.d/tomcat8.5

CATALINA_HOME=/usr/share/tomcat8.5/8.5.xx
case $1 in
start)
/bin/su -p -s /bin/sh tomcat8.5 $CATALINA_HOME/bin/startup.sh
;;
stop)
/bin/su -p -s /bin/sh tomcat8.5 $CATALINA_HOME/bin/shutdown.sh
;;
restart)
/bin/su -p -s /bin/sh tomcat8.5 $CATALINA_HOME/bin/shutdown.sh
/bin/su -p -s /bin/sh tomcat8.5 $CATALINA_HOME/bin/startup.sh
;;
esac
exit 0
36. 變更 etc/init.d/tomcat8.5 的存取權限,並建立符號連結:
$ sudo chmod 755 /etc/init.d/tomcat8.5
$ sudo ln -s /etc/init.d/tomcat8.5 /etc/rc1.d/K99tomcat
$ sudo ln -s /etc/init.d/tomcat8.5 /etc/rc2.d/S99tomcat
37. 將 Tomcat 設定為在開機時啟動的服務。如果您的系統尚未安裝 JSVC,請先建構。如果已安裝,請跳過並轉至下一個步驟:
$ sudo apt-get install gcc
38. 開機時設定 Tomcat 服務:
$ 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 apt-get install make
$ sudo make
$ sudo cp jsvc ../..
39. 建立 Tomcat 服務檔案:
sudo touch /etc/systemd/system/tomcat8.5.service
40. 在文字編輯器中開啟 /etc/systemd/system/tomcat8.5.service (作為根):
sudo vi /etc/systemd/system/tomcat8.5.service
a. 在 Tomcat 服務檔案中貼上下列內容:
* 
在以下範例中,將 -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 -Dd64 -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
b. 如果 Tomcat 服務在重新開機後未自動啟動,而且您在執行 sudo systemctl enable tomcat8.5.service 時收到下列錯誤:
update-rc.d: error: tomcatx.x Default-Start contains no runlevels, aborting.
則需要執行下列步驟:
移除 /etc/init.d 中的 tomcat8.5 檔案,然後重新執行下列指令:
sudo systemctl enable tomcat8.5.service
41. 在名為 setenv.sh 的 tomcat /bin 檔案中建立新檔案:
cd $CATALINA_HOME/bin
sudo touch setenv.sh
sudo vi setenv.sh
CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/share/tomcat8.5/8.5.xx/webapps/Thingworx/WEB-INF/extensions"
42. 在 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>
43. 在 Tomcat 安裝位置,開啟 CATALINA_HOME/conf/server.xml。在 <Host> </Host> 標籤內新增下列項目:
<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" />
44. 移除位於 /<path_to_tomcat>/webapps/ 中的所有 Tomcat webapps。移除這些應用程式可防非必要存取 Tomcat,特別是在允許使用者檢視其他使用者 cookie 的前後關聯中。
45. PTC 強烈建議在執行 ThingWorx 時使用 TLS。如需有關設定 TLS 的詳細指示,請參閱此 技術支援文章
46. 如果您的應用程式需要特定加密套件,請參閱下列文件集以取得組態資訊:
47. (選用步驟) 欲增加影響靜態檔案快取的預設快取設定,請在 $CATALINA_HOME/conf/context.xml 檔案中的 <context></context> 標籤內新增以下這一行:
<Resources cacheMaxSize="501200" cacheObjectMaxSize="2048" cacheTtl="60000"/>
增加此設定可提升效能,並避免 Tomcat 中的下列訊息:
WARNING: Unable to add the resource at [/Common/jquery/jquery-ui.js] to the cache because there was insufficient free space available after evicting expired cache entries - consider increasing the maximum size of the cache
48. H2 和 Azure SQL:請轉至 安裝 ThingWorx
49. PostgreSQL:請轉至 安裝並配置 PostgreSQL