Если есть необходимость запуска нескольких экземпляров сервера Apache Tomcat, то стандартные настройки и скрипты запуска не подходят. Ниже приведена инструкция и примеры скриптов для решения данной задачи.
ТТХ
Рецепт будет работать для:
- Debian, Ubuntu, Astra Linux;
- ГосJava 8 или Apache Tomcat 8 и 8.5.
Описание
Мы будем запускать сервер с помощью нового модуля Systemd. Для каждого экземпляра сервера будут созданы собственные каталоги. Остаются следующие общие элементы для всех экземпляров сервера:
- файл общих настроек
/etc/default/tomcat8
; - все JAR-файлы Tomcat.
В остальном мы будем следовать стандартной конфигурации Tomcat для Debian/Ubunbu/Astra: пользователь/группа tomcat8/tomcat8 и т.д.
Настройка Systemd
Для начала необходимо отключить существующий модуль для Tomcat:
systemctl stop tomcat8 systemctl disable tomcat8 systemctl mask tomcat8
Новый модуль для Systemd можно скачать из нашего репозитория: tomcat@.service. Файл необходимо положить в каталог /etc/systemd/system/ и загрузить его:
systemctl daemon-reload
Создание экземпляра сервера
Скрипт для создания экземпляра сервера лежит в нашем репозитории: tomcat-instance.
Скачайте его и запустите с названием экземпляра:
./tomcat-instanse <название>
Например:
./tomcat-instance foo
Скрипт создаст необходимые каталоги:
- конфигурации /etc/tomcat8/<название>/
- основной /var/lib/tomcat8/<название>/
- логов /var/log/tomcat8/<название>/
- рабочий /var/cache/tomcat8/<название>/
После его выполнения вам необходимо самостоятельно создать файлы конфигурации. В простейшем случае можно скопировать стандартные файлы настройки Tomcat из каталога /etc/tomcat8/
. Обратите внимание, что на файлы конфигурации должны быть установлены следующие права:
- пользователь и группа:
root:tomcat8
; - права доступа 0640.
Запуск экземпляра
Перед запуском экземпляра необходимо убедиться, что порты нового сервера не пересекаются с существующими.
Операции над экземпляром осуществляются командой systemctl. Пример запуска сервера foo:
systemctl start tomcat@foo
Добрый день.
Подскажите, что нужно сделать чтобы заработали все инстансы томката с мандатной меткой выше чем 0.
Спасибо.
С помощью механизма privsock.
Добрый вечер, если вы про вот это:
«Для использования при функционировании сетевого сервиса необходимо отредактировать файл /etc/parsec/privsock.conf, добавив в него строку, содержащую полный путь к исполняемому файлу сервиса»
То это не сработало.
Отвечу сам, себе.
Нужно отредактировать unit tomcat@.service который расположен в каталоге /etc/systemd/system/и добавить следующий параметр в секцию:
[Service]
CapabilitiesParsec=PARSEC_CAP_PRIV_SOCK
Далее нужно сохранить и перезапустить демон systemd:
systemctl daemon-reload
Зы.
Если используется только один экземпляр сервера приложений тогда нужно изменить unit tomcat8.service в каталоге /etc/systemd/system/
Все профит.