Есть ли правильный способ запустить более одного экземпляра tomcat на сервере Ubuntu?
Я провел некоторый поиск и нашел две опции:
apt-get
. Любые другие идеи, чтобы чисто запустить другой экземпляр?
Заранее спасибо,
Адам
Я настраиваю это на Ubuntu 14.04.3 LTS. Я использую Tomcat 7, обеспеченный tomcat7
пакет.
Это устанавливает Tomcat как системную службу путем обеспечения стандарта init сценарий:
/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, включая a bin/
каталог со сценариями для запуска и остановки экземпляра вручную.
То, что я не нашел, является поддержкой того, чтобы превратить такой дополнительный экземпляр в системную службу. Поэтому это должно быть сделано вручную, например, следующим образом:
$NAME
в новом init сценарии.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
устанавливать новый сервис.Я подобрал некоторые детали из Kodjo-Кумы Djomeda.
Рассматривали ли вы настройку нескольких каталогов веб-приложений вместо запуска нескольких экземпляров 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
и отредактировал скрипт, чтобы он работал с моим новым промежуточным окружением:
nano /etc/init.d/tomcat8_staging
мне пришлось отредактировать следующие строки:
NAME=tomcat8_staging
DEFAULT=/etc/default/tomcat8
CATALINA_BASE=/app/tomcat8/staging
CATALINA_HOME=/usr/share/tomcat8
[ 1116] и, наконец, я включил сервер следующим образом:
systemctl enable tomcat8_staging
при запуске с:
service tomcat8_staging start
я получил ошибку об отсутствующих файлах политики, поэтому я создал ссылку для этого в Conf Dir:
ln -s /etc/tomcat8/policy.d policy.d