Перейти к основному содержимому

Руководство по приложению Tomcat Manager

· 11 мин. чтения

1. Введение

В этом руководстве мы подробно рассмотрим приложение Tomcat Manager.

В двух словах, приложение Tomcat Manager — это веб-приложение, упакованное с сервером Tomcat и предоставляющее нам базовые функции, необходимые для управления нашими развернутыми веб-приложениями.

Как мы увидим, приложение имеет множество функций и сервисов. Помимо возможности управлять развернутыми приложениями, мы также можем видеть состояние и конфигурацию сервера и его приложений.

2. Установка Томкэт

Прежде чем мы углубимся в приложение Tomcat Manager, нам сначала нужно установить сервер Tomcat.

К счастью, установка Tomcat — простой процесс. Пожалуйста, обратитесь к нашему руководству Introduction to Apache Tomcat , чтобы получить помощь по установке Tomcat. В этом руководстве мы будем использовать последнюю версию Tomcat 9 .

3. Доступ к приложению Tomcat Manager

Теперь давайте посмотрим, как использовать приложение Tomcat Manager. Здесь у нас есть два варианта — мы можем использовать веб-приложение (HTML) или текстовую веб-службу.

Текстовый сервис идеально подходит для написания сценариев, тогда как HTML-приложение предназначено для людей.

Веб -приложение доступно по адресу:

  • http[s]://<сервер>:<порт>/manager/html/

Пока соответствующий текстовый сервис доступен по адресу:

  • http[s]://<сервер>:<порт>/менеджер/текст/

Однако, прежде чем мы сможем получить доступ к этим службам, нам нужно настроить Tomcat. По умолчанию к нему могут получить доступ только пользователи с правильными разрешениями.

Давайте добавим таких пользователей, отредактировав файл conf/tomcat-users :

<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcatgui" password="s3cret" roles="manager-gui"/>
<user username="tomcattext" password="foreach" roles="manager-script"/>
</tomcat-users>

Как мы видим, мы добавили двух новых пользователей:

  • tomcatgui — имеет роль менеджера графического интерфейса пользователя и может использовать веб-приложение.
  • tomcattext — имеет роль сценария-менеджера и может использовать текстовый веб-сервис.

В следующем разделе мы увидим, как мы можем использовать этих двух пользователей для демонстрации возможностей приложения Tomcat Manager.

4. Список развернутых приложений

В этом разделе мы узнаем, как просмотреть список развернутых в данный момент приложений.

4.1. Использование Интернета

Давайте откроем http://localhost:8080/manager/html/ , чтобы просмотреть веб-страницу приложения Tomcat Manager. Для этого нам нужно аутентифицироваться как пользователь tomcatgui .

После входа в систему веб-страница перечисляет все развернутые приложения в верхней части страницы. Для каждого приложения мы можем видеть, запущено оно или нет, контекстный путь и количество активных сеансов. Есть также несколько кнопок, которые мы можем использовать для управления приложениями:

./c1c893eb6b55d10682130e2cf4e2c9d2.png

4.2. Использование текстового сервиса

В качестве альтернативы мы можем перечислить все развернутые приложения с помощью текстовой веб-службы. На этот раз мы делаем запрос curl , используя пользователя tomcattext для аутентификации:

curl -u tomcattext:foreach http://localhost:8080/manager/text/list

Как и на веб-странице, ответ показывает все развернутые приложения с их текущим состоянием и количеством активных сеансов. Например, мы можем видеть, что приложение- менеджер запущено и имеет один активный сеанс:

OK - Listed applications for virtual host [localhost]
/:running:0:ROOT
/examples:running:0:examples
/host-manager:running:0:host-manager
/manager:running:1:manager
/docs:running:0:docs

5. Управление приложениями

Одной из ключевых функций, которую позволяет нам выполнять приложение Tomcat Manager, является остановка, запуск и перезагрузка приложений.

5.1. Использование Интернета

В случае веб-приложения остановка и запуск приложений — это просто нажатие кнопок на веб-странице. Результат и любые проблемы сообщаются в поле сообщения в верхней части страницы.

5.2. Использование текстового сервиса

Точно так же мы можем останавливать и запускать приложения с помощью текстового сервиса. Давайте остановимся, а затем запустим приложение примеров , используя запрос curl :

