Tomcat, Rex · 5 min read · Feb 14, 2026

Установка Tomcat и развертывание веб-приложений с Rex

Установка Tomcat и развертывание веб-приложений с Rex

В этом руководстве я покажу вам, как управлять вашими установками Tomcat и как развертывать Webapps повторяемым способом с помощью Rex. В этом руководстве я буду использовать Debian Squeeze, но Rex также доступен для других дистрибутивов.

Введение в Rex

Rex — это инструмент, написанный на Perl, который упрощает администрирование и развертывание множества серверов.

С сайта: С помощью (R)?ex вы можете управлять всеми вашими серверами из одной центральной точки на протяжении всего процесса управления конфигурацией и развертывания программного обеспечения.

Отправной точкой проекта Rex является его Rexfile. Rex будет анализировать этот файл и выполнять определенные задачи на ваших серверах. Просто подумайте об этом как о Makefile, но он написан на Perl.

Каждый Rexfile делится на задачи. Вы можете определить задачу для каждого логического шага установки и настройки ваших серверов.

Получение программного обеспечения

Вам нужен только Rex на вашем рабочем месте. На ваших серверах не требуется дополнительное программное обеспечение. Вам просто нужен доступ root по ssh к вашим серверам.

Вы можете скачать Rex с rexify.org/get/. Пакеты доступны для CentOS, Debian, Ubuntu, Fedora, Mageia и OpenSuSE. Исходные коды доступны на CPAN.

Для Debian просто добавьте репозиторий Rex в ваш sources.list.d каталог.

echo 'deb http://rex.linux-files.org/debian/ squeeze rex' >> /etc/apt/sources.list

После этого добавьте GPG-ключ в ключевую цепочку apt.

wget -O - http://rex.linux-files.org/DPKG-GPG-KEY-REXIFY-REPO | apt-key add -

И установите программное обеспечение. Мы установим rex для основного инструмента и rex-apache-deploy для модуля развертывания.

apt-get update && apt-get install rex rex-apache-deploy

Подготовьте ваш Rexfile и выполните первую задачу

Сначала создайте каталог tomcat и перейдите в него.

mkdir tomcat; cd tomcat

После этого загрузите примеры модулей Rex с github в каталог lib. Есть модуль tomcat и apache, которые помогут нам.

git clone https://github.com/krimdomu/rex-example-modules.git lib

Теперь создайте файл Rexfile и откройте его в вашем любимом редакторе. Если вы используете vim, вы можете использовать следующие строки для включения подсветки синтаксиса.

:set ft=perl  
:syn on
# Файл: Rexfile
# сначала включите строгий режим и предупреждения
use strict;
use warnings;
# затем включите все необходимые примеры модулей
use ALLMODS;    # это устанавливает путь включения к примерам модулей rex
use apache;     # включите модуль apache
use apache::module;
use tomcat;     # включите модуль tomcat
use tomcat::user;
use tomcat::role;
# установите пользователя и пароль для входа на ваши серверы
user "root";
password "test";
# включите аутентификацию по паролю.
pass_auth;
# если вы хотите использовать аутентификацию по ключу, используйте следующее
# и закомментируйте строку "pass_auth"
# public_key "/path/to/your/public.key";
# private_key "/path/to/your/private.key";
# определите группу серверов с именем "tomcat". 
# поместите все ваши серверы, которые вы хотите развернуть, в эту группу.
group tomcats => "tc01", "tc02";
desc "Установить и настроить Apache и Tomcat";
task "prepare", group => "tomcats", sub {
   apache::setup();
   apache::module::setup({name => "jk"});
   tomcat::setup();
   tomcat::role::add_manager();
   tomcat::user::add_manager({
      username => "manager",
      password => "passw0rd",
   });
   apache::restart();
   tomcat::restart();
   # убедитесь, что службы будут запускаться при загрузке системы
   service apache2 => "ensure", "started";
   service tomcat6 => "ensure", "started";
};

Теперь сохраните файл, откройте терминал и перейдите в каталог tomcat.

Чтобы выполнить созданную задачу на ваших серверах, просто вызовите ее, как показано в следующей строке.

rex prepare

Если вы хотите просмотреть ваши определенные задачи, вы можете сделать это с помощью параметра -T.

rex -T

Настройка Apache/modjk

После установки apache и tomcat вам нужно настроить apache/modjk для перенаправления запросов на tomcat.

