Назад | Перейти на главную страницу

Запуск экземпляров Tomcat

Каким может быть лучший способ автоматически запускать экземпляры Tomcat? У меня есть множество виртуальных хостов, настроенных на использование tomcat на разных портах. Я уверен, что кто-то сталкивался с этой сложной задачей администратора. Как думаете, подойдет rc.local? Я не хочу облачить этот файл в облако с таким количеством команд, я хочу одноразовый скрипт, если он применим.

Лучше всего под Linux использовать стандартный сценарий SysV Init. Именно так предполагается запускать демонов под Linux, так что это первое место, куда будут смотреть большинство системных администраторов.

Стандарты такие хорошие. ;)

Многие дистрибутивы поставляются со скелетным сценарием запуска, который вы можете изменить по своему усмотрению, а некоторые поставляются с библиотекой функций оболочки, которую вы можете использовать, чтобы помочь вам написать сценарий запуска, например. на Redhat есть /etc/init.d/functions.

Вы можете просто использовать его для вызова стандартного сценария запуска, поставляемого с Tomcat. Tomcat может даже поставляться со сценарием инициализации SysV, я не могу вспомнить, прошло много времени с тех пор, как я установил vanilla tomcat.

Сделайте и ваш сценарий запуска chkconfig-совместимым!

Я бы порекомендовал что-то вроде DAEMON Tools или контролировать. Сценарии инициализации SysV или Debian подходят для запуска процесса при загрузке, но они не перезапускают ваш экземпляр автоматически, если он должен остановиться.

Для daemontools вам нужно будет создать run сценарий, который устанавливает пользователя и правильные переменные среды, затем запускается $TOMCAT/bin/catalina.sh run.

Для monit вам нужно знать расположение pid-файла tomcat, а затем использовать конфигурацию, подобную этой:

check process 'tomcat' with pidfile /path/to/your/tomcat/tmp/tomcat.pid
   start command = '$TOMCAT/bin/catalina.sh start'
   stop  command = '$TOMCAT/bin/catalina.sh stop' 

Почему бы не запустить их все в одном экземпляре tomcat? Tomcat может прослушивать несколько портов и обслуживать разные наборы веб-приложений из разных каталогов веб-приложений. Изучите элемент <engine> в документации tomcat server.xml.

Я обычно использую Кондор для управления моими «заданиями» - он позволяет вам распространять ваше приложение динамически или статически, если хотите. Тогда вы сможете использовать любой механизм автозапуска, который вам нравится, без того, чтобы ваша конфигурация оставалась на виду у всех.

Я написал собственный сценарий инициализации, который предполагает, что каталог / var / tomcat содержит подкаталоги, каждый из которых является конфигурацией для экземпляра Tomcat. Он выполняет итерацию по каждому подкаталогу, проверяет, существует ли conf / server.xml, и, если да, устанавливает CATALINA_BASE в этот подкаталог и запускает его сценарий bin / catalina.sh с соответствующим аргументом (stop | start).