Cài đặt Tomcat và triển khai các ứng dụng web
với Rex
Tomcat là một Java Servlet thi hành các ứng dụng Java Servlet và
JavaServer Pages (JSP) từ Sun Microsystems, và cung cấp một máy chủ
HTTP cho ngôn ngữ Java thuần túy để thực thi các chương trình lệnh viết
bằng ngôn ngữ Java.
Trong bài hướng dẫn này chúng tôi sẽ giúp các bạn có thể quản lý các cài đặt
Tomcat của mình và triển khai những ứng dụng web một cách lặp đi lặp lại với
Rex. Mặc dù phần minh họa này chúng tôi sử dụng Debian Squeeze, nhưng Rex
cũng có sẵn cho các distribution khác.
Thông tin về Rex
Rex là một công cụ được viết trong Perl, giúp dễ dàng quản lý và triển khai nhiều
máy chủ. Điểm khởi đầu của một dự án Rex chính là tập tin Rexfile của nó. Rex sẽ
phân tích file này và thực thi các tác vụ được quy định trên các máy chủ của bạn.
Bạn cũng có thể hiểu một cách đơn giản nó giống như một Makefile, nhưng được
viết trong Perl.
Mỗi Rexfile đều được chia thành tasks, bạn có thể xác định tác vụ cho từng bước
một cách hợp lý để cài đặt và cấu hình cho các máy chủ của mình.
Các phần mềm
Bạn chỉ cần duy nhất Rex trên máy trạm của mình, không cần phần mềm nào khác
cho các server. Ngoài ra hãy lưu ý sử dụng quyền root khi truy cập ssh tới máy
chủ.
Người dùng có thể dễ dàng tải về Rex từ trang chủ rexify.org/get/. Các gói này có
sẵn cho CentOS, Debian, Ubuntu, Fedora, Mageia và OpenSuSE. Tất cả đều có
sẵn CPAN.
Đối với Debian chỉ cần thêm vào kho lưu trữ Rex cho đường dẫn sources.list.d của
bạn:
echo 'deb http://rex.linux-files.org/debian/ squeeze
rex' >> /etc/apt/sources.list
Sau đó thêm khóa GPG tới apt:
user "root";
password "test";
# enable password authentication.
pass_auth;
# if you want to use key authentication use the
following
# and comment out the line "pass_auth"
# public_key "/path/to/your/public.key";
# private_key "/path/to/your/private.key";
# define a server group named "tomcat".
# put all your servers you want to deploy in that
group.
group tomcats => "tc01", "tc02";
desc "Install and Configure Apache and 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();
# take care that the services will start on system
boot
service apache2 => "ensure", "started";
service tomcat6 => "ensure", "started";
};
## this file is managed by rex
##
JkWorkersFile /etc/apache2/worker.properties
JkLogFile /var/log/apache2/mod_jk.log
JkShmFile /var/log/apache2/jk.shm
JkMount /* tc
# Add the jkstatus mount point
JkMount /jkmanager/* jkstatus
<Location /jkmanager/>
JkMount jkstatus
</Location>
Trong các kịch bản realworld cũng có một server.xml. Nhưng trong hướng dẫn
này bạn chỉ cần bản vá tập tin để kích hoạt kết nối AJP.
Bây giờ mở tập tin Rexfile của bạn và thêm một tác vụ thứ hai có tên configure:
desc "Configure Apache and Tomcat";
task "configure", group => "tomcats", sub {
# remove default vhost
unlink "/etc/apache2/sites-enabled/000-default";
# upload the file, but parse the file as a template
file "/etc/apache2/worker.properties",
content => template("files/worker.properties"),
owner => "root",
group => "root",
mode => 640,
on_change => sub { apache::restart(); };
# upload the configuration files
file "/etc/apache2/conf.d/modjk.conf",
source => "files/modjk.conf",
owner => "root",
group => "root",
use Rex::Apache::Deploy "Tomcat";
Và tạo một tác vụ thứ ba có tên deploy.
desc "Deploy the application";
task "deploy", group => "tomcats", sub {
# set the context path for our tomcat application
context_path "/psiprobe";
# deploy the app.
deploy "packages/probe.war",
username => "manager",
password => "passw0rd",
port => 8080;
};
Chạy đồng thời toàn bộ các tác vụ
Bây giờ bạn có thể thực thi cả ba tác vụ cùng lúc mà không cần chạy từng lệnh
một bằng cách định nghĩa một file batch.
Mở Rexfile của mình và gán thêm vào đó dòng lệnh sau:
desc "Execute all tasks prepare, configure and deploy";
batch all => "prepare", "configure", "deploy";
Cuối cùng bạn chỉ cần chạy lệnh sau để thực thi tác vụ:
rex -b all
Sau khi khởi chạy chúng, bạn có thể truy cập các ứng dụng được triển khai dưới
/psiprobe trên máy chủ của mình.