Java、Apache Tomcat、および ThingWorx のインストール
以下の手順では、xx または xxx を、使用するビルド番号と置き換えてください。
* 
この手順で示されているコマンドをコピーして貼り付けると、フォーマットの問題が発生する場合があります。必要に応じて、テキストエディタにコピーして貼り付けることで、フォーマットの問題が最小限に抑えられます。
1. バージョン要件については、ThingWorx の「システム要件」を参照してください。
2. JavaRPM ファイルをダウンロードしてインストールします。
9.0: Java
9.1 以降: OpenJDK または Java 11
3. Java インストーラを実行します。
* 
(ThingWorx 9.2 以降ではサポートされていない) 一部の JDK 8 ビルドでは、ファイル名は 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 alternatives を設定します。
$ 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 ファイルで環境変数を定義します (ルートユーザーとして)。
export JAVA_HOME=/usr/lib/jvm/jdk-11.x.x_xxx
export CATALINA_HOME=/usr/share/tomcat9.0/9.0.xx
14. 以下を実行します (ルートユーザーとして)。
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. 次の手順に従って、証明書作成プロセスを実行します。
キーストアのパスワードを設定します。
プロンプトに従って、セキュリティ証明書を設定します。
tomcat9.0 のユーザーパスワードには、キーストアのパスワードと同じものを設定します。
$ 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.xmlManager エレメントをコメント解除して、セッションが再起動をまたいで永続化しないようにします。テキストエディタで /usr/share/tomcat9.0/9.0.xx/conf/context.xml を (ルートとして) 開き、‘<Manager pathname="" />’ の前の ‘<!—‘ と後ろの ‘-->’ を除去します。
24. ファイルを保存します。
25. tomcat users.xml で Apache Manager のユーザーを定義します。テキストエディタで、/usr/share/tomcat9.0/9.0.xx/conf/tomcat-users.xml を (ルートとして) 開きます。最後の行 (</tomcat-users>) のすぐ上に次の行を追加します。
<user username="<Tomcat username> " password="<Tomcat password> " roles="manager,manager-gui"/>
26. ファイルを保存します。
* 
ここに含まれるロールはテストしやすくするためのものです。セキュリティが問題になる場合は除去できます。
27. Tomcat をサービスとして設定して起動します。JSVC がシステムにインストールされていない場合は、最初にこれを構築します (ルートとして)。
$ 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 の値を、使用可能な 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/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
* 
上記のコマンドを実行しているときにアクセス許可エラーが発生した場合、以下のコマンドを実行します (ルートとして)。
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 を開き、デフォルトのエラーページ (デフォルトはスタックトレース) を置き換えます。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 に設定されています。conf/web.xml ファイルを手動で修正してこの属性を false に設定することは、PTC によって推奨されておらず、サポートもされていません。
36. /<Tomcat へのパス>/webapps/ にある Tomcat サンプル Web アプリケーション (docsexampleshost-managermanagerROOT) をすべて除去します。これらのアプリケーションを除去することで、ユーザーにほかのユーザーの cookie の閲覧を許可する場合は特に、Tomcat への不必要なアクセスを防止できます。
37. ThingWorx を実行する際には TLS を使用することを強くお勧めします。TLS の設定方法については、このテクニカルサポートのアーティクルを参照してください。
38. お使いのアプリケーションが特定の暗号化スイートを必要とする場合、設定情報については以下のドキュメンテーションを参照してください。
Ulimit 設定の設定
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」 > 「Release X.X」 > 「ThingWorx PostgreSQL」「ThingWorx Mssql」「ThingWorx H2」、または「ThingWorx 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.jsonThingworxPlatform フォルダに配置します。
* 
H2 を使用している場合、ダウンロードに含まれていないので、platform-settings.json ファイルを作成する必要があります。
6. データベースとして H2 を使用している場合は、この手順を実行します。データベースとして H2 を使用していない場合は、次の手順に進みます。H2 のユーザー名とパスを platform-settings.json ファイルに追加します。詳細については、「platform-settings.json コンフィギュレーションの詳細」を参照してください。
* 
H2 データベースへの ThingWorx 接続にはユーザーが定義したユーザー名とパスワードが必要です。これを指定しない場合、サーバーは起動しません。この設計は CVE-2018-10054 に記載されていいる潜在的な脆弱性を十分に軽減します。
},
"PersistenceProviderPackageConfigs":{
"H2PersistenceProviderPackage":{
"ConnectionInformation":
{
"password": "<addsecurepassword>",
"username": "twadmin"
}
},
7. 管理者パスワードを設定します。
以下の AdministratorUserSettings セクション (PlatformSettingsConfig 内) を、少なくとも 14 文字の長さのパスワードとともに、platform-settings.json ファイルに追加します。配置の詳細については、「platform-settings.json コンフィギュレーションの詳細」を参照してください。パスワードの設定については、パスワードを参照してください。
* 
下に示すサンプルをコピーして貼り付けることはしないでください。お使いの platform-settings.json にフォーマットが適さない場合があります。代わりに、ここをクリックしてファイルからコピーしてください。

{
"PlatformSettingsConfig": {
"AdministratorUserSettings": {
"InitialPassword": "changeme"
}
}
}
* 
Tomcat の起動に失敗し、Check the InitialPassword setting in the AdministratorUserPassword section in platform-settings.json... というエラーメッセージがレポートされた場合は、以下を確認します。
platform-settings.json にパスワード設定が存在していること。
パスワードが有効であること (デフォルトで 14 文字以上)。
platform-settings.json ファイルのフォーマットが正しいこと。フォーマットが正しくない場合、エラーが発生する可能性があります。
8. 拡張機能のインポートを有効にします。デフォルトでは、すべてのユーザーで拡張機能のインポートが無効になっています。
platform-settings.json ファイルの PlatformSettingsConfig の下に以下を追加します。以下の 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 コンフィギュレーションの詳細」を参照してください。
* 
切断されたインストール (インターネットアクセスなし) を実行する場合は、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 は制限されたモードで起動します。制限されたモードでは、ライセンスエンティティをデータベースに永続化できません。ライセンスエンティティとは Thing、マッシュアップ、マスター、ガジェット、ユーザー、永続化プロバイダのことです。
PTC のライセンス管理サイトから ThingWorx の切断されたサイトのライセンスを入手する方法については、「ThingWorx Platform のライセンス」の (PTC サポートポータルとは接続されていない) 切断されたサイトについての説明を参照してください。この状況では、ライセンスファイルが手動で生成された場合、名前を license_capability_response.bin に変更して ThingworxPlatform フォルダに配置する必要があります。
* 
ライセンスのトラブルシューティングについては、このサポートアーティクルを参照してください。
11. パスワードの暗号化の手順に従って、ライセンスサーバーのパスワードを暗号化します。
12. データベースとして Azure SQL を使用している場合、次の手順に従って JDBC ドライバーをダウンロードします。Azure SQL を使用していない場合は、この手順をスキップします。
a. Azure ポータルに移動し、ThingWorx データベースにアクセスします。
b. 「Connection strings」を選択します。
c. 「JDBC」タブを選択します。
d. 「Download 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
ライセンスファイル (successful_license_capability_response.bin) が ThingworxPlatform フォルダに作成されたことを確認します。
14. ThingWorx を起動するには、Web ブラウザで http://<サーバー名>:<ポート>/Thingworx に移動します。
15. デフォルトのパスワードを変更します。
a. Composer で、「管理者」 > 「パスワードを変更」の順に選択します。
b. 「パスワードを変更」ウィンドウで、「現在のパスワード」「新しいパスワード」「パスワードの確認」を入力します。
* 
パスワードは、簡単に推測または認知できるもの (一般的なパスワード) にしないでください。長さは 14 文字以上が推奨され、大文字と小文字、数字、特殊文字を組み合わせます。
c. 最初のパスワードを platform-settings.json ファイルから削除します。
16. 「終了」を選択します。
17. (オプションの手順) ライセンスのステータスを確認するには、Composer で、「監視」 > 「サブシステム」 > 「ライセンスサブシステムの設定」を開き、ライセンスに含まれる機能 (ライセンスエンティティ) のリストを確認します。ライセンスエンティティが存在しない場合は、制限されたモードにいます。
これは役に立ちましたか?