设为首页收藏本站我的广告

运维网

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
总共321条微博

每日一博

查看: 911|回复: 0

[入门安装] 【重大新闻】 CentOS6.3之服务配置(三)利用Ant自动从SVN获取代码并通过Tomcat...【顶】

[复制链接]

该用户从未签到

cn2015 发表于 2018-5-17 13:55:57 | 显示全部楼层 |阅读模式
【站长推荐】CentOS6.3之服务配置(三)利用Ant自动从SVN获取代码并通过Tomcat集群发布工程
关于利用Ant自动从SVN服务器获取代码并通过Tomcat服务器集群发布工程的过程,涉及到Shell编程、Ant服务器配置、SVN服务器配置、Apache httpd服务器、Tomcat集群服务器的配置,相关配置请了解其他博客。
        一、相关服务器配置说明:
          1、Apache httpd与Tomcat服务器集群配置;
          2、Ant服务器配置;
          3、SVN服务器配置;
          4、Shell编程请参考相关的书籍;
        二、关于Ant与Svn服务器的安装目录及其准备工作:
          1、Ant与Svn的安装目录:/usr/local;
          2、准备工作:启动SVN服务器,关闭防火墙,准备好相关的ant与svn的联合发布的jar文件;
        三、操作过程:
          1、在ant目录下新建目录并赋予执行权限:
                [root@localhost ant]# mkdir ant-svn
                [root@localhost ant]# chmod u+x ant-svn
          2、svn服务器下一共两个项目:mvc与test,如下图所示:
               

CentOS6.3之服务配置(三)利用Ant自动从SVN获取代码并通过Tomcat...

CentOS6.3之服务配置(三)利用Ant自动从SVN获取代码并通过Tomcat...

          3、在ant-svn目录下建立Ant发布所需的build-mvc.xml与build-mvc.properties文件:
                build-mvc.properties内容:
build.version=1.0.0  

svnant.jar=/usr/local/ant/lib/svnant.jar  
svnClientAdapter.jar=/usr/local/ant/lib/svnClientAdapter.jar  
svnjavahl.jar=/usr/local/ant/lib/svnjavahl.jar  
java.lib=/usr/java/jdk1.6.0_30/lib  

debuglevel=source,lines  
target=1.6  
source=1.6  

workspace=/usr/local/ant/ant-svn/workspace  
dist=${workspace}  

build=${workspace}/WebContent/WEB-INF/classes  
lib=${workspace}/WebContent/WEB-INF/lib  

src=${workspace}/src  
web=${workspace}/WebContent  
tomcat1.home=/usr/local/tomcat1  
tomcat2.home=/usr/local/tomcat2  

warpold=${dist}/${ant.project.name}.war  

svnUrl=svn://192.168.31.132/davesvn/mvc  
svnUser=dave  
svnPasswd=davepwd  
                文件重要语句说明:
                3-6行:主要表示的所需要的jar包,包括java的类库;
                8-10行:是配置ant编译所需要的资源级别和debug级别;
                12行:定义临时存放发布工程的文件目录;
                15-19行:建立发布工程的class、lib、src与web主目录;
                20-21行:定义web服务器集群配置下的tomcat节点路径;
                23行:定义发布工程的war包名称;
                25-27行:定义用于抓取svn服务器工程代码的svn服务路径,以及操作svn的用户名及其密码;
                build-mvc.xml内容:
<?xml version="1.0" encoding="UTF-8"?>   

