首页
运维
编程

小布江

首页
运维
编程
  • Kubernetes

  • 日常

    • K8s-Minio集群迁移
    • Docker构建多架构镜像
    • Minio备份及恢复
    • cert-manager自动签发Lets Encrypt
    • Ansible批量发送密钥
    • Containerd配置私有Harbor镜像仓库
    • kvm虚拟机修改密码
    • Nexus
    • Nginx之tcp转发
    • Arthas
    • 开启telnet登录
    • CPU亲和
    • Harbor复制镜像
    • KVM虚拟机根目录扩容
    • RabbitMQ RPM部署
    • RabbitMQ Docker-Compose部署
    • RocketMQ二进制部署
    • RocketMQ Docker-Compose部署
    • Nginx版本升级
    • kvm虚拟机磁盘扩容
    • kafka双写
    • linux挂盘分区
    • Oracle-11g单机部署
    • GlusterFS部署
    • 主机磁盘管理
    • SSL自签证书管理
    • PicGo自建图床
    • Docker Mirrors
  • Prometheus

  • Cl

  • 运维
  • 日常
小布江
2024-07-21

Nginx版本升级


生产环境的 Nginx 需要升级,由于之前是通过编译安装的,这边升级的时候整理了升级步骤。


#!/bin/bash
# 颜色定义
RED="\033[31m"
GREEN="\033[32m"
YELLOW="\033[33m"
BLUE="\033[34m"
PLAIN="\033[0m"

# 进度提示函数
info() {
    echo -e "${BLUE}=== $1 ===${PLAIN}"
}

success() {
    echo -e "${GREEN}=== $1 ===${PLAIN}"
}

warning() {
    echo -e "${YELLOW}=== $1 ===${PLAIN}"
}

error() {
    echo -e "${RED}=== $1 ===${PLAIN}"
}

# 参数化Nginx升级脚本
NGINX_VERSION="nginx-1.28.0.tar.gz"
SOURCE_URL="/home/$NGINX_VERSION"
OLD_DIR="${1:-/userh9/apps/nginx}"  # 默认是/userh9/apps/nginx目录
NEW_DIR="${OLD_DIR}2025"            

# 检查参数
if [ ! -d "$OLD_DIR" ]; then
    error "指定的旧目录 $OLD_DIR 不存在!"
    exit 1
fi

# 安装依赖
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel

# 备份旧版本
info "开始备份旧版本目录"
cp -p -r "$OLD_DIR" "$NEW_DIR" || { error "备份失败"; exit 1; }
success "旧版本目录备份完成"

# 显示目录信息
echo -e "${YELLOW}旧版本目录:${PLAIN} $OLD_DIR"
echo -e "${YELLOW}新版本目录:${PLAIN} $NEW_DIR"
echo "----------------------------------------"

# 获取旧版本模块
info "提取旧版本编译模块参数"
OLD_MODULES=$("$OLD_DIR/sbin/nginx" -V 2>&1 | grep -oP 'with-\K[^ ]+' | sed 's/^/--with-/')
echo -e "${YELLOW}复用模块:${PLAIN} $OLD_MODULES"
echo "----------------------------------------"

# 解压编译新版本
info "开始解压并编译新版本"
cd /home || { error "进入/home目录失败"; exit 1; }
mkdir nginx
tar xf $NGINX_VERSION -C nginx --strip-components 1|| { error "源码解压失败"; exit 1; }
cd nginx  || { error "进入源码目录失败"; exit 1; }

info "配置编译参数"
./configure --prefix=$NEW_DIR $OLD_MODULES || { error "配置失败"; exit 1; }

info "开始编译"
make || { error "编译失败"; exit 1; }
success "新版本编译安装完成"
echo "----------------------------------------"
### 这边可以不用make install 直接make就行了,把/home/nginx/objs/的nginx二进制文件copy到$OLD_DIR/sbin/下  

# 版本验证
info "版本信息"
echo -e "${YELLOW}新版本:${PLAIN} "
"$NEW_DIR/sbin/nginx" -v 2>&1
echo "----------------------------------------"

# 隐藏版本号配置
info "配置隐藏版本号"
if ! grep -q 'server_tokens off;' "$OLD_DIR/conf/nginx.conf"; then
    sed -i '/^http {/a \    server_tokens off;' "$OLD_DIR/conf/nginx.conf"
    success "已添加 server_tokens off 配置"
else
    echo "server_tokens off 配置已存在,跳过"
fi
echo "----------------------------------------"


# 覆盖旧版本
info "覆盖旧版本"
mv $OLD_DIR/sbin/nginx  $OLD_DIR/sbin/nginx.old
cp $NEW_DIR/sbin/nginx  $OLD_DIR/sbin/nginx
echo "----------------------------------------"

# 检查新配置
info "验证配置文件"
"$OLD_DIR/sbin/nginx" -t || { error "配置文件有误,请修复后重试"; exit 1; }
success "配置文件验证通过"
echo "----------------------------------------"

# 检查新配置
info "重启服务"
systemctl restart nginx
systemctl status nginx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105

配置system管理


# 编辑system配置
vi /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/userh9/apps/nginx/sbin/nginx -c /userh9/apps/nginx/conf/nginx.conf
ExecReload=/userh9/apps/nginx/sbin/nginx -s reload
ExecStop=/userh9/apps/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target

# 启动服务
systemctl daemon-reload
systemctl restart nginx
systemctl status nginx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#Nginx
上次更新: 2026/05/31, 03:30:34
RocketMQ Docker-Compose部署
kvm虚拟机磁盘扩容

← RocketMQ Docker-Compose部署 kvm虚拟机磁盘扩容→

最近更新
01
Coredns自定义参数
05-18
02
Docker Mirrors
04-24
03
SSL自签证书管理
02-10
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式