Nginx
nginx 升级版本脚本
## 公共函数
function job_success(){
GREEN='\033[32m'
NC='\033[0m'
echo -e "${GREEN} $(date +"%Y-%m-%d %H:%M:%S") - $@ ${NC}"
echo
exit 0
}
function job_failed(){
RED='\033[31m'
NC='\033[0m'
echo -e "${RED} $(date +"%Y-%m-%d %H:%M:%S") - $@ ${NC}"
echo
exit 1
}
function job_execution(){
echo -e $(date +"%Y-%m-%d %H:%M:%S") - $@
echo
}
function check_and_bak_nginx(){
if command -v nginx &> /dev/null ;then
job_execution "nginx 已安装"
job_execution "nginx 版本为: $(nginx -v 2>&1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -n1)"
else
job_failed "nginx 未安装,请直接安装最新版本"
fi
if [ -d "/etc/nginx" ]; then
cp -r /etc/nginx /etc/nginx.bak
fi
if [ -d "/usr/share/nginx/html" ]; then
cp -r /usr/share/nginx/html /usr/share/nginx/html.bak
fi
}
function upload_nginx(){
# 获取 Nginx 版本号(如 1.30.0)
nginx_ver=$(nginx -v 2>&1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -n1)
if [ -z "$nginx_ver" ]; then
job_failed "错误:未检测到 Nginx 或版本号"
fi
# 比较版本:将当前版本和 1.30 排序,若最小的那个是 1.30,则当前版本 >= 1.30
if [ "$(printf '%s\n' "$nginx_ver" "1.30" | sort -V | head -n1)" = "1.30" ]; then
job_execution "Nginx 版本 ($nginx_ver) >= 1.30"
else
job_execution "Nginx 版本 ($nginx_ver) < 1.30"
wget https://nginx.org/packages/rhel/8/x86_64/RPMS/nginx-1.30.3-1.el8.ngx.x86_64.rpm \
&& yum localinstall -y nginx-1.30.3-1.el8.ngx.x86_64.rpm \
&& rm -f nginx-1.30.3-1.el8.ngx.x86_64.rpm
fi
}
function main(){
check_and_bak_nginx
upload_nginx
}
main