Установка Java, Apache Tomcat и ThingWorx
В приведенных ниже шагах замените xx или xxx номером сборки, которую вы используете.
* 
Копирование и вставка команд в этой процедуре могут привести к проблемам с форматированием. Если необходимо, выполняйте копирование и вставку в текстовом редакторе, чтобы минимизировать проблемы с форматированием.
1. Требования к версии см. в требованиях к системе ThingWorx.
2. Загрузите и установите файл JavaRPM.
9.0: Java
9.1 более поздние версии: OpenJDK или Java 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. Раскомментируйте элемент Manager в файле context.xml, чтобы предотвратить сохранение сессий при перезапусках. Откройте файл /usr/share/tomcat9.0/9.0.xx/conf/context.xml в текстовом редакторе (как привилегированный пользователь) и удалите символы ‘<!—‘ перед строкой ‘<Manager pathname="" />’ и символы ‘-->’ после нее.
24. Сохраните файл.
25. Определите пользователя Apache Manager в файле tomcat-users.xml. Откройте файл /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 (как привилегированный пользователь), если она еще не установлена в вашей системе.
$ 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 в текстовом редакторе (от имени пользователя root) и вставьте следующий код:
* 
В приведенном ниже примере задайте значения для -Xms и -Xmx как 75 % доступного объема памяти ОС (например, 12 ГБ для системы с ОЗУ 16 ГБ). Дополнительные сведения см. в разделе Настройка 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, чтобы заменить страницу ошибок по умолчанию (по умолчанию - stacktrace). Разместите в теге web-app (после тега welcome-file-list) следующее:
<error-page><exception-type>java.lang.Throwable</exception-type><location>/error.jsp</location></error-page>
Правильно сконфигурированное веб-приложение будет переопределять это значение по умолчанию в файле CATALINA_HOME/webapps/APP_NAME/WEB-INF/web.xmlCATALINA_HOME/conf/web.xml, поэтому оно не приведет к возникновению проблем.
34. В расположении установки Tomcat откройте файл CATALINA_HOME/conf/web.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 (docs, examples, host-manager, manager, ROOT) в папке /<путь_к_tomcat>/webapps/. Удаление этих приложений предотвращает нежелательный доступ к Tomcat, особенно в контексте, который позволит пользователям просматривать файлы cookie других пользователей.
37. PTC настоятельно рекомендует использовать TLS при выполнении ThingWorx. Подробные инструкции по настройке TLS см. в статье технической поддержки (на английском языке).
38. Если для приложения требуется специальный набор шифров, обратитесь к следующей документации для получения информации о конфигурации:
Конфигурирование настроек Ulimit
Выполнение процессов сервера приложений Tomcat с правами привилегированного пользователя ставит под угрозу безопасность всей системы и нарушает оптимальные промышленные методы. Во избежание этого PTC рекомендует изменить файл /etc/security/limits.d/80-nofiles.conf, чтобы включить настройки, специфичные для пользователя, который будет запускать серверы приложений.
Пример файла конфигурации
Следующая конфигурация представляет собой пример конфигурации ОС Redhat по умолчанию, размещенной в файле /etc/security/limits.d/80-nofiles.conf, с необходимыми изменениями. В следующем примере 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 в разделе Download Software (Загрузить ПО) > Order or Download Software Updates (Заказать или загрузить обновления ПО) > ThingWorx Foundation > Release X.X (Выпуск X.X) > ThingWorx PostgreSQL, ThingWorx Mssql, ThingWorx H2 или ThingWorx AzureSql > Most Recent Datecode (Самый последний код даты) > 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 не используется как база данных, перейдите к следующему шагу. Добавьте имя пользователя и пароль для H2 в файл platform-settings.json. Дополнительные сведения см. в разделе Сведения о конфигурации platform-settings.json.
* 
Для соединений ThingWorx с базой данных H2 требуются имя пользователя и пароль, определенные пользователем; в противном случае сервер не будет запущен. Эта конструкция полностью исключает любую потенциальную уязвимость, представленную в документе CVE-2018-10054.
},
"PersistenceProviderPackageConfigs":{
"H2PersistenceProviderPackage":{
"ConnectionInformation":
{
"password": "<addsecurepassword>",
"username": "twadmin"
}
},
7. Сконфигурируйте пароль администратора.
Добавьте раздел AdministratorUserSettings с паролем, имеющим длину не менее 14 символов, в раздел PlatformSettingsConfig файла 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, изменив их значения на истина, чтобы разрешить импорт расширений. Рекомендации по конфигурации см. в разделе Импорт расширений.
"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>"
}
}
}
* 
Если настройки заполнены неправильно или если серверу не удается установить соединение, текстовый файл запроса лицензии (licenseRequestFile.txt) создается в папке ThingworxPlatform. В этом сценарии лицензия должна быть создана вручную. Если лицензия не создана, ThingWorx будет запускаться в ограниченном режиме. Ограниченный режим не позволяет сохранять лицензируемые сущности в базе данных. К лицензируемым сущностям относятся вещи, мэшапы, мастеры, гаджеты, пользователи и поставщики хранилищ данных.
Дополнительные сведения о получении лицензии 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, в каталог Tomcat lib.
13. Запустите Tomcat.

$ sudo systemctl start tomcat
Убедитесь, что файл лицензий (successful_license_capability_response.bin) создан в папке ThingworxPlatform.
14. Чтобы запустить ThingWorx, перейдите в расположение http://<имя_сервера>:<порт>/Thingworx в веб-браузере.
15. Измените пароль по умолчанию:
a. В Composer выберите Администратор > Изменить пароль.
b. В окне Изменить пароль ведите Текущий пароль, Новый пароль и новый пароль в поле Подтвердите пароль.
* 
Рекомендуется использовать пароль, который не должен легко угадываться или узнаваться; обычный пароль должен иметь длину не менее 14 символов и состоять из смеси прописных и строчных букв, цифр и специальных символов.
c. Удалите начальный пароль из файла platform-settings.json.
16. Выберите Готово.
17. (НЕОБЯЗАТЕЛЬНЫЙ ШАГ) Чтобы определить статус вашей лицензии, откройте в Composer: Мониторинг > Подсистема > Настройки подсистемы лицензирования, чтобы подтвердить список компонентов (лицензируемых сущностей), включенных вместе с лицензией. Если лицензируемые сущности не присутствуют в списке, вы находитесь в ограниченном режиме.
Было ли это полезно?