curl -u tomcattext:foreach http://localhost:8080/manager/text/stop?path=/examples
OK - Stopped application at context path [/examples]
curl -u tomcattext:foreach http://localhost:8080/manager/text/start?path=/examples
OK - Started application at context path [/examples]

Параметр запроса пути указывает, каким приложением управлять, и должен соответствовать контекстному пути приложения.

Мы также можем перезагружать приложения, чтобы принять изменения в классах или ресурсах. Однако это работает только для приложений, которые распакованы в каталог, а не развернуты как файлы WAR.

Вот пример того, как мы можем перезагрузить приложение docs с помощью текстового сервиса:

curl -u tomcattext:foreach http://localhost:8080/manager/text/reload?path=/docs
OK - Reloaded application at context path [/docs]

Помните, однако, что нам нужно только нажать кнопку перезагрузки, чтобы добиться того же в веб-приложении.

6. Истекающие сеансы

Помимо управления приложениями, мы можем управлять сессиями пользователей . Приложение Tomcat Manager показывает подробную информацию о текущих пользовательских сеансах и позволяет нам вручную завершать сеансы.

6.1. Через веб-интерфейс

Мы можем просмотреть текущие сеансы пользователей, перейдя по ссылке в столбце « Сеансы » для всех перечисленных приложений.

В приведенном ниже примере мы видим два пользовательских сеанса для приложения- менеджера . Он показывает продолжительность сеанса, как долго он был неактивен и как долго до истечения срока его действия (по умолчанию 30 минут).

Мы также можем вручную уничтожить сеансы, выбрав их и выбрав Invalidate selected session :

./517f61d516eb547a93844762d4a66ac7.png

На главной странице есть кнопка « Окончание сеансов» . Это также уничтожает сеансы, которые бездействовали в течение указанного периода минут.

6.2. Через текстовую веб-службу

Опять же, эквиваленты текстовых служб просты.

Чтобы просмотреть сведения о текущих пользовательских сеансах, мы вызываем конечную точку сеанса с контекстным путем интересующего нас приложения. В этом примере мы видим, что в настоящее время существует два сеанса для приложения- менеджера :

curl -u tomcattext:foreach "http://localhost:8080/manager/text/sessions?path=/manager"
OK - Session information for application at context path [/manager]
Default maximum session inactive interval is [30] minutes
Inactive for [2 - <3] minutes: [1] sessions
Inactive for [13 - <14] minutes: [1] sessions

Если мы хотим уничтожить неактивные пользовательские сеансы, мы используем конечную точку с истекающим сроком действия . В этом примере мы завершаем сеансы, которые были неактивны более 10 минут для приложения- менеджера :

curl -u tomcattext:foreach "http://localhost:8080/manager/text/expire?path=/manager&idle=10"
OK - Session information for application at context path [/manager]
Default maximum session inactive interval is [30] minutes
Inactive for [5 - <6] minutes: [1] sessions
Inactive for [15 - <16] minutes: [1] sessions
Inactive for [>10] minutes: [1] sessions were expired

7. Развертывание приложений

Теперь, когда мы увидели, как мы можем управлять нашими приложениями, давайте посмотрим, как мы можем развертывать новые приложения.

Для начала загрузите пример WAR Tomcat, чтобы у нас было новое приложение для развертывания.

7.1. Использование Интернета

Теперь у нас есть несколько вариантов развертывания нашего нового образца WAR с помощью веб-страницы. Самый простой способ — загрузить пример файла WAR и развернуть его :

./7c41e7beee461b70ea8f322c3e5e1255.png

WAR развертывается с контекстным путем, совпадающим с именем WAR . В случае успеха образец приложения развертывается, запускается и отображается в списке приложений. Если мы перейдем по ссылке /sample в контекстном пути, мы сможем просмотреть наше запущенное тестовое приложение:

./5d4d13cd0d66174b1c3455beb2e3afad.png

Чтобы мы могли снова развернуть это же приложение, давайте нажмем кнопку Undeploy . Как следует из названия, это приведет к отмене развертывания приложения . Обратите внимание, что при этом также удаляются все файлы и каталоги развернутого приложения.

