安装和配置 > 安装 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. 下载 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.xmlManager 元素的备注,以防止在重新启动后保留会话:
<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 值设置为可用操作系统内存的 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.dtomcat8.5 文件,然后重新运行以下命令:
sudo systemctl enable tomcat8.5.service
41. 在 tomcat /bin 文件中创建名为 setenv.sh 的新文件:
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 文件来替换默认错误页面 (默认值为 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>
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 Web 应用程序。应移除这些应用程序以防止对 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