<project basedir="." name="mvc" default="auto">   
   <property file="build-mvc.properties" />   

    <path id="svnant.lib">   
       <pathelement location="${svnjavahl.jar}" />   
       <pathelement location="${svnant.jar}" />   
       <pathelement location="${svnClientAdapter.jar}" />   
   </path>   

   <path id="java6">   
        <fileset dir="${java.lib}">   
           <include name="**/*.jar" />   
       </fileset>   
   </path>   
    <path id="project.classpath">   
       <pathelement location="${build}" />   
       <fileset dir="${lib}" />   
    </path>   

   <target name="clear">   
      <delete dir="${workspace}" />   
      <delete dir="${tomcat.home}/work/Catalina/localhost/${ant.project.name}" />   
      <delete dir="${tomcat.home}/webapps/${ant.project.name}" />   
      <delete dir="${tomcat.home}/webapps/${ant.project.name}.war" />   
    </target>   

    <taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask" classpathref="svnant.lib" />   

    <target name="svn" depends="clear">   
        <mkdir dir="${workspace}"/>   
        <svn username="${svnUser}" password="${svnPasswd}" javahl="false">   
           <checkout url="${svnUrl}" destPath="${workspace}" />   
        </svn>   
    </target>   

    <target name="compile" depends="svn" description="======compile project======">   
        <mkdir dir="${build}" />   
        <copy includeemptydirs="false" todir="${build}">   
            <fileset dir="${src}" excludes="**/*.java"/>   
       </copy>  

        <javac includejavaruntime="true" debug="true" debuglevel="${debuglevel}" destdir="${build}" source="${source}" target="${target}" encoding="utf-8">   
            <src path="${src}" />  
            <classpath>   
               <path refid="project.classpath">   
               </path>   
              <path refid="java6">   
             </path>   
          </classpath>   
      </javac>        
    </target>   

   <target name="war" depends="compile" description="======compress j2ee war file======">   
        <mkdir dir="${dist}" />   
        <war destfile="${warfile}" webxml="${web}/WEB-INF/web.xml">   
            <fileset dir="${web}">  
                                <include name="**/*.jsp"/>  
                                <include name="**/*-servlet.xml"/>  
                                <include name="**/applicationContext.xml"/>  
                        </fileset>  
                        <lib dir ="${lib}"/>  
                        <classes dir ="${build}"/>   
        </war>   
   </target>   

    <target name="shutdowntomcat" description="========shutdowntomcat===========">   
        <exec executable="${tomcat1.home}/bin/shutdown.sh" failonerror="false"></exec>  
        <sleep seconds="10"/>   
        <exec executable="${tomcat2.home}/bin/shutdown.sh" failonerror="false"></exec>   
        <sleep seconds="10"/>   
        <echo message="it is secuessful of tomcat's shutdownning !" />   
   </target>   

   <target name="startuptomcat" description="========startuptomcat===========">   
        <sleep seconds="5"/>   
        <exec executable="${tomcat1.home}/bin/startup.sh" failonerror="false"></exec>  
        <sleep seconds="5"/>  
        <exec executable="${tomcat2.home}/bin/startup.sh" failonerror="false"></exec>  
        <echo message="it is secuessful of tomcat's startuping !" />   
    </target>   

   <target name="deploy" depends="war">   
        <copy file="${warfile}" todir="${tomcat1.home}/webapps" />  
        <copy file="${warfile}" todir="${tomcat2.home}/webapps" />  
        <echo message="it is secuessful of project deploy !" />   
    </target>   

    <target name="auto" depends="shutdowntomcat,deploy,startuptomcat">   
        <echo message="DONE!!!!" />   
    </target>   
</project>   
                文件重要语句说明:
                3行:定义project的相关信息,包括名称,默认处理的target等信息;
                4行:定义ANT引用的属性文件;
                6行:定义了Svn所需要用到的jar包位置;
                12行:定义java类库文件lib;
                17行:定义编译所需要的文件目录及其使用的lib包;
                22行:定义清理相关文件目录的target;
                29行:定义svn抽取代码的相关配置任务;
                31行:定义svn抽取代码的target;
                38行:定义编译的target;
                55行:根据相关配置生成发布的war;
                68行:定义关闭tomcat集群中的节点target,从代码中可以看出,定义了两个tomcat节点;
                76行:定义启动tomcat集群中的节点target,从代码中可以看出,定义了两个tomcat节点;
                84行:定义发布工程的的target;
                90行:定义Ant执行工作的开始target;
                注:相关标签的含义请查阅其他的相关资料。
          4、在Ant-Svn目录下建立一个临时存放编译和发布工作的workspace目录:
                [root@localhost ant-svn]# mkdir workspace
                [root@localhost ant-svn]# chmod u+x workspace
          5、建立批量执行发布命令的Shell程序文件batch-ant.sh:
