nginx安装脚本
#!/bin/bash
# Date: 2023-1-19
# Author: lizexin
# version: 2.0
export LANG="zh_CN.UTF-8"
echo -e "\033[31m ############Nginx安装脚本############### \033[0m"
echo -e "\033[31m 请将安装包放在/data/soft中 \033[0m"
echo -e "\033[31m 开始检查安装包路径是否存在 \033[0m"
# 软件包位置
if [ -d "/data/soft" ];then
echo -e "\033[32m 存在,不需要创建! \033[0m"
else
read -p "不存在,是否需要创建? 请输入(y/n)" yes_no
if [ "$yes_no" = "y" ];then
mkdir -p /data/soft
elif [ "$yes_no" = "n" ];then
echo -e "\033[31m 不创建,退出 \033[0m"
exit 1
else
echo -e "\033[31m 输入有误! \033[0m"
exit 1
fi
fi
# 检查gcc依赖,影响make
echo -e "\033[31m 开始检查是否有gcc依赖 \033[0m"
gcc_num=`rpm -qa |grep ^gcc|wc -l`
if [ "$gcc_num" -ge 2 ];then
echo -e "\033[32m gcc依赖存在,无需安装 \033[0m"
else
echo -e "\033[31m gcc依赖不存在或者不全,检查安装"
yum -y install gcc gcc-c++
fi
# 检查perl是否存在,在安装openssl是容易报错
echo -e "\033[31m 开始检查是否有perl依赖 \033[0m"
perl_num=`rpm -qa |grep perl-[1-9]|wc -l`
perl_version=`rpm -qa |grep perl-[1-9]|awk -F [-] '{print $2}'|awk -F [.] '{print $1}'`
if [ "$perl_num" -ge 1 ] && [ "$perl_version" -ge 5 ];then
echo -e "\033[32m perl依赖存在,无需安装 \033[0m"
elif [ "$perl_num" -ge 1 ] && [ "$perl_version" -le 5 ];then
echo -e "033[31m perl版本低于5,检查安装"
else
echo -e "\033[31m perl不存在,开始安装"
yum -y install perl
fi
# 安装pcre
echo -e "\033[32m 进入目录:/data/soft \033[0m"
cd /data/soft
echo -e "\033[32m 开始解压pcre \033[0m"
read -p "请输入版本,例如(8.45): " pcre_version
echo -e "\033[35m 解压:pcre-"$pcre_version".tar.gz \033[0m"
tar -zxvf pcre-"$pcre_version".tar.gz 2>&1 >/dev/null
sleep 1
cd /data/soft
# 安装zlib
echo -e "\033[32m 开始解压zlib \033[0m"
read -p "请输入zlib版本,例如(1.2.10): " zlib_version
echo -e "\033[35m 解压:zlib-"$zlib_version".tar.gz \033[0m"
tar -zxvf zlib-"$zlib_version".tar.gz 2>&1 >/dev/null
sleep 1
cd /data/soft
# 安装openssl
echo -e "\033[32m 开始解压openssl \033[0m"
read -p "请输入openssl版本,例如(1.1.1l): " openssl_version
echo -e "\033[35m 解压:openssl-"$openssl_version".tar.gz \033[0m"
tar -zxvf openssl-"$openssl_version".tar.gz 2>&1 >/dev/null
sleep 1
cd /data/soft
# 安装nginx
echo -e "\033[32m 开始解压nginx \033[0m"
read -p "请输入nginx版本,例如(1.12.2): " nginx_version
echo -e "\033[35m 解压:nginx-"$nginx_version".tar.gz \033[0m"
tar -zxvf nginx-"$nginx_version".tar.gz 2>&1 >/dev/null
cd nginx-"$nginx_version"
read -p "请输入nginx安装路径,例如(/data/nginx): " nginx_path
echo -e "\033[35m 开始加载.... \033[0m"
./configure --user=root --group=root --prefix=${nginx_path} --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --with-http_sub_module --with-http_ssl_module --with-pcre=/data/soft/pcre-"$pcre_version" --with-zlib=/data/soft/zlib-"$zlib_version" --with-openssl=/data/soft/openssl-"$openssl_version" 2>&1 >/dev/null
echo -e "\033[35m 开始安装,请稍等... \033[0m"
make 2>&1 >>/dev/null
make install 2>&1 >>/dev/null
echo -e "\033[32m 创建日志目录:${nginx_path}/logs \033[0m"
mkdir -p ${nginx_path}/logs
if [ "$?" -eq "0" ];then
echo -e "\033[32m 安装完成! \033[0m"
else
echo -e "\033[31m 安装失败! \033[0m"
exit 1
fi
sleep 3
cd /data/soft
read -p "是否需要删除下载的安装(输入y/Y删除,其他不删除):" inputMsg
if [ "$inputMsg" == 'y' ] || [ "$inputMsg" == 'Y' ] ;then
rm -rf nginx-"$nginx_version".tar.gz pcre-"$pcre_version".tar.gz openssl-"$openssl_version".tar.gz zlib-"$zlib_version".tar.gz
echo -e "\033[32m 删除完成 \033[0m"
else
echo -e "\033[32m 不删除 \033[0m"
fi
read -p "是否需要启动nginx(输入y/Y启动,其他不启动):" startNginxMsg
if [ "$startNginxMsg" == 'y' ] || [ "$startNginxMsg" == 'Y' ] ;then
${nginx_path}/sbin/nginx
if [ $? -eq 0 ];then
localIp=`ifconfig -a |grep inet|grep -v inet6|grep -v 127|awk '{print $2}'|tr -d "addr:"`
echo -e "\033[32m 启动成功,请访问: http://$localIp \033[0m"
else
echo -e "\033[31m 启动失败,请查看异常信息确定失败原因 \033[0m"
fi
else
echo -e "\033[35m 不启动 \033[0m"
fi
echo -e "\033[32m nginx安装完成! \033[0m"
echo -e "\033[32m 版本信息: \033[0m"
echo -e "\033[35m pcre: \033[0m" $pcre_version
echo -e "\033[35m zlib: \033[0m" $zlib_version
echo -e "\033[35m openssl: \033[0m" $openssl_version
echo -e "\033[35m nginx: \033[0m" $nginx_version
echo -e "\033[32m 安装路径: \033[0m" ${nginx_path}
echo "end"
逻辑卷安装与扩容脚本
#!/bin/bash
# Date:2023-1-16
# Author:lizexin
# Version:2.0
echo -e "\033[31m 磁盘创建与扩容,此版本将磁盘所有空间添加 \033[0m"
cat <<END
1.[新建磁盘分区]
2.[磁盘扩容]
3.[退出]
请输入您需要执行的序号:
END
read num
expr $num + 1 &> /dev/null
[ $? -ne 0 ] && {
echo -e "\033[31m 序号必须输入{1|2|3}.. \033[0m"
exit 1
}
[ "$num" -eq "1" ] && {
echo -e "\033[31m 开始新建分区...请等待... \033[0m"
sleep 2;
# 创建物理卷
read -p "请输入需要创建的物理卷,例如(/dev/vdb): " Physical_Volume
pvcreate $Physical_Volume &>/dev/null
if [ $? -ne 0 ];then
echo -e "\033[31m 创建${Physical_Volume}错误,请检查是否存在... \033[0m"
exit 1
else
echo -e "\033[32m 创建成功,物理卷为${Physical_Volume} \033[0m"
fi
# 创建卷组
read -p "请输入需要创建的卷组名称,例如(vg_data): " Volume_Group
vgcreate $Volume_Group $Physical_Volume 2>&1 >/dev/null
if [ $? -ne 0 ];then
echo -e "\033[31m 创建${Volume_Group}错误,请检查是否已存在... \033[0m"
exit 1
else
echo -e "\033[32m 创建成功,卷组为${Volume_Group}... \033[0m"
fi
# 创建逻辑卷
read -p "请输入需要创建的逻辑卷名称,例如(lv_data): " Logical_Volume
lvcreate -l 100%vg -n $Logical_Volume $Volume_Group 2>&1 >/dev/null
if [ $? -ne 0 ];then
echo -e "\033[31m 创建${Logical_Volume}错误,请检查是否正确... \033[0m"
exit 1
else
echo -e "\033[32m 创建成功,逻辑卷为${Logical_Volume} \033[0m"
fi
# 格式化
read -p "请选择格式化方式,请输入{ext4|xfs} " MKFS
if [ $MKFS = "ext4" ];then
mkfs."${MKFS}" /dev/${Volume_Group}/${Logical_Volume} 2>&1 >/dev/null
echo -e "\033[32m 格式化成功,类型为${MKFS} \033[0m"
elif [ $MKFS = "xfs" ];then
mkfs."${MKFS}" /dev/${Volume_Group}/${Logical_Volume}
echo -e "\033[32m 格式化成功,类型为${MKFS} \033[0m" 2>&1 >/dev/null
else
echo -e "输入有误!"
exit 2
fi
# 挂载点创建
read -p "创建挂载目录,请输入目录名称(例如:/data): " Dir
[ -d $Dir ] && echo -e "\033[31m 目录已存在 \033[0m" || mkdir $Dir
# 临时挂载
echo -e "\033[32m 开始挂载 \033[0m"
mount /dev/${Volume_Group}/${Logical_Volume} $Dir
# 永久挂载
echo "/dev/mapper/${Volume_Group}-${Logical_Volume} ${Dir} ${MKFS} defaults 0 0 " >>/etc/fstab
if [ $? -ne 0 ];then
echo -e "\033[31m 挂载失败,请查看是否有误! \033[0m"
exit 1
else
echo -e "\033[31m 创建成功,请用以下命令自行查看(df -hT && cat /etc/fstab) \033[0m"
fi
echo -e "\033[31m 磁盘分配完成... \033[0m"
exit 0
}
[ "$num" -eq "2" ] && {
echo -e "\033[31m 开始磁盘扩容...请等待... \033[0m"
sleep 2;
# 创建物理卷
read -p "请输入需要创建的物理卷,例如(/dev/vdb): " Physical_Volume
pvcreate $Physical_Volume 2>&1 >/dev/null
if [ $? -ne 0 ];then
echo -e "\033[31m 创建${Physical_Volume}错误,请检查是否存在... \033[0m"
exit 1
else
echo -e "\033[32m 创建成功,物理卷为${Physical_Volume} \033[0m"
fi
# 将物理卷/dev/vdc加入卷组
read -p "是否需要查看现有卷组,请输入(y/n): " VG_display
while [ "1" -eq "1" ];do
if [ "$VG_display" = "y" ];then
vgs
break
elif [ "$VG_display" = "n" ];then
echo -e "\033[31m 退出查看! \033[0m"
break
else
echo -e "\033[31m 您的输入有误,已退出! \033[0m"
break
fi
done
read -p "请输入要扩容的卷组名称,例如(vg_data): " Volume_Group
vgextend $Volume_Group $Physical_Volume 2>&1 >/dev/null
if [ $? -ne 0 ];then
echo -e "\033[31m 输入有误,请检查是否存在... \033[0m"
exit 1
else
echo -e "\033[32m 加入成功! \033[0m"
fi
read -p "请输入要添加的逻辑卷名称,例如(lv_data):" Logical_Volume
echo -e "\033[32m 开始添加! \033[0m"
lvextend -l +100%FREE -n /dev/mapper/${Volume_Group}-${Logical_Volume} 2>&1 >/dev/null
sleep 2;
if [ $? -ne 0 ];then
echo -e "\033[31m 添加失败,请检查是否存在... \033[0m"
exit 1
else
echo -e "\033[32m 加入成功! \033[0m"
fi
read -p "请选择文件类型格式,请输入{ext4|xfs} " MKFS
if [ $MKFS = "ext4" ];then
resize2fs /dev/mapper/${Volume_Group}-${Logical_Volume}
echo -e "\033[32m 扩容成功,类型为${MKFS} \033[0m" 2>&1 >/dev/null
elif [ $MKFS = "xfs" ];then
xfs_growfs /dev/mapper/${Volume_Group}-${Logical_Volume} 2>&1 >/dev/null
echo -e "\033[32m 扩容成功,类型为${MKFS} \033[0m"
else
echo -e "输入有误!"
exit 2
fi
echo -e "\033[31m 磁盘分配完成,验证请用df -hT \033[0m"
exit 0
}
# 退出
[ "$num" -eq "3" ] && {
echo "bye!"
exit 3
}
# 限制用户输入的必须是1,2,3
[[ ! "$num" =~ [1-3] ]] && {
echo "序号必须输入{1|2|3}"
exit 4
}
tomcat重启
#!/bin/bash
# Date:2023-1-9
# Author:lizexin
# Version:1.0
# 路径
App_Path=$(cd `dirname $0`;pwd)
# 获取Old_PID
PID=`ps -ef|grep java|grep -v grep|grep $App_Path |awk '{print $2}'`
function RESTART() {
echo -e "\033[35m Tomcat restarting! \033[0m"
if [[ -n $PID ]];then
echo -e "\033[35m Stop App! \033[0m"
kill -9 $PID
sleep 5
echo -e "\033[35m Start clearing the cache! \033[0m"
rm -rf ${App_Path}/../work/Catalina
sleep 3
echo -e "\033[35m Start App! \033[0m"
${App_Path}/startup.sh 2>&1 >/dev/null
New_PID=`ps -ef|grep java|grep -v grep|grep $App_Path |awk '{print $2}'`
echo -e "\033[35m Application startup completed,New PID is ${New_PID} \033[0m"
else
echo -e "\033[35m There are no running processes \033[0m"
echo -e "\033[35m Start clearing the cache! \033[0m"
rm -rf ${App_Path}/../work/Catalina
echo -e "\033[35m Start App! \033[0m"
${App_Path}/startup.sh 2>&1 >/dev/null
New_PID=`ps -ef|grep java|grep -v grep|grep $App_Path |awk '{print $2}'`
sleep 10
echo -e "\033[35m Application startup completed,New PID is ${New_PID} \033[0m"
fi
exit
}
RESTART