卸载nginx的shell脚本

保存文件:uninstall_nginx.sh

执行:chmod +x uninstall_nginx.sh

执行:./uninstall_nginx.sh

bash 复制代码
#!/bin/bash
# uninstall_nginx.sh - 彻底卸载Nginx

set -e

RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

log() { echo -e "$1"; }

echo "${RED}⚠️  Nginx彻底卸载程序 ⚠️${NC}"
echo "================================"
echo "这将删除所有Nginx相关的文件、配置和数据!"
echo ""

# 确认操作
read -p "确定要彻底卸载Nginx吗?(y/N): " confirm
if [[ ! "$confirm" =~ ^[Yy]$ ]]; then
    echo "操作已取消。"
    exit 0
fi

echo ""
log "${YELLOW}[1/6] 停止并禁用Nginx服务...${NC}"

# 停止所有Nginx服务
# systemctl stop nginx 2>/dev/null || true
# systemctl disable nginx 2>/dev/null || true

# # 停止所有Nginx进程
# pkill -9 nginx 2>/dev/null || true
# sleep 2

# 再次确认没有nginx进程
# if pgrep nginx >/dev/null; then
#     log "${YELLOW}强制结束所有Nginx进程...${NC}"
#     pkill -9 nginx
#     sleep 1
# fi

echo ""
log "${YELLOW}[2/6] 移除systemd服务文件...${NC}"

# 移除所有nginx相关的systemd服务文件
rm -f /etc/systemd/system/nginx.service
rm -f /lib/systemd/system/nginx.service
rm -f /usr/lib/systemd/system/nginx.service
rm -f /etc/systemd/system/multi-user.target.wants/nginx.service
rm -f /usr/lib/systemd/system/multi-user.target.wants/nginx.service

systemctl daemon-reload
systemctl reset-failed

echo ""
log "${YELLOW}[3/6] 删除Nginx安装文件和目录...${NC}"

# 删除源码编译安装的Nginx
rm -rf /usr/local/nginx
rm -rf /usr/local/sbin/nginx 2>/dev/null || true

# 删除YUM/RPM安装的Nginx
yum remove -y nginx nginx-mod-* 2>/dev/null || true
rpm -e nginx --nodeps 2>/dev/null || true

# 删除源码编译的二进制文件
rm -f /usr/sbin/nginx 2>/dev/null || true
rm -f /usr/bin/nginx 2>/dev/null || true

echo ""
log "${YELLOW}[4/6] 删除Nginx配置文件和日志...${NC}"

# 删除配置目录
rm -rf /etc/nginx
rm -rf /etc/nginx-default

# 删除日志目录
rm -rf /var/log/nginx

# 删除缓存目录
rm -rf /var/cache/nginx

# 删除运行目录
rm -rf /var/run/nginx
rm -f /var/run/nginx.pid

# 删除锁定文件
rm -f /var/lock/nginx.lock
rm -f /var/run/nginx.lock

echo ""
log "${YELLOW}[5/6] 删除Nginx用户和数据...${NC}"

# 可选:删除nginx用户(如果只用于nginx)
read -p "是否删除nginx用户和组?(y/N): " delete_user
if [[ "$delete_user" =~ ^[Yy]$ ]]; then
    # 检查是否有其他进程使用nginx用户
    if ! ps -u nginx >/dev/null 2>&1; then
        userdel nginx 2>/dev/null || true
        groupdel nginx 2>/dev/null || true
        log "${GREEN}已删除nginx用户和组${NC}"
    else
        log "${YELLOW}有其他进程使用nginx用户,保留用户${NC}"
    fi
else
    log "${YELLOW}保留nginx用户和组${NC}"
fi

# 删除网站数据(可选)
read -p "是否删除Nginx网站数据(/usr/share/nginx/html)?(y/N): " delete_html
if [[ "$delete_html" =~ ^[Yy]$ ]]; then
    rm -rf /usr/share/nginx/html
    log "${GREEN}已删除网站数据${NC}"
else
    log "${YELLOW}保留网站数据${NC}"
fi

echo ""
log "${YELLOW}[6/6] 清理临时文件和依赖...${NC}"

# 删除源码编译的临时文件
# rm -rf /tmp/nginx_build
# rm -rf /tmp/nginx-*

# 清理YUM缓存
yum clean all 2>/dev/null || true

# 可选:移除编译依赖
read -p "是否移除Nginx编译依赖包?(y/N): " remove_deps
if [[ "$remove_deps" =~ ^[Yy]$ ]]; then
    log "${YELLOW}移除编译依赖...${NC}"
    yum remove -y \
        gcc gcc-c++ make \
        pcre-devel zlib-devel openssl-devel \
        automake autoconf libtool 2>/dev/null || true
fi

echo ""
log "${GREEN}✅ Nginx卸载完成!${NC}"
echo ""
echo "已删除的项目:"
echo "✓ Nginx二进制文件"
echo "✓ 配置文件"
echo "✓ 日志文件"
echo "✓ systemd服务"
echo "✓ 临时文件"

# 最终验证
echo ""
echo "${GREEN}验证卸载结果:${NC}"
echo "------------------------"

# 检查是否还有nginx文件
if [ -f "/usr/local/nginx/sbin/nginx" ] || [ -f "/usr/sbin/nginx" ]; then
    log "${RED}警告:发现残留的Nginx文件${NC}"
    find /usr -name "*nginx*" -type f 2>/dev/null | head -10
else
    log "${GREEN}✓ 未发现Nginx可执行文件${NC}"
fi

# 检查是否还有nginx进程
if pgrep nginx >/dev/null; then
    log "${RED}警告:发现Nginx进程仍在运行${NC}"
    ps aux | grep nginx | grep -v grep
else
    log "${GREEN}✓ 无Nginx进程运行${NC}"
fi

echo ""
echo "${YELLOW}注意:以下文件可能被其他程序使用,未被删除:${NC}"
echo "- /home/nginx/ (如果存在)"
echo "- /var/www/ (如果存在)"
echo "- 自定义的网站数据目录"
echo ""
echo "要重新安装Nginx,可以运行:"
echo "/usr/shell/deploy_nginx.sh"
相关推荐
闲云一鹤5 小时前
nginx 快速入门教程 - 写给前端的你
前端·nginx·前端工程化
chlk1239 小时前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑9 小时前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件10 小时前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
深紫色的三北六号20 小时前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash1 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI1 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行2 天前
Linux和window共享文件夹
linux
木心月转码ing2 天前
WSL+Cpp开发环境配置
linux
崔小汤呀3 天前
最全的docker安装笔记,包含CentOS和Ubuntu
linux·后端