Cài đặt Tomcat và triển khai các ứng dụng web với Rex

Quản Trị Mạng - 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.

Cài đặt Tomcat và triển khai các ứng dụng web với Rex

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:

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

Và tiến hành cài đặt phần mềm. Chúng ta sẽ cài đặt rex cho công cụ core và rex-apache-deploy cho module deployment.

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

Chuẩn bị Rexfile và thực thi tác vụ đầu tiên

Trước tiên chúng ta sẽ tạo thư mục tomcat và thay đổi nó:

mkdir tomcat; cd tomcat

Sau đó checkout các module Rex Example từ github trong thư mục lib. Ở đó bạn sẽ nhận được sự giúp đỡ về module tomcat và apache.

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

Tiếp theo chúng ta tạo tập tin Rexile và mở nó với trình soạn thảo mà mình đang dùng. Nếu bạn sử dụng vim bạn có thể chạy dòng lệnh dưới đây để kích hoạt việc tô đậm cú pháp:

:set ft=perl
:syn on

 # File: Rexfile
 # at first enable strict and warnings
 use strict;
 use warnings;
 # than include all needed example modules
 use ALLMODS;    # this sets the include path to the rex example modules
 use apache;     # include apache module
 use apache::module;
 use tomcat;     # include tomcat module
 use tomcat::user;
 use tomcat::role;
 # set user and password to login to your servers
 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";
 };

Bây giờ lưu lại tập tin này và mở bằng terminal, sau đó thay đổi thư mục tomcat.

Để thực thi một tác vụ được tạo ra trên máy chủ chỉ cần gọi nó:

rex prepare

Nếu bạn muốn xem các tác vụ của mình, có thể sử dụng tùy chọn -T:

rex -T

Cấu hình Apache/modjk

Sau khi cài đặt xong apache và tomcat bạn cần cấu hình Apache/modjk để chuyển hướng các yêu cầu tới tomcat.

Để thực hiện điều này bạn cần tạo thư mục có tên files để lưu lại các tập tin cấu hình của mình ở đó.

mkdir files

 ## File: files/worker.properties
 ## this file is managed by 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

Như bạn thấy ở đây, có một biến đặc biệt trong file này. Rex có một hệ thống xây dựng các template, và với sự thể hiện trên bạn sẽ nhận được IP của thiết bị mạng etho.

 ## File: files/modjk.conf
 ## 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", mode => 640, on_change => sub { apache::restart(); }; # patch server.xml to allow ajp access # in realworld use a template for this file my $content = cat "/etc/tomcat6/server.xml"; $content =~ s/<\/Service>/<Connector port="8009" protocol="AJP\/1.3" redirectPort="8443" \/>\n<\/Service>/; file "/etc/tomcat6/server.xml", content   => $content,
       on_change => sub { tomcat::restart(); };
    
 };

Tiếp theo bạn có thể chạy tác vụ configure cho cấu hình server của mình.

rex configure

Triển khai các ứng dụng

Sau khi triển khai và cấu hình máy chủ của mình, bạn cần tải lên các ứng dụng phục vụ cho server.

Có một module Rex cho việc triển khai các tác vụ đơn giản gọi là Rex::Apache::Deploy mà bạn đã cài đặt nó.

Trong phần bài viết này bạn sẽ triển khai psi-probe. Bạn có thể tải về tại đây. Tạo một thư mục có tên packages, giải nén tập tin zip và copy file probe.war vào thư mục vừa tạo.

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

Mở Rexfile của bạn và đặt vào dòng lệnh dưới đây:

 # include deployment support for tomcat
 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.

Thứ Ba, 11/10/2011 16:00
11 👨 2.678