安装和升级 > 安装 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 文件中定义环境变量 (以 root 用户身份):
export JAVA_HOME=/usr/lib/jvm/jdk-11.x.x_xxx
export CATALINA_HOME=/usr/share/tomcat9.0/9.0.xx
14. 执行以下操作 (以 root 用户身份):
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. 按照说明完成证书创建过程:
设置 KeyStore 密码。
按提示设置您的安全证书。
将 tomcat9.0 的用户密码设置为与 KeyStore 密码相同。
$ 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 元素的备注,以防止在重新启动后保留会话。在文本编辑器中 (以 root 用户身份) 打开 /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 (以 root 用户身份)。在紧邻最后一行 (</tomcat-users>) 的上方添加以下行:
<user username="<Tomcat username> " password="<Tomcat password> " roles="manager,manager-gui"/>
26. 保存文件。
* 
包括的角色方便测试。如果出于安全性考虑,可以将这些角色移除。
27. 将 Tomcat 设置为开机自动启动服务。首先,如果您的系统尚未安装 JSVC,请 (以 root 用户身份) 进行构建:
$ 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 值设置为可用操作系统内存的 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
* 
如果在运行上述命令时出现任何权限错误,请 (以 root 用户身份) 执行下列操作:
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 以替换默认错误页面 (默认值为 stacktrace)。将以下内容置于 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 示例 webapps (docsexampleshost-managermanagerROOT)。移除这些应用程序可防止对 Tomcat 进行不必要的访问,特别是在允许用户查看其他用户 cookie 的情况下。
37. PTC 强烈建议在运行 ThingWorx 时使用 TLS。有关设置 TLS 的详细说明,请参阅本技术支持文章
38. 如果您的应用程序需要特定的密码套件,请参阅以下文档以了解配置信息:
配置 Ulimit 设置
以 "root" 用户身份运行 Tomcat 应用程序服务器进程会危及整个系统的安全,且不符合行业最佳实践。为避免这种情况,PTC 建议您修改 /etc/security/limits.d/80-nofiles.conf 文件,使其包括将运行该应用程序服务器的用户的特定设置。
配置文件示例
以下配置是位于 /etc/security/limits.d/80-nofiles.conf 的默认 Redhat OS 配置及所需更改的示例。在以下示例中,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 配置详细信息。有关设置密码的其他信息,请参阅密码
* 
请勿复制和粘贴以下示例,由此可能导致 plateform-settings.json 中的格式出错。请转而单击此处并从文件复制。

{
"PlatformSettingsConfig": {
"AdministratorUserSettings": {
"InitialPassword": "changeme"
}
}
}
* 
如果 Tomcat 无法启动,并报告错误消息:Check the InitialPassword setting in the AdministratorUserPassword section in platform-settings.json...,请检查以下内容:
plateform-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 配置详细信息
* 
如果您正在执行离线安装 (无 Internet 访问权限),则无需编辑 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://<servername>:<port>/Thingworx
15. 更改默认密码:
a. 在 Composer 中,选择“管理员”>“更改密码”
b. “更改密码”窗口中,输入“当前密码”“新密码”以及“确认密码”
* 
设置的密码应不易猜到,不应是已知的通用密码,建议密码长度至少为 14 个字符,并应同时包含大小写字母、数字和特殊字符。
c. 删除 plateform-settings.json 文件中的初始密码。
16. 选择“完成”
17. (可选步骤) 要确定您的许可状态,请在 Composer 中打开“监控”>“子系统”> “许可子系统设置”来确认许可中包括的功能列表 (获得许可的实体)。如果未出现获得许可的实体,则您正处于限时模式下。
这对您有帮助吗?