#!/bin/sh  

echo "=========================================================================" >> /usr/local/ant/ant-svn/res.log  
echo "============================   batch-ant-exe    =========================" >> /usr/local/ant/ant-svn/res.log  
echo "=========================================================================" >> /usr/local/ant/ant-svn/res.log  

date >> /usr/local/ant/ant-svn/res.log  
echo "============================   init the env start   =====================" >> /usr/local/ant/ant-svn/res.log  
export JAVA_HOME=/usr/java/jdk1.6.0_30  
export JAVA_BIN=/usr/java/jdk1.6.0_30/bin  

export ANT_HOME=/usr/local/ant  

export PATH=$PATHJAVA_HOME/binANT_HOME/bin  
export CLASSPATH=.JAVA_HOME/lib/dt.jarJAVA_HOME/lib/tools.jar  
export JAVA_HOME JAVA_BIN ANT_HOME PATH CLASSPATH  
echo "============================   init the env  end   ======================" >> /usr/local/ant/ant-svn/res.log  

echo "============================   close apache the env start   =============" >> /usr/local/ant/ant-svn/res.log  
/usr/local/apache/bin/apachectl -k stop  
echo "============================   close apache the env end     =============" >> /usr/local/ant/ant-svn/res.log  

date >> /usr/local/ant/ant-svn/res.log  
echo "============================   execute the ant cmd start    =============" >> /usr/local/ant/ant-svn/res.log  
cd /usr/local/ant/ant-svn  
ant -buildfile build-mvc.xml  
echo &date  
#sleep 1m  
#echo &date  
#ant -buildfile build-test.xml  
#echo "===========================  execute the ant cmd end      ==== =========" >> /usr/local/ant/ant-svn/res.log  
#date >> /usr/local/ant/ant-svn/res.log  

echo "============================   open apache the env start   ==============" >> /usr/local/ant/ant-svn/res.log  
/usr/local/apache/bin/apachectl -k start  
echo "============================   open apache the env end     ==============" >> /usr/local/ant/ant-svn/res.log  
                文件重要语句说明:
                9-16行:引入相关的环境变量,包括java、ant;
                20行:关闭apache tomcat集群服务器;
                26行:ant命令,执行build-mvc.xml文件内容;
                35行:启动apache tomcat集群服务器;
                注:shell编程请参阅其他资料。               
          6、建立监控结果文件:res.log
                [root@localhost ant-svn]# touch res.log
          7、执行批处理Shell脚本batch-ant.sh文件:
                [root@localhost ant-svn]# sh batch-ant.sh
                显示结果:
httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName  
httpd (no pid file) not running  
Buildfile: /usr/local/ant/ant-svn/build-mvc.xml  

shutdowntomcat:  
     [exec] Feb 19, 2014 7:04:09 AM org.apache.catalina.startup.Catalina stopServer  
     [exec] SEVERE: Catalina.stop:   
     [exec] java.net.ConnectException: Connection refused  
     [exec]     at java.net.PlainSocketImpl.socketConnect(Native Method)  
     [exec]     at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)  
     [exec]     at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)  
     [exec]     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)  
     [exec]     at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)  
     [exec]     at java.net.Socket.connect(Socket.java:529)  
     [exec]     at java.net.Socket.connect(Socket.java:478)  
     [exec]     at java.net.Socket.<init>(Socket.java:375)  
     [exec]     at java.net.Socket.<init>(Socket.java:189)  
     [exec]     at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:422)  
     [exec]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
     [exec]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)  
     [exec]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  
     [exec]     at java.lang.reflect.Method.invoke(Method.java:597)  
     [exec]     at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:338)  
     [exec]     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:416)  
     [exec] Feb 19, 2014 7:04:20 AM org.apache.catalina.startup.Catalina stopServer  
     [exec] SEVERE: Catalina.stop:   
     [exec] java.net.ConnectException: Connection refused  
     [exec]     at java.net.PlainSocketImpl.socketConnect(Native Method)  
     [exec]     at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)  
     [exec]     at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)  
     [exec]     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)  
     [exec]     at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)  
     [exec]     at java.net.Socket.connect(Socket.java:529)  
     [exec]     at java.net.Socket.connect(Socket.java:478)  
     [exec]     at java.net.Socket.<init>(Socket.java:375)  
     [exec]     at java.net.Socket.<init>(Socket.java:189)  
     [exec]     at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:422)  
     [exec]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
     [exec]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)  
     [exec]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  
     [exec]     at java.lang.reflect.Method.invoke(Method.java:597)  
     [exec]     at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:338)  
     [exec]     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:416)  
     [echo] it is secuessful of tomcat's shutdownning !  

