Files
QZMusic-Web/uninstall.sh

117 lines
3.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# QZMusic-Web 卸载脚本 - 完全停止并删除所有 QZMusic-Web 部署
set -e
echo "=========================================="
echo " QZMusic-Web 完全卸载"
echo "=========================================="
echo ""
# ========= 配置 =========
INSTALL_DIR="/opt/QZMusic-Web"
PORT=1219
SERVICE_NAME="qzmusic-web"
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m'
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
SUDO=""
if [ "$EUID" -ne 0 ]; then
SUDO="sudo"
fi
# ========= 确认 =========
echo "⚠️ 即将卸载 QZMusic-Web"
echo ""
echo "将执行以下操作:"
echo " - 停止并禁用 systemd 服务 $SERVICE_NAME"
echo " - 删除服务文件 /etc/systemd/system/$SERVICE_NAME.service"
echo " - 杀掉占用 $PORT 端口的进程"
echo " - 删除目录 $INSTALL_DIR"
echo " - 关闭防火墙 $PORT/tcp 放行"
echo ""
read -p "确认删除?输入 yes 继续: " confirm
if [ "$confirm" != "yes" ]; then
log_info "取消卸载"
exit 0
fi
echo ""
# ========= 停止服务 =========
log_info "停止 systemd 服务..."
if systemctl list-unit-files 2>/dev/null | grep -q "$SERVICE_NAME.service"; then
$SUDO systemctl stop "$SERVICE_NAME" 2>/dev/null || true
$SUDO systemctl disable "$SERVICE_NAME" 2>/dev/null || true
log_info "服务已停止 & 禁用"
else
log_warn "未检测到 systemd 服务 $SERVICE_NAME,跳过"
fi
# ========= 删除服务文件 =========
SERVICE_FILE="/etc/systemd/system/$SERVICE_NAME.service"
if [ -f "$SERVICE_FILE" ]; then
$SUDO rm -f "$SERVICE_FILE"
$SUDO systemctl daemon-reload
log_info "已删除服务文件: $SERVICE_FILE"
fi
# ========= 杀端口 =========
if command -v lsof &> /dev/null; then
OLD_PID=$(lsof -ti:$PORT 2>/dev/null || true)
if [ -n "$OLD_PID" ]; then
log_info "杀掉占用 $PORT 的进程: $OLD_PID"
$SUDO kill $OLD_PID 2>/dev/null || true
fi
fi
# ========= 删除目录 =========
if [ -d "$INSTALL_DIR" ]; then
log_info "删除目录: $INSTALL_DIR"
$SUDO rm -rf "$INSTALL_DIR"
else
log_warn "目录不存在: $INSTALL_DIR"
fi
# ========= 关闭防火墙端口 =========
log_info "关闭防火墙 $PORT/tcp 放行..."
if command -v firewall-cmd &> /dev/null && systemctl is-active --quiet firewalld 2>/dev/null; then
$SUDO firewall-cmd --permanent --remove-port=${PORT}/tcp >/dev/null 2>&1 || true
$SUDO firewall-cmd --reload >/dev/null
log_info "firewalld: 已关闭 $PORT/tcp"
elif command -v ufw &> /dev/null && systemctl is-active --quiet ufw 2>/dev/null; then
$SUDO ufw delete allow ${PORT}/tcp >/dev/null 2>&1 || true
log_info "ufw: 已关闭 $PORT/tcp"
else
log_warn "未检测到活动的 firewalld/ufw跳过防火墙配置。"
fi
# ========= 清理缓存 =========
log_info "清理 npm 缓存..."
if [ -d "$HOME/.npm/_cacache" ]; then
npm cache clean --force >/dev/null 2>&1 || true
fi
$SUDO rm -rf /tmp/QZMusic* /var/tmp/QZMusic* 2>/dev/null || true
echo ""
echo "=========================================="
echo " ✅ 卸载完成!"
echo "=========================================="
echo ""
echo "已清理:"
echo " - 目录: $INSTALL_DIR"
echo " - systemd 服务: $SERVICE_NAME"
echo " - 端口: $PORT"
echo " - 相关缓存"
echo ""
echo "如需重新安装,请运行:"
echo " bash <(curl -sL http://171.80.3.149:4321/miao-moe/QZMusic-Web/raw/branch/master/install.sh)"
echo ""