Как настроить несколько экземпляров Tomcat?

Есть ли правильный способ запустить более одного экземпляра tomcat на сервере Ubuntu?

Я провел поиск и нашел два варианта:

  1. Загрузите заархивированного кота и разверните его вручную. Очевидным недостатком является то, что он не будет обновлен с помощью apt-get,
  2. Используйте некоторые сложные сценарии, которые опасны на рабочем сервере.

Любые другие идеи, чтобы чисто запустить другой экземпляр?

Заранее спасибо,

Адам

3 ответа

Решение

Я настраиваю это на Ubuntu 14.04.3 LTS. Я использую Tomcat 7, предоставленный tomcat7 пакет.

Он устанавливает Tomcat как системный сервис, предоставляя стандартный скрипт инициализации:

/etc/init.d/tomcat7

и файл конфигурации:

/etc/default/tomcat7

Tomcat поддерживает запуск нескольких экземпляров с одним и тем же серверным программным обеспечением. Программное обеспечение сервера находится в $CATALINA_HOMEфайлы для экземпляра находятся в $CATALINA_BASE, Они определены следующим образом в /etc/init.d/tomcat7:

NAME=tomcat7
CATALINA_HOME=/usr/share/$NAME
CATALINA_BASE=/var/lib/$NAME

(Предостережение: при редактировании файлов в последнем знайте, что у него есть некоторые символические ссылки в первом.)

tomcat7-user пакет предоставляет утилиту tomcat7-instance-create которые можно использовать для создания дерева каталогов для дополнительного экземпляра Tomcat, включая bin/ каталог со скриптами для запуска и остановки экземпляра вручную.

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

  1. Выберите значение для имени службы; это будет $NAME в новом скрипте инициализации.
  2. Создайте нового пользователя с таким именем, которому будут принадлежать файлы для экземпляра Tomcat, и который будет запускать Tomcat. Это может быть системный пользователь, его свойства должны быть такими же, как и для tomcat7 пользователь.
  3. Бежать tomcat7-instance-create как этот пользователь, чтобы создать экземпляр Tomcat.
  4. Настройте его и установите веб-приложение (я), которое вы хотите запустить с ним. Проверьте их, используя его bin/startup.sh а также bin/shutdown.sh скрипты.
  5. Переместить журналы в /var/log/$NAME и символическую ссылку их обратно logs/ нового экземпляра Tomcat.
  6. Написать /etc/init.d/$NAMEНапример, путем копирования и изменения /etc/init.d/tomcat7 и изменение назначения $NAME, (Было бы лучше, если бы вам не нужно было копировать весь сценарий, а просто создать ссылку на него.)
  7. Написать /etc/default/$NAME указать на ваш экземпляр Tomcat и пользователя.
  8. использование upstart-rc.d установить новый сервис.

Я почерпнул некоторые подробности из Коджо-Кума Джомеды.

Рассматривали ли вы настройку нескольких каталогов веб-приложений вместо запуска нескольких экземпляров Tomcat?

Конечно, есть случаи, когда вам действительно нужно несколько экземпляров, но в случае раздельного обслуживания одного приложения для нескольких хостов, вы можете сделать это, добавив несколько объявлений в server.xml:

  <Host name="host1.example.com" appBase="host1"
    unpackWARs="true" autoDeploy="true" 
    xmlValidation="false" xmlNamespaceAware="false" />

  <Host name="host2.example.com" appBase="host2"
    unpackWARs="true" autoDeploy="true" 
    xmlValidation="false" xmlNamespaceAware="false" />

Теперь вы можете создавать каталоги "/var/lib/tomcat6/host1" и "/var/lib/tomcat6/host2" и развертывать в них файлы WAR.

Я сделал следующее:

выполните следующую команду с dir, где должен быть создан tomcat:

tomcat8-instance-create staging

чем изменил порты на что-то уникальное (если у вас запущен другой tomcat8:

nano conf/server.xml

я использую того же пользователя, что и оригинальный tomcat8, поэтому я удостоверяюсь, что все файлы принадлежат tomcat8

chown -R tomcat8:tomcat8 * 

я скопировал скрипт tomcat8 в /etc/init.d/

cp /etc/init.d/tomcat8 /etc/init.d/tomcat8_staging

и отредактировал скрипт, чтобы он работал с моим новым env:

nano /etc/init.d/tomcat8_staging

мне пришлось редактировать следующие строки:

NAME=tomcat8_staging
DEFAULT=/etc/default/tomcat8
CATALINA_BASE=/app/tomcat8/staging
CATALINA_HOME=/usr/share/tomcat8

и наконец я включил сервер следующим образом:

systemctl enable tomcat8_staging

при запуске с:

service tomcat8_staging start

я получил ошибку об отсутствующих файлах политики, поэтому я создал ссылку для этого в директории conf:

ln -s /etc/tomcat8/policy.d policy.d
Другие вопросы по тегам