clear:  
   [delete] Deleting directory /usr/local/ant/ant-svn/workspace  

svn:  
    [mkdir] Created dir: /usr/local/ant/ant-svn/workspace  
      [svn] Deprecated attribute 'username'. This attribute will disappear with SVNANT 1.3.2. Use svnSetting instead.  
      [svn] Deprecated attribute 'password'. This attribute will disappear with SVNANT 1.3.2. Use svnSetting instead.  
      [svn] Deprecated attribute 'javahl'. This attribute will disappear with SVNANT 1.3.2. Use svnSetting instead.  

compile:  
    [mkdir] Created dir: /usr/local/ant/ant-svn/workspace/WebContent/WEB-INF/classes  
    [javac] /usr/local/ant/ant-svn/build-mvc.xml:44: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds  
    [javac] Compiling 4 source files to /usr/local/ant/ant-svn/workspace/WebContent/WEB-INF/classes  

war:  
      [war] Building war: /usr/local/ant/ant-svn/workspace/mvc.war  

deploy:  
     [copy] Copying 1 file to /usr/local/tomcat1/webapps  
     [copy] Copying 1 file to /usr/local/tomcat2/webapps  
     [echo] it is secuessful of project deploy !  

startuptomcat:  
     [echo] it is secuessful of tomcat's startuping !  

auto:  
     [echo] DONE!!!!  

BUILD SUCCESSFUL  
Total time: 48 seconds  
Wed Feb 19 07:04:52 PST 2014  

httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName  
                文件重要语句说明:
                1-2行:执行ant文件的关闭apache tomcat 集群服务器配置的结果;
                3行:执行ant命令;
                5行:执行名为shutdowntomcat的target标签,关闭tomcat服务,包括tomcat1与tomcat2两个节点服务;
                8、27行:表示在关闭tomcat服务时,原本tomcat服务根本没有打开,所以在关闭时提示连接被拒绝;
                46行:执行名为clear的target标签;
                49行:执行名为svn的target标签,从svn服务器获取相关项目的代码;
                55行:执行名为compile的target标签,编译工程;
                60行:执行名为war的target标签,生成发布的war包;
                63行:执行名为deploy的target标签,发布工程;
                68行:执行名为startuptomcat的target标签,启动tomcat服务,包括tomcat1与tomcat2两个节点服务;
                71行:执行名为auto的target标签,实际上只是一个执行入口;
                74行:表示执行ant命令成功;
                78行:执行ant文件的启动apache tomcat 集群服务器配置的结果;
          8、在浏览器中输入:http://192.168.31.132/mvc/index.jsp,结果如下图所示:
                 

CentOS6.3之服务配置(三)利用Ant自动从SVN获取代码并通过Tomcat...

CentOS6.3之服务配置(三)利用Ant自动从SVN获取代码并通过Tomcat...

               从图中可以看出发布成功。
          注:1、以上过程在Centos 6.3所属32位系统下调试通过;
                 2、shell脚本中没有处理异常。

运维网 感谢您的阅读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|申请友链|sitemap|手机版|小黑屋|Archiver|运维网 ( 京ICP备16008201号  

GMT+8, 2018-11-15 20:39 , Processed in 0.075608 second(s), 33 queries , XCache On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表