文档章节

Ant实现对Linux服务器上WebLogic应用服务自动部署发布

Arthur126
 Arthur126
发布于 2015/12/23 16:14
字数 1421
阅读 126
收藏 7

        使用Ant对WebLogic应用服务进行自动备份应用包,上传新应用包,重新启动服务。进而实现应用服务的自动部署。

        一、将各个WebLogic应用服务添加自动停用服务及其重启shell脚本

         kill.sh  供另一个sh脚本调用,作用:根据Linux进程包含服务名删除WebLogic应用服务进程。
#!/usr/bin/ksh

NAME=$1
echo $NAME
ID=`ps -ef | grep "$NAME" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
echo $ID
echo "---------------"
for id in $ID
do
kill -9 $id
echo "killed $id"
done
echo "---------------"

        restart.sh作用对WebLogic应用服务进行关闭,并重启。中间里面的rm删除语句是为了清除WebLogic里面的缓存,以避免WebLogic应用服务没有及时被更新,请根据实际情况处理。下面例子是一台机器上面部署了2个WebLogic应用服务。

#!/usr/bin/ksh

date
echo "--------stop appservera------------"
date
./kill.sh appservera
rm -r /weblogic/user_projects/domains/你的domain域名/servers/appservera/tmp/_WL_user/应用文件夹名/
rm -r /weblogic/user_projects/domains/你的domain域名/servers/appservera/stage/应用文件夹名/
echo "--------start appservera-----------"
./startappservera.sh
date
sleep 100

date
echo "--------stop appserverb-----------"
./kill.sh appserverb
rm -r /weblogic/user_projects/domains/你的domain域名/servers/appserverb/tmp/_WL_user/应用文件夹名/
rm -r /weblogic/user_projects/domains/你的domain域名/servers/appserverb/stage/应用文件夹名/

echo "--------start appserverb-----------"
./startappserverb.sh
date

#exit 0

        添加2个sh文件到/weblogic/user_projects/domains/你的domain域名/目录下,每一个应用服务器都需要添加这2个脚本。如果采用FTP上传这2个脚本,记得保证脚本文件格式为UNIX。并使用以下语句进行执行权限赋权:

$ cd /weblogic/user_projects/domains/你的domain域名/
$ chmod u+x kill.sh
$ chmod u+x restart.sh

        二、添加自动发布脚本

        最好找一台独立的非WebLogic应用服务器作为部署服务器,如果没有也可以使用WebLogic应用服务器。但注意目录隔离,避免造成不良影响。下面为自动发布文件夹存放的文件列表:

 

        log文件夹是存放发布日志,供发布分析或发邮件等使用。

        build_config.xml为ant执行部署配置文件,具体内容如下:      

<?xml version="1.0" encoding="UTF-8"?>
<project default="run" name="autodeploy">

    <description>系统自动发布脚本</description>

    <property file="config.properties" />

    <!-- restartserver无法正常启动,在此放弃...改为页面手动更新 -->
    <target name="run" depends="init,bakup,upload,deploy,restartserver" />
    
    <target name="init">
        <echo>Initializing environment properties..</echo>
        <property environment="env" />
        <property name="deploy.log.dir" value="${basedir}/log" />
        <mkdir dir="${deploy.log.dir}" />
        <tstamp>
            <format property="buidSqlName" pattern="yyyy-MM-dd" />
        </tstamp>
        <tstamp>
            <format property="buidTime" pattern="yyyyMMddhhmmss" />
        </tstamp>
        <property name="deploy.log.file" value="${deploy.log.dir}/${env.name}_${buidTime}.log" />
        <record name="${deploy.log.file}" />
    </target>

    <!-- 备份应用服务器上的程序 -->
    <target name="bakup" depends="init">
        <echo message="SCP: bakup file from ${app.server01}" />
        <sshexec host="${app.server01}" username="${app.userid}" password="${app.password01}" trust="true"
            command="cp -r ${app.remotedir}/${env.name} ${app.bakupdir}${buidTime}" />
        <echo message="SCP: bakup file from ${app.server02}" />
        <sshexec host="${app.server02}" username="${app.userid}" password="${app.password02}" trust="true"
            command="cp -r ${app.remotedir}/${env.name} ${app.bakupdir}${buidTime}" />
        <echo message="SCP: bakup file from ${app.server03}" />
        <sshexec host="${app.server03}" username="${app.userid}" password="${app.password03}" trust="true"
            command="cp -r ${app.remotedir}/${env.name} ${app.bakupdir}${buidTime}" />
        <echo message="SCP: bakup file from ${app.server04}" />
        <sshexec host="${app.server04}" username="${app.userid}" password="${app.password04}" trust="true"
            command="cp -r ${app.remotedir}/${env.name} ${app.bakupdir}${buidTime}" />
    </target>
    
    <!-- war包上传至服务器 -->
    <target name="upload" depends="init">
        <echo message="begin upload compress file to ${app.server01}" />
        <scp todir="${app.userid}:${app.password01}@${app.server01}:${app.remotedir}" trust="true">
            <fileset dir="${basedir}/">
                <include name="${package.name}" />
            </fileset>
        </scp>
        <echo message="begin upload compress file to ${app.server02}" />
        <scp todir="${app.userid}:${app.password02}@${app.server02}:${app.remotedir}" trust="true">
            <fileset dir="${basedir}/">
                <include name="${package.name}" />
            </fileset>
        </scp>
        <echo message="begin upload compress file to ${app.server03}" />
        <scp todir="${app.userid}:${app.password03}@${app.server03}:${app.remotedir}" trust="true">
            <fileset dir="${basedir}/">
                <include name="${package.name}" />
            </fileset>
        </scp>
        <echo message="begin upload compress file to ${app.server04}" />
        <scp todir="${app.userid}:${app.password04}@${app.server04}:${app.remotedir}" trust="true">
            <fileset dir="${basedir}/">
                <include name="${package.name}" />
            </fileset>
        </scp>
    </target>
    
    <!-- 部署war包 -->
    <target name="deploy" depends="init">
        <echo message="upzip war package to ${app.server01}" />
        <sshexec host="${app.server01}" username="${app.userid}" password="${app.password01}" trust="true" command=" cd ${app.remotedir}; unzip -o ${package.name} -d ${env.name};" />
        <echo message="upzip war package to ${app.server02}" />
        <sshexec host="${app.server02}" username="${app.userid}" password="${app.password02}" trust="true" command=" cd ${app.remotedir}; unzip -o ${package.name} -d ${env.name};" />
        <echo message="upzip war package to ${app.server03}" />
        <sshexec host="${app.server03}" username="${app.userid}" password="${app.password03}" trust="true" command=" cd ${app.remotedir}; unzip -o ${package.name} -d ${env.name};" />
        <echo message="upzip war package to ${app.server04}" />
        <sshexec host="${app.server04}" username="${app.userid}" password="${app.password04}" trust="true" command=" cd ${app.remotedir}; unzip -o ${package.name} -d ${env.name};" />
    </target>
    
    <!-- 重启weblogic服务 -->
    <target name="restartserver" depends="init">
        <echo message="restart server ${app.server01}" />
        <sshexec host="${app.server01}" username="${app.userid}" password="${app.password01}" trust="true" command="cd ${appserver.path}/;sh restart.sh" failonerror="false" />
        <echo message="restart server ${app.server02}" />
        <sshexec host="${app.server02}" username="${app.userid}" password="${app.password02}" trust="true" command="cd ${appserver.path}/;sh restart.sh" failonerror="false" />
        <echo message="restart server ${app.server03}" />
        <sshexec host="${app.server03}" username="${app.userid}" password="${app.password03}" trust="true" command="cd ${appserver.path}/;sh restart.sh" failonerror="false" />
        <echo message="restart server ${app.server04}" />
        <sshexec host="${app.server04}" username="${app.userid}" password="${app.password04}" trust="true" command="cd ${appserver.path}/;sh restart.sh" failonerror="false" />
    </target>
    
</project>

        config.properties为ant部署配置文件用到的一些变量属性配置文件,内容如下:

env.name=app
basedir=.
#发布包文件名
package.name=app.war
#应用服务器环境配置信息
app.server01=10.0.209.1
app.server02=10.0.209.2
app.server03=10.0.209.3
app.server04=10.0.209.4
#WebLogic部署应用路径
app.remotedir=/com/applications
#应用备份存放路径
app.bakupdir=/com/applications/backup/app_
#服务器用户名密码
app.userid=weblogic
app.password01=weblogic@01
app.password02=weblogic@02
app.password03=weblogic@3
app.password04=weblogic@4
#服务器启动脚本存放路径
appserver.path=/weblogic/user_projects/domains/你的WebLogic域名

        run.sh为自动发布调用脚本,需要赋予可执行权限,内容如下:

ant -buildfile build_config.xml run

        赋权语句:

$ chmod u+x /自动发布脚本目录/run.sh

        app.war应用war包。

        三、发布调用及其工作原理

       先将要发布的war包拷贝到自动发布目录下,替换app.war,执行该目录下的run.sh脚本,坐等自动发布....

        原理:无非采用密令脚本来实现人工操作,使用ant相关命令实现自动部署操作。

        过程可能存在一些繁琐,读者根据实际情况进行优化,注意sh脚本的编码格式,是否赋权等细节问题。以上供参考。

© 著作权归作者所有

Arthur126
粉丝 3
博文 33
码字总数 17952
作品 0
徐汇
高级程序员
私信 提问
基于ant自动部署ear/war 文件到weblogic12c

本人最近学习使用jenkins+svn+ant 自动部署ear文件。所以特此记录一下如何通过ant 自动部署ear文件到weblogic. 通常我们可以通过weblogic直接发布application, 就是通过登陆weblogic web co...

vjjy001
2018/06/26
0
0
intelliJ idea + Ant +weblogic10 部署项目

RT: 企业项目 结构比较复杂 用Ant打的包可以直接weblogic下部署运行 现在用idea试下 在idea里配置weblogic后 想把idea打的war包添加到weblogic 然后启动运行 总不成功 后来比对发现idea打的...

Mr_Da
2016/07/29
1K
0
夜半菜鸟惊魂

晚上睡得很晚,1点半被电话吵醒,是霍工。听声音他们好像在服务器机房里边。 原来是呼叫中心系统的安全认证服务器被呼叫中心新招的菜鸟给重装了。我靠,居然是重装而不是重启。导致呼叫中心系...

yonge
2009/03/03
212
1
部署公司打包工具需要注意的一些问题

公司利用ant提供了一个打包环境,大概的功能是通过ant直接checkout cvs服务器上面的代码,编译后生成能够直接部署在weblogic服务器上的ear包。 虽然有部署文档,坑却还是有。ant是必须安装的...

彭苏云
2014/04/02
88
0
centos安装weblogic,启动报错

我在虚拟机的centos上安装了weblogic,并新建的域,都成功了,但启动的时候有报错。我的weblogic版本是10.3.5 ,jdk是1.7. 哪位大神遇到过,求解答!!! JAVA Memory arguments: -Xms512m -X...

YesI_Du
2016/06/22
363
1

没有更多内容

加载失败,请刷新页面

加载更多

Tensorflow 2.0安装

Tensorflow2.0安装环境: Ubuntu 16.04或更高(64位) Windows 7或者更高(64位,且支持python3) 安装Tensorflow 2.0 GPU版本的需要安装NVIDIA相关软件包: NVIDIA驱动 :版本必须410.x或更...

JosiahMg
9分钟前
1
0
TL138/1808/6748F-EasyEVM开发板硬件、CPU、FLASH、RAM

TL138/1808/6748F-EasyEVM是广州创龙基于SOM-TL138/SOM-TL1808/SOM-TL6748F核心板开发的一款开发板。由于SOM-TL138/SOM-TL1808/SOM-TL6748核心板管脚兼容,所以此三个核心板共用同一个底板。...

Tronlong创龙
17分钟前
2
0
百度嵌入式AI解决方案EdgeBoard之内存驱动设计介绍

1. 背景介绍 由于 FPGA 具备可编程和高性能计算的特点,基于FPGA硬件的AI计算加速,正广泛地应用到计算机视觉处理领域。其中极具代表性的部署方式之一就是使用FPGA和CPU组合构成异构计算系统...

AI君
23分钟前
3
0
开放应用模型(OAM):全球首个云原生应用标准定义与架构模型

Kubernetes 项目作为容器编排领域的事实标准, 成功推动了诸如阿里云 Kubernetes (ACK)等云原生服务的迅速增长。但同时我们也关注到,Kubernetes 的核心 API 资源比如 Service、Deploymen...

Mr_zebra
26分钟前
2
0
《Linux操作系统-Exynos4412》编译和安装Busybox

开发环境:Exynos4412-iTOP-4412开发板 现在 Busybox 的配置已经完成了,接下来开始编译 Busybox,在 Ubuntu 的终端输入 “make”命令开始编译 Busybox,如下图。 下图为编译过程中的截图。 ...

书白
29分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部