安装Tomcat并使用Rex部署Web应用程序

使用Rex安装Tomcat并部署Web应用程序

在本教程中,我将向您展示如何管理Tomcat安装以及如何使用Rex以可重复的方式部署Webapps。 在本教程中,我将使用Debian Squeeze,但Rex也可用于其他发行版。

雷克斯简介

Rex是一种用Perl编写的工具,用于简化许多服务器的管理和部署。

从网站: With(R)?ex,您可以通过配置管理和软件部署的完整过程从中心点管理所有的盒子。

Rex项目的起点是它的Rexfile 。 Rex将解析此文件并执行服务器上定义的任务。 只是想像一个Makefile,但它是用Perl写的。

每个Rexfile都分为任务 。 您可以为每个逻辑步骤定义一个任务来安装和配置服务器。

获取软件

您只需要工作站上的Rex。 您的服务器上不需要其他软件。 您只需要ssh root访问您的服务器。

您可以从rexify.org/get/下载Rex。 包可用于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

现在创建文件Rexile并用你最喜欢的编辑器打开它。 如果您正在使用vim,您可以使用以下行来启用语法突出显示。

: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";
};

现在保存文件,打开终端并切换到tomcat目录。

要在服务器上执行创建的任务,只需调用它,如下一行所示。

rex prepare

如果要查看定义的任务,可以使用-T选项。

rex -T

配置Apache / modjk

安装apache和tomcat后,您需要配置apache / modjk将请求重定向到tomcat。

为了实现这一点,创建一个名为files的目录 ,并在那里保存你的配置文件。

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

如你所见,文件中有一个特殊的变量。 Rex有一个buildin模板系统。 通过这个表达式,您将获得网络设备eth0的ip。

## 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>

在现实世界中,也会有一个server.xml 。 但是在本教程中,您只需要修补文件即可启用AJP连接器。

现在打开你的Rexfile并添加一个第二个任务配置

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(); };
   
};
      
      

现在可以运行配置任务来配置服务器。

rex configure

部署应用程序

那么在部署和配置了服务器之后,您需要上传服务器应该提供的应用程序。

有一个名为Rex :: Apache :: Deploy的简单部署任务的Rex模块。 你已经安装了

在这方面你将会部署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并将以下行放入其他使用的命令。

# include deployment support for tomcat
use Rex::Apache::Deploy "Tomcat";

并创建一个名为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;
};

把它们放在一起

现在,您可以一个接一个地执行所有3个任务,结果是服务器准备好服务我们的内容。 最后你可以定义一个执行所有任务的批处理 ,这样你就不需要这么写了。

打开你的Rexfile并附加下一行。

desc "Execute all tasks prepare, configure and deploy";
batch all => "prepare", "configure", "deploy";

您可以使用-b选项执行此批处理。

rex -b all

现在,运行所有任务后,您可以访问服务器上/ psiprobe下刚刚部署的应用程序。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