使用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
下刚刚部署的应用程序。