Создание инстансов Tomcat
О том, как проще всего создать несколько копий Apache Tomcat на разных портах
Бывает так, что на одном сервере хочется иметь несколько инстансов Apache Tomcat с разными портами (Multiple Tomcat Instances). На первом, версия для яростного тестирования, на втором — для нежной демонстрации.
Нет, нет, не стоит создавать клон домашней директории apache-tomcat и настраивать там второй инстанс. Во-первых это может породить ряд проблем. Во-вторых это не минималистично!
Шаг №1
Путь минималиста — это оставить чистый дистрибутив Apache Tomcat, а в инстансах поместить только различия.
Вот необходимый минимум изменений:
/opt/apache-tomcat-x.x.x/ — (домашняя директория) чистый дистрибутив
/opt/apache-tomcat-inst1/ — (базовая директория) первый инстанс на порту 8081
config/
context.xml — скопировать из дистрибутива и если нужно добавить свой <Resource />
server.xml — скопировать из дистрибутива и изменить номера портов для <Server /> и <Connector />
web.xml — скопировать из дистрибутива
/opt/apache-tomcat-inst2/ — (базовая директория) второй инстанс на порту 8082
config/ — действия аналогичные действиям для apache-tomcat-inst1/config
Также можно настроить свой tomcat-users.xml и добавить необходимые библиотеки в lib/ специфичные для каждого инстанса.
Шаг №2
Создать скрипт запуска, например такой inst1.sh:
#!/bin/bash -x
# Fix for "java.lang.OutOfMemoryError: PermGen space" issue
export JAVA_OPTS="$JAVA_OPTS -XX:MaxPermSize=128M"
export CATALINA_HOME=/opt/apache-tomcat-x.x.x
export CATALINA_BASE=/opt/apache-tomcat-inst1
$CATALINA_HOME/bin/catalina.sh $1
И запустить:
./inst.sh start
Ура. Вот и удалось не плодить лишнего контента и головной боли.