Статьи

Несколько экземпляров Tomcat на одной машине

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

Сначала мы видим структуру каталогов tomcat, где каждая папка имеет следующую цель:

bin — содержит все двоичные файлы и файлы сценариев для запуска tomcat.
lib — содержит все общие библиотеки, используемые для tomcat
conf — содержит информацию о конфигурации, например, о том, какой порт tomcat может связываться
logs — содержит все файлы журнала
temp — эта папка используется Tomcat для временных файлов
webapps — эта папка очень важна, мы помещаем сюда все файлы приложений
работа — если приложение содержит JSP, то каждый JSP преобразуется и преобразуется в сервлет и хранится здесь
Когда мы запускаем Tomcat, он использует 5 переменных среды. Они есть:
  • CATALINA_HOME
  • CATALINA_BASE
  • CATALINA_TMPDIR
  • JRE_HOME / JAVA_HOME
  • CLASSPATH
В приведенном выше списке CATALINA_HOME и JAVA_HOME являются обязательными переменными среды. Все остальные являются необязательными и могут быть рассчитаны с помощью CATALINA_HOME.
CATALINA_HOME — эта переменная окружения должна указывать на базовую папку tomcat, где установлен / извлечен двоичный файл tomcat. поэтому на основе CATALINA_HOME мы можем получить папку bin и lib
CATALINA_BASE — если мы не указали, то устанавливается значение CATALINA_HOME. Эта переменная указывает на папку конфигурации и веб-приложений. На основе этой переменной сервер использует conf, logs, temp, webapps, рабочие папки.

Обычный способ запустить Tomcat — установить только переменную среды CATALINA_HOME и запустить файл сценария startup.sh . Файл startup.sh автоматически рассчитывает и присваивает значения другим переменным, которые мы не установили.

Файл startup.sh устанавливает переменную среды, а затем вызывает catalina.sh . Этот файл читает значение CATALINA_BASE, присоединяет файл conf, т.е. папку $ CATALINA_BASE / conf, и получает файл server.xml. Этот файл является сердцем конфигурации Tomcat. Он содержит всю информацию о конфигурации, такую ​​как порт завершения работы, сообщение о соединителе, имя хоста, папку приложения и т. Д. Например, Tomcat обычно использует 8080 в качестве порта соединителя, поэтому мы можем получить к нему доступ по адресу http: // localhost: 8080 / .

Если мы установим $ CATALINA_BASE явно, то Tomcat использует нашу переменную для поиска и получения файла server.xml из нашего целевого места, то есть того, что мы указали в CATALINA_BASE.
Этот прием можно использовать для запуска нескольких экземпляров Tomcat на одном компьютере. Нам не нужно менять значение CATALINA_HOME. Нам просто нужно изменить значение CATALINA_BASE перед запуском / выключением Tomcat.

Создайте одну папку с именем « tomcat-instance1 » и скопируйте conf, logs, temp, webapps, рабочую папку из папки CATALINA_HOME и измените файл conf / server.xml в tomcat-instance1 . Нам нужно изменить эти порты: порт выключения, порт соединителя, порт ajp и порт перенаправления.

Порт выключения — этот порт используется для выключения Tomcat. Когда мы вызываем скрипт shutdown.sh , он отправляет сигнал на порт выключения. Этот порт находится там, где слушает Java-процесс Tomcat. Если такой сигнал получен, процесс очищается и выходит самостоятельно.
Порт соединителя. Этот порт является фактическим портом, который предоставляет приложение внешнему клиенту.
Порт ajp. Этот порт может использоваться веб-сервером (например, сервером Apache httpd) для связи с Tomcat. Этот порт также используется при настройке сервера с балансировкой нагрузки.
Порт перенаправления — если Соединитель поддерживает запросы, отличные от SSL, и получен запрос, для которого ограничение безопасности требует SSL, Catalina автоматически перенаправит запрос на этот порт.

Давайте посмотрим пример файла server.xml:

1
2
3
4
5
6
7
8
<server port="8005" shutdown="SHUTDOWN">
    .....
    <connector
        connectiontimeout="20000"port="8080"
        protocol="org.apache.coyote.http11.Http11NioProtocol"
        redirectport="8443" />
    <connector port="8009" protocol="AJP/1.3" redirectport="8443" />
</server>

Таким образом, мы меняем эти порты на разные номера, потому что как только порт привязан, другой процесс не может связать его снова. В файле tomcat-instance1 / conf / server.xml я настроил порт сервера = 8105, порт соединителя = 8181, порт ajp = 8109.

1
2
3
4
5
6
7
8
<server port="8105" shutdown="SHUTDOWN">
    .....
    <connector
        connectiontimeout="20000" port="8181"
        protocol="org.apache.coyote.http11.Http11NioProtocol"
        redirectport="81443" />
    <connector port="8109" protocol="AJP/1.3" redirectport="81443" />
</server>

Теперь мы можем создать два файла сценария для запуска и выключения tomcat-instance1.

startup-instance1.sh

1
2
3
export CATALINA_BASE= /home/ramki/tomcat-instance1
cd $CATALINA_HOME/bin
./startup.sh

shutdown-instance1.sh

1
2
3
export CATALINA_BASE= /home/ramki/tomcat-instance1
cd $CATALINA_HOME/bin
./shutdown.sh

Здесь мы явно устанавливаем переменную CATALINA_BASE и указываем на новый tomcat-instance1. Затем мы идем в папку CATALINA_HOME / bin, потому что все бинарные файлы для запуска tomcat все еще присутствуют там. Затем мы используем скрипты запуска / выключения.

На основе описанной выше техники мы можем создать множество папок экземпляров, изменить значения портов файла conf / server.xml и запустить этот экземпляр со своими новыми файлами сценариев.

Ссылка: запуск нескольких экземпляров Tomcat на одной машине от нашего партнера JCG Рамы в

Статьи по Теме :