安装和配置 > 安装 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 值设置为可用操作系统内存的 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. 在 Tomcat usr/share/tomcat8.5/8.5.xx/bin 文件中创建新的名为 setenv.sh 的文件:
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 文件来替换默认错误页面 (默认值为 stacktrace)。将以下内容置于 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 Web 应用程序。应移除这些应用程序以防止对 Tomcat 进行不必要的访问,特别是在允许用户查看其他用户 cookie 的情况下。
36. PTC 强烈建议在运行 ThingWorx 时使用 TLS。有关设置 TLS 的详细说明,请参阅本 技术支持文章
37. 如果您的应用程序需要特定的密码套件,请参阅以下文档以了解配置信息:
配置 Ulimit 设置
以“根”用户身份运行 Tomcat 应用程序服务器进程会危及整个系统的安全,且不符合行业标准的最佳实践。为避免这种情况,PTC 建议您修改 /etc/security/limits.d/80-nofiles.conf 文件以包含特定于要运行应用程序服务器的用户的设置。
配置文件示例
以下配置是位于 /etc/security/limits.d/80-nofiles.conf 的默认 Redhat 7.1 OS 配置及所需更改的示例。在以下示例中,thingworx 是应用程序服务器的用户的名称。

thingworx soft nofile 30720
thingworx hard nofile 30720
要提交此更改,请注销,然后再登录系统。
安装 ThingWorx/PostgreSQL
2. PostgreSQL:转至 安装和配置 PostgreSQL