Чтобы это сделать, создайте каталог под названием files и сохраните ваши конфигурационные файлы там.

mkdir files
## Файл: files/worker.properties
## этот файл управляется rex
##
worker.list=tc,jkstatus
worker.tomcat.port=8009
worker.tomcat.host=<%+ $::Network->{"networkconfiguration"}->{"eth0"}->{"ip"} %>
worker.tomcat.type=ajp13
worker.tomcat.lbfactor=1
worker.tomcat.reference=worker.template
worker.tc.type=lb
worker.tc.balance_workers=tomcat
worker.tc.sticky_session=false
worker.jkstatus.type=status
worker.template.type=ajp13

Как вы видите, в файле есть специальная переменная. Rex имеет встроенную систему шаблонов. И с помощью этого выражения вы получите ip сетевого устройства eth0.

## Файл: files/modjk.conf
## этот файл управляется rex
##
JkWorkersFile /etc/apache2/worker.properties
JkLogFile /var/log/apache2/mod_jk.log
JkShmFile /var/log/apache2/jk.shm
JkMount /* tc
# Добавьте точку монтирования jkstatus
JkMount /jkmanager/* jkstatus

    JkMount jkstatus

В реальных сценариях также будет server.xml. Но для этого руководства вы просто отредактируете файл, чтобы включить AJP-коннектор.

Теперь откройте ваш Rexfile и добавьте вторую задачу configure.

desc "Настроить Apache и Tomcat";
task "configure", group => "tomcats", sub {
   # удалите стандартный vhost
   unlink "/etc/apache2/sites-enabled/000-default";
   # загрузите файл, но обработайте файл как шаблон
   file "/etc/apache2/worker.properties",
      content   => template("files/worker.properties"),
      owner     => "root",
      group     => "root",
      mode      => 640,
      on_change => sub { apache::restart(); };
   # загрузите конфигурационные файлы
   file "/etc/apache2/conf.d/modjk.conf",
      source    => "files/modjk.conf",
      owner     => "root",
      group     => "root",
      mode      => 640,
      on_change => sub { apache::restart(); };
   # отредактируйте server.xml, чтобы разрешить доступ по ajp
   # в реальном использовании используйте шаблон для этого файла
   my $content = cat "/etc/tomcat6/server.xml";
   $content =~ s/<\/Service>/\n<\/Service>/;
   file "/etc/tomcat6/server.xml",
      content   => $content,
      on_change => sub { tomcat::restart(); };
};

Теперь вы можете запустить задачу configure, чтобы настроить ваш сервер.

rex configure

Развертывание приложения

Итак, после того как вы развернули и настроили ваш сервер, вам нужно загрузить приложение, которое сервер должен обслуживать.

Существует модуль Rex для простых задач развертывания, называемый Rex::Apache::Deploy. Вы уже установили его.

В этом руководстве вы развернете psi-probe. Вы можете скачать его с code.google.com. Создайте папку под названием packages, извлеките zip-архив и скопируйте файл probe.war в этот каталог.

mkdir packages  
cd packages  
wget http://psi-probe.googlecode.com/files/probe-2.2.3.zip  
unzip probe-2.2.3.zip

Теперь откройте ваш Rexfile и добавьте следующие строки к другим командам use.

# включите поддержку развертывания для tomcat
use Rex::Apache::Deploy "Tomcat";

И создайте третью задачу под названием deploy.

desc "Развернуть приложение";
task "deploy", group => "tomcats", sub {
   # установите контекстный путь для нашего tomcat приложения
   context_path "/psiprobe";
   # разверните приложение. 
   deploy "packages/probe.war",
      username => "manager",
      password => "passw0rd",
      port     => 8080;
};

Объединение всего

Теперь вы можете выполнить все 3 задачи одну за другой, и результатом будет сервер, готовый обслуживать наш контент. В конце вы можете определить пакет, который выполняет все ваши задачи, чтобы вам не нужно было писать так много.

Откройте ваш Rexfile и добавьте следующую строку.

desc "Выполнить все задачи prepare, configure и deploy";
batch all => "prepare", "configure", "deploy";

Вы можете выполнить этот пакет с помощью параметра -b.

rex -b all

Теперь, после выполнения всех задач, вы можете получить доступ к только что развернутому приложению по адресу /psiprobe на вашем сервере.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.