Далее мы можем развернуть образец WAR-файла, указав путь к файлу . Мы указываем URI пути файла к файлу WAR или распакованной директории плюс путь контекста. В нашем случае образец WAR находится в каталоге /tmp , и мы устанавливаем контекстный путь к /sample :

./13366508b411d3ab8bba093de3e4792f.png

В качестве альтернативы мы можем указать путь к файлу XML-дескриптора развертывания . Такой подход позволяет указать дополнительные атрибуты, влияющие на развертывание и запуск приложения. В приведенном ниже примере мы развертываем образец приложения WAR и делаем его перезагружаемым.

Обратите внимание, что любой путь, указанный в дескрипторе развертывания, игнорируется . Путь контекста берется из имени файла дескриптора развертывания. Взгляните на общие атрибуты , чтобы понять почему, а также на описание всех других возможных атрибутов:

<Context docBase="/tmp/sample.war" reloadable="true" />

./62272b2c98067428a0421e4239f57a70.png

7.2. Использование текстового сервиса

Теперь давайте посмотрим на развертывание приложений с помощью текстового сервиса.

Во-первых, давайте отменим развертывание нашего примера приложения :

curl -u tomcattext:foreach "http://localhost:8080/manager/text/undeploy?path=/sample"
OK - Undeployed application at context path [/sample]

Чтобы развернуть его снова , мы указываем контекстный путь и URI местоположения образца WAR-файла:

curl -u tomcattext:foreach "http://localhost:8080/manager/text/deploy?path=/sample&war=file:/tmp/sample.war"
OK - Deployed application at context path [/sample]

Кроме того, мы также можем развернуть приложение, используя дескриптор развертывания XML:

curl -u tomcattext:foreach "http://localhost:8080/manager/text/deploy?config=file:/tmp/sample.xml"
OK - Deployed application at context path [/sample]

8. Просмотр конфигурации SSL

Нам нужно включить SSL в Tomcat , прежде чем мы сможем увидеть любую конфигурацию SSL. Во-первых, давайте создадим новое хранилище ключей сертификатов с самозаверяющим сертификатом в каталоге conf нашего Tomcat:

keytool -genkey -alias tomcat -keyalg RSA -keystore conf/localhost-rsa.jks

Затем мы меняем файл conf/tomcat-server.xml , чтобы включить коннектор SSL в Tomcat:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/localhost-rsa.jks" type="RSA" />
</SSLHostConfig>
</Connector>

Как только мы перезапустим Tomcat, мы обнаружим, что он безопасно работает на порту 8443!

8.1. Использование Интернета

Давайте откроем https://localhost:8443/manager/html , чтобы снова увидеть приложение Tomcat Manager. Он должен выглядеть точно так же.

Теперь мы можем просмотреть нашу конфигурацию SSL с помощью кнопок в разделе « Диагностика» :

./61fb90b08a733914a6df164ff52a336b.png

  • Кнопка « Шифры » показывает все шифры SSL, понятные Tomcat.
  • Далее кнопка « Сертификаты » показывает сведения о нашем самозаверяющем сертификате.
  • Наконец, кнопка « Доверенные сертификаты » показывает сведения о доверенном сертификате ЦС; в нашем примере он не отображает ничего интересного, поскольку мы не добавили никаких доверенных сертификатов ЦС.

Кроме того, файлы конфигурации SSL могут быть динамически перезагружены в любое время. Мы можем повторно загрузить для каждого виртуального хоста, введя имя хоста. В противном случае вся конфигурация перечитывается:

./9888bc9dd683f4c873d9f6054b8fc44d.png

8.2. Использование текстового сервиса

Точно так же мы можем получить ту же информацию с помощью текстового сервиса. Мы можем просмотреть все:

  • Шифры SSL с использованием ресурса sslConnectorCiphers :
curl -ku tomcattext:foreach "https://localhost:8443/manager/text/sslConnectorCiphers"
  • Сертификаты, использующие ресурс sslConnectorCerts :
curl -ku tomcattext:foreach "https://localhost:8443/manager/text/sslConnectorCerts"
  • Доверенные сертификаты, использующие ресурс sslConnectorTrustedCerts :
curl -ku tomcattext:foreach "https://localhost:8443/manager/text/sslConnectorTrustedCerts"

