Как настроить несколько экземпляров Tomcat?
Есть ли правильный способ запустить более одного экземпляра tomcat на сервере Ubuntu?
Я провел поиск и нашел два варианта:
- Загрузите заархивированного кота и разверните его вручную. Очевидным недостатком является то, что он не будет обновлен с помощью
apt-get
, - Используйте некоторые сложные сценарии, которые опасны на рабочем сервере.
Любые другие идеи, чтобы чисто запустить другой экземпляр?
Заранее спасибо,
Адам
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/
каталог со скриптами для запуска и остановки экземпляра вручную.
Чего я не нашел, так это поддержки превращения такого дополнительного экземпляра в системный сервис. Поэтому это должно быть сделано вручную, например, следующим образом:
- Выберите значение для имени службы; это будет
$NAME
в новом скрипте инициализации. - Создайте нового пользователя с таким именем, которому будут принадлежать файлы для экземпляра Tomcat, и который будет запускать Tomcat. Это может быть системный пользователь, его свойства должны быть такими же, как и для
tomcat7
пользователь. - Бежать
tomcat7-instance-create
как этот пользователь, чтобы создать экземпляр Tomcat. - Настройте его и установите веб-приложение (я), которое вы хотите запустить с ним. Проверьте их, используя его
bin/startup.sh
а такжеbin/shutdown.sh
скрипты. - Переместить журналы в
/var/log/$NAME
и символическую ссылку их обратноlogs/
нового экземпляра Tomcat. - Написать
/etc/init.d/$NAME
Например, путем копирования и изменения/etc/init.d/tomcat7
и изменение назначения$NAME
, (Было бы лучше, если бы вам не нужно было копировать весь сценарий, а просто создать ссылку на него.) - Написать
/etc/default/$NAME
указать на ваш экземпляр Tomcat и пользователя. - использование
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