Tomcat版本升级
提示:在做项目维护的时候,避免不了会曝出一些漏洞问题,那么就需要对版本进行升级到更高的版本
例如:tomcat作为开源中间件,每段时间就可能曝出漏洞,就需要进行升级维护
前言
提示:本文主要想记录下自己在做维护时的一些小小功能的实现
一、Tomcat的增量升级
1.升级方法
介绍:tomcat的增量升级,是存在于部分生产环境中,已经在正式使用了,可能对tomcat的配置做了定制,那么此时就不能做全量的升级,就需要做增量升级,方法就是对tomcat的lib目录下的jar文件进行升级,当然我们操作前的步骤一定是备份-备份-备份,重要的事情说三遍。
2.自动化脚本实现
代码如下(示例):
#!/bin/bash
#需要升级的tomcat名称
Tomcat_name=tomcat_mod_v8.5.70
#tomcat所在的上级目录
Tomcat_dir=/app/tomcat
#tomcat的属组
Tomcat_user=root
Tomcat_group=root
#toamct备份目录
Backup_dir=/app/backup
backup_dir=$Backup_dir/backup-$(date +"%Y-%m-%d-%H-%M-%S")
if id -u $Tomcat_user >/dev/null 2>&1; then
echo -e "\033[32m $Tomcat_user 用户已经存在 \033[0m"
else
egrep "^$Tomcat_group" /etc/group >& /dev/null
if [ $? -ne 0 ]
then
groupadd $Tomcat_group
fi
useradd -g $Tomcat_group $Tomcat_user
echo -e "\033[32m $Tomcat_user 用户创建成功 \033[0m"
fi
backup(){
if [ -d "$backup_dir" ];then
echo -e "\033[32m 全量备份$Tomcat_name \033[0m"
cp -r $Tomcat_dir/$Tomcat_name $backup_dir
else
echo -e "\033[32m 创建备份目录$backup_dir \033[0m"
mkdir -p $backup_dir
echo -e "\033[32m 全量备份$Tomcat_name \033[0m"
cp -r $Tomcat_dir/$Tomcat_name $backup_dir
fi
file1=$backup_dir/$Tomcat_name
file2=$Tomcat_dir/$Tomcat_name
back_num=`du -sh $file1 |awk '{print $1}'`
pro_num=`du -sh $file2 |awk '{print $1}'`
if [ $back_num == $pro_num ];then
echo -e "\033[33m 备份文件与原文件大小一致,备份成功 \033[0m"
else
echo -e "\033[33m 备份文件与原文件大小不一致,备份失败 \033[0m"
fi
}
update(){
echo -e "\033[32m 替换Tomcat的lib文件 \033[0m"
mv $Tomcat_dir/$Tomcat_name/lib $Tomcat_dir/$Tomcat_name/lib-$(date +"%Y-%m-%d")
tar xvf update_lib_8.5.81.tar.gz -C $Tomcat_dir/$Tomcat_name >>/dev/null
chown -R $Tomcat_user:$Tomcat_group $Tomcat_dir/$Tomcat_name/lib
}
start_tom(){
echo -e "\033[32m 正在重启Tomcat服务 \033[0m"
if [ $Tomcat_user == "root" ];then
chown -R $Tomcat_user:$Tomcat_group $Tomcat_dir/$Tomcat_name
sh $Tomcat_dir/$Tomcat_name/bin/startup.sh
else
chown -R $Tomcat_user:$Tomcat_group $Tomcat_dir/$Tomcat_name
su - $Tomcat_user -c "sh $Tomcat_dir/$Tomcat_name/bin/startup.sh"
fi
}
stop_tom(){
echo -e "\033[32m 正在停止Tomcat服务 \033[0m"
if [ $Tomcat_user == "root" ];then
sh $Tomcat_dir/$Tomcat_name/bin/shutdown.sh
chown -R $Tomcat_user:$Tomcat_group $Tomcat_dir/$Tomcat_name
else
su - $Tomcat_user -c "sh $Tomcat_dir/$Tomcat_name/bin/shutdown.sh"
chown -R $Tomcat_user:$Tomcat_group $Tomcat_dir/$Tomcat_name
fi
}
stop_tom
backup
update
start_tom
二、Tomcat的全量升级
1.升级方法
介绍:tomcat的全量升级,是指在对于tomcat的本身并没有过多的改造,可以通过全量升级,适用于大版本升级,当然我们操作前的步骤一定是备份-备份-备份,重要的事情说三遍。
2.自动化脚本实现
代码如下(示例):
#!/bin/bash
Tomcat_name=tomcat_mod_v8.5.70
#tomcat所在的上级目录
Tomcat_dir=/app/tomcat
#tomcat的属组
Tomcat_user=root
Tomcat_group=root
#toamct备份目录
Backup_dir=/app/backup
#tomact的所用端口(全量升级时使用)
Tomcat_port=8888
backup_dir=$Backup_dir/backup-$(date +"%Y-%m-%d-%H-%M-%S")
if id -u $Tomcat_user >/dev/null 2>&1; then
echo -e "\033[32m $Tomcat_user 用户已经存在 \033[0m"
else
egrep "^$Tomcat_group" /etc/group >& /dev/null
if [ $? -ne 0 ]
then
groupadd $Tomcat_group
fi
useradd -g $Tomcat_group $Tomcat_user
echo -e "\033[32m $Tomcat_user 用户创建成功 \033[0m"
fi
backup(){
if [ -d "$backup_dir" ];then
echo -e "\033[32m 全量备份$Tomcat_name \033[0m"
cp -r $Tomcat_dir/$Tomcat_name $backup_dir
else
echo -e "\033[32m 创建备份目录$backup_dir \033[0m"
mkdir -p $backup_dir
cp -r $Tomcat_dir/$Tomcat_name-$(date +"%Y-%m-%d")/webapps $Tomcat_dir/$Tomcat_name
echo -e "\033[32m 全量备份$Tomcat_name \033[0m"
cp -r $Tomcat_dir/$Tomcat_name $backup_dir
fi
file1=$backup_dir/$Tomcat_name
file2=$Tomcat_dir/$Tomcat_name
back_num=`du -sh $file1 |awk '{print $1}'`
pro_num=`du -sh $file2 |awk '{print $1}'`
if [ $back_num == $pro_num ];then
echo -e "\033[33m 备份文件与原文件大小一致,备份成功 \033[0m"
else
echo -e "\033[33m 备份文件与原文件大小不一致,备份失败 \033[0m"
fi
}
update(){
echo -e "\033[32m 全量替换tomcat版本升级 \033[0m"
mv $Tomcat_dir/$Tomcat_name $Tomcat_dir/$Tomcat_name-$(date +"%Y-%m-%d")
tar xvf iam_tomcat_v8.5.81.tar.gz -C $Tomcat_dir >>/dev/null
mv $Tomcat_dir/iam_tomcat_v8.5.81 $Tomcat_dir/$Tomcat_name >>/dev/null
chown -R $Tomcat_user:$Tomcat_group $Tomcat_dir/$Tomcat_name
sed -i 's|8080|'$Tomcat_port'|g' $Tomcat_dir/$Tomcat_name/conf/server.xml
}
start_tom(){
echo -e "\033[32m 正在重启Tomcat服务 \033[0m"
if [ $Tomcat_user == "root" ];then
chown -R $Tomcat_user:$Tomcat_group $Tomcat_dir/$Tomcat_name
sh $Tomcat_dir/$Tomcat_name/bin/startup.sh
else
chown -R $Tomcat_user:$Tomcat_group $Tomcat_dir/$Tomcat_name
su - $Tomcat_user -c "sh $Tomcat_dir/$Tomcat_name/bin/startup.sh"
fi
}
stop_tom(){
echo -e "\033[32m 正在停止Tomcat服务 \033[0m"
if [ $Tomcat_user == "root" ];then
sh $Tomcat_dir/$Tomcat_name/bin/shutdown.sh
chown -R $Tomcat_user:$Tomcat_group $Tomcat_dir/$Tomcat_name
else
su - $Tomcat_user -c "sh $Tomcat_dir/$Tomcat_name/bin/shutdown.sh"
chown -R $Tomcat_user:$Tomcat_group $Tomcat_dir/$Tomcat_name
fi
}
stop_tom
backup
update
start_tom
总结
通常对于组件比较少得时候,手动执行升级就可以了,当服务器资源或者中间件tomcat较多的时候,使用自动化脚本的优势就能体现出来了。