톰캣 설치 · 4 min read · Feb 14, 2026
렉스와 함께 톰캣 설치 및 웹 애플리케이션 배포
렉스와 함께 톰캣 설치 및 웹 애플리케이션 배포
이 튜토리얼에서는 톰캣 설치를 관리하고 렉스를 사용하여 웹앱을 반복 가능한 방식으로 배포하는 방법을 보여줍니다. 이 튜토리얼에서는 Debian Squeeze를 사용할 것이지만, 렉스는 다른 배포판에서도 사용할 수 있습니다.
렉스 소개
렉스는 Perl로 작성된 도구로, 여러 서버의 관리 및 배포를 쉽게 해줍니다.
웹사이트에서: Rex를 사용하면 중앙 지점에서 모든 박스를 관리하고 구성 관리 및 소프트웨어 배포의 전체 프로세스를 통해 관리할 수 있습니다.
렉스 프로젝트의 시작점은 Rexfile입니다. 렉스는 이 파일을 구문 분석하고 서버에서 정의된 작업을 실행합니다. 이를 Makefile처럼 생각하면 되지만 Perl로 작성되어 있습니다.
모든 Rexfile은 작업으로 나뉩니다. 서버를 설치하고 구성하기 위한 모든 논리적 단계에 대해 작업을 정의할 수 있습니다.
소프트웨어 받기
작업 공간에만 렉스가 필요합니다. 서버에는 추가 소프트웨어가 필요하지 않습니다. 서버에 대한 ssh root 액세스만 필요합니다.
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그 후, apt 키링에 GPG 키를 추가합니다.
wget -O - http://rex.linux-files.org/DPKG-GPG-KEY-REXIFY-REPO | apt-key add -그리고 소프트웨어를 설치합니다. core 도구에 대해 rex를 설치하고 배포 모듈에 대해 rex-apache-deploy를 설치합니다.
apt-get update && apt-get install rex rex-apache-deployRexfile 준비 및 첫 번째 작업 실행
먼저 tomcat이라는 디렉토리를 만들고 그 안으로 이동합니다.
mkdir tomcat; cd tomcat그 후, github에서 Rex 예제 모듈을 lib 디렉토리로 체크아웃합니다. tomcat 및 apache 모듈이 있습니다.
git clone https://github.com/krimdomu/rex-example-modules.git lib이제 Rexfile을 생성하고 좋아하는 편집기로 엽니다. vim을 사용하는 경우, 구문 강조를 활성화하기 위해 다음 줄을 사용할 수 있습니다.
:set ft=perl
:syn on# 파일: Rexfile
# 먼저 strict 및 warnings를 활성화합니다.
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 -TApache/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여기에서 볼 수 있듯이, 파일에 특별한 변수가 있습니다. 렉스에는 내장된 템플릿 시스템이 있습니다. 이 표현식을 사용하면 네트워크 장치 eth0의 IP를 얻을 수 있습니다.
## 파일: 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(); };
# ajp 접근을 허용하도록 server.xml 패치
# 실제 사용 시 이 파일에 대한 템플릿 사용
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::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에서 방금 배포된 애플리케이션에 접근할 수 있습니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.