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 на вашем сервере.
Get new posts in your inbox
No spam. Unsubscribe anytime.