最初SVN_server, Local_PC, server: 123之间的文件传输是依赖手动地,编译和部署也是依赖手动的。为了避免繁琐的手工劳动,可以设计一个如下的自动方案。
一、配置自动获取并编译的环境
1) Local_PC安装ccproxy,使之成为代理服务器;
2) 123服务器上安装SVN命令行工具CollabNetSubversionEdge-2.0.1_linux-x86_64.tar.gz;
3) 配置proxy指向,修改/home/wasadmin/.subversion/servers,添加
[global]
http-proxy-host=10.6.246.136[已安装ccproxy代理服务器的PC]
http-proxy-port=808
4) 安装Ant到123服务器,同时配置环境变量
5) 配置JAVA环境变量指向随webSphere发布的IBM J9 VM虚拟机[J9 同JRockit有些地方类似,随产品发布,具较好性能]
6) 编写bash脚本compile.sh[easy]
#!/bin/sh
svn --username up /home/wasadmin/code
ant
执行该脚本3分钟之内可完成x.war, y.war, z.war, w.war四个war包得编译。
二、传输War包
因为x.war, y.war部署在122服务器上,所以需要ftp到122上,编写bash脚本getwar.sh
#!/bin/sh
ftp ftp://wasadmin:[email protected]/code/temp/x.war
ftp ftp://wasadmin:[email protected]/code/temp/y.war
getwar.sh可以在1秒内将x.war, y.war拉到122服务器上
三、自动部署到websphere
自动部署到WebSphere使用WebSphere内置支持的Jpython脚本,insserver.py[ install server.war]的内容如下,
安装其他war的py脚本类似。
# 0 set appManager MBean
appManager=AdminControl.queryNames('cell=IRM-APP,node=test-irm-app-002Node01,type=ApplicationManager,process=server_war_test_0,*')
# 1 stop app
AdminControl.invoke(appManager, 'stopApplication', 'server')
# 2 uninstall
AdminApp.uninstall('server')
# 3 install
AdminApp.install('/home/wasadmin/warpkg/server.war', '[-nodetest-irm-app-002Node01 -cell IRM-APP -server server_war_test_0 -appname server-contextroot / -MapWebModToVH [[server server.war,WEB-INF/web.xmldefault_host]]]')
# 4 start server
AdminControl.invoke(appManager, 'startApplication', 'server')
# 5 save conf
AdminConfig.save()
线性部署server.war[4m]+test.war[9m]=13m,x.war和y.war的各自部署速度小于4m。
采用并发部署server.war[4m] || test.war[9m]=9m,编写perl脚本如下,ConInsByPerl.pl
#!/usr/bin/perl
$PATH="/home/wasadmin/deploy2WebSphere/";
$CMD0="upWar0.sh";
$CMD1="upWar1.sh";
$comCMD0=join "",$PATH,$CMD0;
$comCMD1=join "",$PATH,$CMD1;
if (fork()) {
system("$comCMD0");
} else {
system("$comCMD1");
}