インストールおよび設定 > 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 (Network Time Protocol) をインストールして設定します。
$ sudo apt-get install ntp
* 
NTP はデフォルトのコンフィギュレーションで十分です。NTP に関するその他のコンフィギュレーション情報 (このドキュメントの範囲外) については、次のリソースを参照してください。
5. AUTHBIND プロパティを編集して、Tomcat が 1024 より下のポートにバインドできるようにします。
$ sudo apt-get install authbind
6. Oracle の Web サイトから 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. システムに alternatives を追加します。
$ 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 に設定されています。conf/web.xml ファイルを手動で修正してこの属性を false に設定することは、PTC によって推奨されておらず、サポートもされていません。
ディレクトリが存在しないというエラーを受け取った場合は、次のコマンドを使用してポート 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 がシステムにインストールされていない場合は構築します。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. 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 ファイルに追加することで、デフォルトのエラーページ (デフォルトはスタックトレース) を置き換えます。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. /<Tomcat へのパス>/webapps/ にあるすべての Tomcat Web アプリケーションを除去します。これらのアプリケーションを除去することで、ユーザーにほかのユーザーの cookie の閲覧を許可する場合は特に、Tomcat への不必要なアクセスを防止できます。
45. 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 のインストールと設定に進みます。