1.发版之前需要在IT服务管理系统上先提一个变更,要在每天下午5点半之前提交,否则就是紧急变更。变更可以参照工单CH000124341,优化项在厂商进行版本申请的邮件里都有写,可复制邮件中的版本优化项内容
2.提交完变更后需要编辑对应的企业微信和招商随行公告,让部门领导审批,审批通过后联系企业微信和招商随行管理员发布对应的公告(因为发布公告也需要有权限),对应内容如下图所示:
3.然后从GIT仓库下载好OA整合包到桌面
OA的git仓库没有权限,让OA系统负责人找GIT那边帮忙增加一下
4.并将整合包重命名为OA-20211105.zip(这个日期为当前发版的日期,根据实际来命名)
5.如果OA版本仓库里面有SQL脚本的,一般则需要在发版前先执行SQL脚本,具体执行时间可咨询厂商人员。有SQL则进行这一步,无SQL就直接进行下一步
登陆招商盾运维版,需要有Ukey,PIN密码为111111
浏览器页面输入192.168.100.1,然后登陆自己的域账号密码进行访问服务器资源,按照下图步骤启动PLSQLweb页面(如说使用self同用户账号登录则会出现"服务器返回的数据格式错误!")
OA的数据库账号密码问伍智敏索要,输入完点击OK就可以访问数据库了
执行SQL脚本如下图所示操作后按F8(或者左上角的齿轮)开始执行,执行完以后提交commit即可
需要回滚的话则点击旁边的红色按钮
6.开始准备版本发布
登陆10.16.0.51服务器进行如下操作:
mkdir -p /usr/oa/wzmdir/`date +%Y%m%d`/ekp
cd /usr/oa/wzmdir/`date +%Y%m%d`
rz
选择下载的目录将OA-20211105.zip传入服务器的nfs目录中
unzip OA-20211105.zip
ls -r ekp
ls -r /home/tomcat/ekp
比较/home/tomcat/ekp下的子目录是否和/usr/oa/wzmdir/20211105/ekp下的子目录结构相同,避免直接解压覆盖不了源文件
如果子目录结构一样则证明封板时归档目录正确,不同则根据实际解压出子目录进行解压操作
变更实施详细步骤:
- 先停web服务器10.16.0.51-55,10.16.0.92-95,10.41.0.136-140
- 再停功能服务器10.16.0.61-63
- 启动功能服务器10.16.0.61-63
- 再启动web服务器10.16.0.51-55,10.16.0.92-95,10.41.0.136-140
注意:10.16.0.51-55、10.16.0.92-95、10.41.0.136-140都发版,但是10.16.0.51-55不启动服务,因为只购买了蓝凌厂商12台服务器的正式许可。如果服务启动异常,看看是否是挂载的nfs磁盘原因导致。
在web服务器10.16.0.51-55,10.16.0.92-95,10.41.0.136-140做如下操作:
#先备份ekp目录,如果版本有问题直接覆盖目录进行回滚
cp -rf /home/tomcat/ekp /home/tomcat/backup_oa/ekp_back`date +%Y%m%d`
unzip /usr/oa/wzmdir/20211105/OA-20211105.zip -d /home/tomcat/ekp/
cd /home/tomcat/linux64/ && ./stop-tomcat.sh
#执行停止脚本后等一两分钟后查进程是否停止,如果没有停止就使用kill {pid}
ps -elf|grep java|grep -v grep
#确认进程结束后删除实例下的缓存文件,避免更新程序后还是使用的旧文件
rm /home/tomcat/linux64/tomcat/work/Catalina/localhost -rf
cd /home/tomcat/linux64/ && ./start-normal64.sh
在功能服务器10.16.0.61-63做如下操作(程序路径不同):
cp -rf /root/tomcat/ekp /root/tomcat/backup_oa/ekp_back`date +%Y%m%d`
unzip /usr/oa/wzmdir/20211105/OA-20211105.zip -d /root/tomcat/ekp/
cd /root/tomcat/linux64/ && ./stop-tomcat.sh
ps -elf|grep java|grep -v grep
rm /root/tomcat/linux64/tomcat/work/Catalina/localhost -rf
cd /root/tomcat/linux64/ && ./start-normal64.sh
7.如果发版存在问题,则删除ekp目录(请谨慎操作!!!),将备份的文件夹(具体日期以发版当天为准)拷贝或移动到tomcat工作目录的ekp下,具体操作如下:
cd /home/tomcat/
rm -rf ekp
cp -rf backup_oa/ekp_back20211105 ekp
#或者
mv backup_oa/ekp_back20211105 ekp
综合以上的步骤,已写成shell脚本放在/root目录下,每次发版直接运行即可,使用方法为:
发版前在任意服务器上运行./oa_release.sh upload
然后在所有服务器上运行./oa_release.sh stop
最后在所有服务器上运行./oa_release.sh start
如果发版失败可以运行./oa_release.sh rollback
代码内容如下:
#!/bin/bash
#集团OA3.0发版脚本。脚本创始人:刘泽和
#根据tomcat的工作目录不同,可在此修改
workdir=/home/tomcat
#以下便是脚本的固定内容,定义服务器共享目录和发版日期
nfsdir=/usr/oa/wzmdir
release_day=`date +%Y%m%d`
#脚本输出信息提示函数
log_output () {
echo -e "\e[$1m[$(date +"%F %T")] $2 \e[0m"
}
#检测共享目录下的OA整合包归档路径是否正确
CHECK_OA () {
unzip -o ${nfsdir}/${release_day}/OA-${release_day}.zip -d ${nfsdir}/${release_day}/ekp/ > /dev/null
new_array=(`(cd ${nfsdir}/${release_day};ls -R ekp)`)
old_array=(`(cd ${workdir};ls -R ekp)`)
for array in "${new_array[@]}"
do
if [[ "${old_array[@]}" =~ "${array}" ]];then
log_output 32 "INFO: 检测压缩包中目录或文件${array}与${workdir}/ekp下路径相同"
else
log_output 31 "ERROR: 检测压缩包的目录或文件${array}为${workdir}/ekp下的新增文件,请检查"
fi
done
}
#进行ekp目录的备份操作,同时为节省空间将一个月前的备份目录删除
BACKUP () {
log_output 31 "INFO: 此选项已添加进所有服务器的crond里"
if [ -d ${workdir}/backup_oa/ekp_back${release_day} ];then
log_output 32 "INFO: ekp目录已经进行过备份操作"
else
cp -rf ${workdir}/ekp ${workdir}/backup_oa/ekp_back${release_day}
log_output 32 "INFO: ekp目录备份完成,备份在${workdir}/backup_oa目录下"
fi
find ${workdir}/backup_oa/ -maxdepth 1 -type d -mtime +14 -exec rm -rf {} \;
log_output 32 "INFO: 超过14天之前的ekp备份目录已删除"
}
#上传OA整合包
UPLOAD () {
log_output 32 "INFO: 此选项只需要在一台服务器上执行即可"
log_output 31 "INFO: 如果中途需要退出脚本,请使用Ctrl+c退出"
while :
do
if command -v rz > /dev/null;then
if [ -d ${nfsdir}/${release_day} ];then
rm -rf ${nfsdir}/${release_day}
sleep 2 && continue
else
mkdir -p ${nfsdir}/${release_day}/ekp
cd ${nfsdir}/${release_day}
log_output 32 "INFO: 请上传OA整合包"
rz
if [ $? -eq 0 ];then
if [ -f ${nfsdir}/${release_day}/*.zip ];then
mv *.zip OA-${release_day}.zip 2> /dev/null
log_output 32 "INFO: OA整合包已经重命名成功,为OA-${release_day}.zip"
else
log_output 31 "ERROR: 请检查OA整合包是否上传错误,文件不为zip压缩包"
sleep 2 && continue
fi
CHECK_OA
break
else
echo
log_output 31 "ERROR: OA整合包上传失败,请重新上传"
sleep 2 && continue
fi
fi
esle
log_output 31 "INFO: 检测系统上lrzsz软件还未安装,将开始安装"
yum -y install lrzsz -q
sleep 2 && continue
fi
done
}
#部署版本,解压停服务,删除缓存文件
DEPLOY () {
if [ -d ${workdir}/backup_oa/ekp_back${release_day} ];then
log_output 31 "INFO: 开始部署,此选项需要在所有服务器上进行操作"
unzip -o ${nfsdir}/${release_day}/OA-${release_day}.zip -d ${workdir}/ekp/ > /dev/null
log_output 31 "INFO: 解压OA整合包完成"
log_output 32 "INFO: 将开始停止tomcat服务……"
cd ${workdir}/linux64 &&./stop-tomcat.sh
sleep 5
pid=`ps -elf | grep java | grep -v grep | awk '{print $4}'`
if [ -z "$pid" ];then
log_output 31 "INFO: tomcat服务已停止"
rm -rf ${workdir}/linux64/tomcat/work/Catalina/localhost
log_output 31 "INFO: tomcat实例缓存文件已删除"
else
kill -9 ${pid}
sleep 5
log_output 31 "INFO: tomcat服务已停止"
rm -rf ${workdir}/linux64/tomcat/work/Catalina/localhost
log_output 31 "INFO: tomcat实例缓存文件已删除"
fi
else
log_output 32 "ERROR: 请先进行目录备份操作"
fi
}
#发行部署后版本,启动服务实例
RELEASE () {
log_output 31 "INFO: 即将发行新版本,服务启动完毕后中途退出请按Ctrl+c键"
ps -elf | grep java | grep -v grep > /dev/null
if [ $? -eq 0 ];then
log_output 32 "ERROR: 服务还在运行中,请先停止服务"
else
cd ${workdir}/linux64&&./start-normal64.sh
fi
}
#发版有问题就回滚版本
ROLLBACK () {
pid=`ps -elf | grep java | grep -v grep | awk '{print $4}'`
if [ -d ${workdir}/backup_oa/ekp_back${release_day} ];then
if [ -z "$pid" ];then
log_output 31 "INFO: 开始进行版本回滚"
rm -rf ${workdir}/ekp
mv ${workdir}/backup_oa/ekp_back${release_day} ${workdir}/ekp
rm -f ${workdir}/linux64/tomcat/work/Catalina/localhost
log_output 31 "INFO: 版本回滚完成"
log_output 31 "INFO: 即将启动服务实例,启动完毕后中途退出请按Ctrl+c键"
cd ${workdir}/linux64&&./start-normal64.sh
else
kill -9 ${pid}
sleep 5
log_output 31 "INFO: 开始进行版本回滚"
rm -rf ${workdir}/ekp
mv ${workdir}/backup_oa/ekp_back${release_day} ${workdir}/ekp
rm -f ${workdir}/linux64/tomcat/work/Catalina/localhost
log_output 31 "INFO: 版本回滚完成"
log_output 31 "INFO: 即将启动服务实例,启动完毕后中途退出请按Ctrl+c键"
cd ${workdir}/linux64&&./start-normal64.sh
fi
else
log_output 32 "ERROR: 无法进行版本回滚,未找到今日备份目录,请手动检查"
fi
}
case $1 in
upload)
UPLOAD;;
DEPLOY)
DEPLOY;;
release)
RELEASE;;
rollback)
ROLLBACK;;
backup)
BACKUP;;
*)
echo -e "\e[32m请按提示执行如下命令:\n \
./oa_release.sh upload|start|stop|backup\n \
upload --> 启用上传OA整合包功能\n \
release --> 启用版本发行功能\n \
deploy --> 启用版本部署功能\n \
rollback--> 启用版本回滚功能\n \
backup --> 已加入计划任务执行备份功能,可忽略\e
esac
二、集团GM-NOAP门户系统的发版指引
门户系统的发版同上类似,变更工单可参照
[CH000137487]集团OA门户V13.20211217版本变更
门户一般只替换相应的jsp文件即可,不用重启应用,所以也不需要发公告
集团门户web端地址:
10.16.0.153
10.16.0.154
10.16.0.158
10.16.0.160
10.16.0.176
10.16.0.177
10.41.0.165
10.41.0.166
10.41.0.167
10.41.0.168
10.41.0.169
10.41.0.170
使用Xshell工具的"发送键输入到所有会话"批量执行命令即可
1.备份
mkdir -p /home/backup_ekp/`date +%Y%m%d`
cp -p /home/ekp/ekp/备份文件路径 /home/ekp/`date +%Y%m%d`/
2.变更实施详细步骤
mkdir -p /usr/oa/wzmdir/portal/`date +%Y%m%d`
cd/usr/oa/wzmdir/portal/`date +%Y%m%d`
rz
上传门户版本包,版本包命名格式同OA一样
unzip OA-`date +%Y%m%d`.zip
\cp -f /usr/oa/wzmdir/portal/`date +%Y%m%d`/更新的文件路径 /home/ekp/更新的文件路径
Q.E.D.