Конфигурацию SSL можно повторно загрузить, используя:

curl -ku tomcattext:foreach "https://localhost:8443/manager/text/sslReload"
OK - Reloaded TLS configuration for all TLS virtual hosts

Обратите внимание на параметр -k в команде curl , так как мы используем самозаверяющий сертификат.

9. Просмотр состояния сервера

Приложение Tomcat Manager также показывает нам состояние сервера и развернутых приложений . Эти страницы особенно удобны, когда мы хотим просмотреть общую статистику использования.

Если мы перейдем по ссылке « Состояние сервера », отображаемой в правом верхнем углу, мы увидим подробную информацию о сервере. Ссылка « Полное состояние сервера » показывает дополнительные сведения о приложениях:

./5fd353266ffb9a367266763c56718bee.png

Соответствующего текстового сервиса нет. Однако мы можем изменить ссылку « Статус сервера » , чтобы просмотреть статус сервера в формате XML. К сожалению, то же самое для ссылки « Полное состояние сервера » может работать или не работать, в зависимости от используемой версии Tomcat.

10. Сохранение конфигурации

Текстовый сервис позволяет нам сохранить текущую конфигурацию в Tomcat conf/server.xml . Это очень полезно, если мы изменили конфигурацию и хотим сохранить ее для дальнейшего использования.

К счастью, это также поддерживает предыдущий файл conf/server.xml , хотя любые предыдущие комментарии могут быть удалены в новом файле конфигурации conf/server.xml .

Однако, прежде чем мы сможем это сделать, нам нужно добавить нового слушателя. Отредактируйте conf/server.xml и добавьте следующее в конец списка существующих слушателей:

<Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener" />

После перезапуска Tomcat мы можем сохранить нашу конфигурацию, используя:

curl -u tomcattext:foreach "http://localhost:8080/manager/text/save"
OK - Server configuration saved

11. Диагностика

Наконец, давайте рассмотрим дополнительные диагностические функции, предоставляемые приложением Tomcat Manager.

11.1. Дамп потока

Мы можем использовать текстовую службу для получения дампа потока работающего сервера Tomcat:

curl -u tomcattext:foreach "http://localhost:8080/manager/text/threaddump"
OK - JVM thread dump
2019-10-06 23:19:10.066
Full thread dump Java HotSpot(TM) 64-Bit Server VM (11.0.3+12-LTS mixed mode):
...

Это особенно полезно, когда нам нужно проанализировать или найти потоки, вызывающие проблемы с производительностью, такие как длительные или заблокированные потоки.

11.2. Поиск утечек памяти

Tomcat обычно хорошо справляется с предотвращением утечек памяти. Но когда мы подозреваем утечку памяти, в приложении Tomcat Manager есть служба обнаружения утечек памяти, которая поможет нам. Он выполняет полную сборку мусора и обнаруживает все классы, оставшиеся в памяти с момента последней перезагрузки приложения.

Нам нужно только запустить кнопку « Найти утечки » на веб-странице, чтобы обнаружить утечки.

Точно так же текстовая служба может запускать обнаружение утечки памяти:

curl -u  tomcattext:foreach "http://localhost:8080/manager/text/findleaks?statusLine=true"
OK - No memory leaks found

11.3. Отображение доступных ресурсов

Текстовый сервис предоставляет список доступных ресурсов. В этом примере мы видим, что у нас есть одна доступная база данных в памяти:

curl -u tomcattext:foreach "http://localhost:8080/manager/text/resources"
OK - Listed global resources of all types
UserDatabase:org.apache.catalina.users.MemoryUserDatabase

12. Заключение

В этой статье мы подробно рассмотрели приложение Tomcat Manager. Мы начали с установки приложения и посмотрели, как предоставить доступ, настроив разрешения для двух разных пользователей.

Затем мы рассмотрели несколько примеров с использованием веб-приложения и текстовой веб-службы. Мы увидели, как можно просматривать приложения, управлять ими и развертывать их, используя различные методы. Затем мы рассмотрели, как просмотреть конфигурацию и состояние сервера.

Чтобы узнать больше о приложении Tomcat Manager, ознакомьтесь с онлайн- документацией .