feat: 添加一键安装和卸载脚本,支持从仓库远程部署
This commit is contained in:
49
README.md
49
README.md
@@ -14,7 +14,21 @@ QZMusic 网页版,基于 Vue 3 + TypeScript + Vite 构建的音乐播放器。
|
|||||||
|
|
||||||
## 快速开始
|
## 快速开始
|
||||||
|
|
||||||
### 一键部署(推荐)
|
### 一键安装(推荐)
|
||||||
|
|
||||||
|
直接从 Gitea 仓库一键安装部署:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 方式1:使用 curl 直接执行
|
||||||
|
bash <(curl -sL http://171.80.3.149:4321/miao-moe/QZMusic-Web/raw/branch/master/install.sh)
|
||||||
|
|
||||||
|
# 方式2:克隆后执行
|
||||||
|
git clone http://171.80.3.149:4321/miao-moe/QZMusic-Web.git
|
||||||
|
cd QZMusic-Web
|
||||||
|
bash install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### 一键部署(本地开发)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 使用一键部署脚本
|
# 使用一键部署脚本
|
||||||
@@ -32,6 +46,26 @@ npm run start
|
|||||||
./start.sh
|
./start.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## 一键卸载
|
||||||
|
|
||||||
|
完全删除所有 QZMusic 部署文件和配置:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 方式1:使用 curl 直接执行
|
||||||
|
bash <(curl -sL http://171.80.3.149:4321/miao-moe/QZMusic-Web/raw/branch/master/uninstall.sh)
|
||||||
|
|
||||||
|
# 方式2:在安装目录执行
|
||||||
|
cd /opt/QZMusic-Web
|
||||||
|
bash uninstall.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
卸载将删除:
|
||||||
|
- 安装目录(`/opt/QZMusic-Web`)
|
||||||
|
- 端口 10096 上的所有进程
|
||||||
|
- Systemd 服务(如有)
|
||||||
|
- npm 全局包(如有)
|
||||||
|
- 相关缓存文件
|
||||||
|
|
||||||
## 开发
|
## 开发
|
||||||
|
|
||||||
### 安装依赖
|
### 安装依赖
|
||||||
@@ -62,13 +96,24 @@ npm run preview
|
|||||||
|
|
||||||
## 脚本说明
|
## 脚本说明
|
||||||
|
|
||||||
|
### 本地脚本
|
||||||
|
|
||||||
| 命令 | 说明 |
|
| 命令 | 说明 |
|
||||||
|------|------|
|
|------|------|
|
||||||
| `npm run dev` | 启动开发服务器(端口 10096) |
|
| `npm run dev` | 启动开发服务器(端口 10096) |
|
||||||
| `npm run build` | 构建生产版本 |
|
| `npm run build` | 构建生产版本 |
|
||||||
| `npm run preview` | 预览生产构建(端口 10096) |
|
| `npm run preview` | 预览生产构建(端口 10096) |
|
||||||
| `npm run deploy` | 一键部署(安装依赖 + 构建) |
|
| `npm run deploy` | 一键部署(安装依赖 + 构建) |
|
||||||
| `npm run start` | 一键启动(自动安装依赖 + 启动开发服务器) |
|
| `npm run start` | 一键启动(自动安装依赖 + 启动) |
|
||||||
|
| `npm run install-app` | 一键安装(从仓库安装到 /opt) |
|
||||||
|
| `npm run uninstall` | 一键卸载(删除所有部署文件) |
|
||||||
|
|
||||||
|
### 一键命令(远程执行)
|
||||||
|
|
||||||
|
| 命令 | 说明 |
|
||||||
|
|------|------|
|
||||||
|
| `bash <(curl ... install.sh)` | 从仓库一键安装部署 |
|
||||||
|
| `bash <(curl ... uninstall.sh)` | 从仓库一键卸载所有部署 |
|
||||||
|
|
||||||
## 项目结构
|
## 项目结构
|
||||||
|
|
||||||
|
|||||||
138
install.sh
Executable file
138
install.sh
Executable file
@@ -0,0 +1,138 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# QZMusic-Web 一键安装脚本
|
||||||
|
# 从Gitea仓库获取并自动部署
|
||||||
|
# 使用方法: bash <(curl -sL http://171.80.3.149:4321/miao-moe/QZMusic-Web/raw/branch/master/install.sh)
|
||||||
|
# 或者直接运行此脚本
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "=========================================="
|
||||||
|
echo " QZMusic-Web 一键安装"
|
||||||
|
echo "=========================================="
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 配置
|
||||||
|
REPO_URL="http://171.80.3.149:4321/miao-moe/QZMusic-Web.git"
|
||||||
|
INSTALL_DIR="/opt/QZMusic-Web"
|
||||||
|
PORT=10096
|
||||||
|
|
||||||
|
# 颜色定义
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
RED='\033[0;31m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
log_info() {
|
||||||
|
echo -e "${GREEN}[INFO]${NC} $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
log_warn() {
|
||||||
|
echo -e "${YELLOW}[WARN]${NC} $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
log_error() {
|
||||||
|
echo -e "${RED}[ERROR]${NC} $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 检查是否以root运行
|
||||||
|
if [ "$EUID" -ne 0 ]; then
|
||||||
|
log_warn "建议使用 root 权限运行以获得最佳体验"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检查Node.js
|
||||||
|
if ! command -v node &> /dev/null; then
|
||||||
|
log_error "Node.js 未安装!请先安装 Node.js"
|
||||||
|
echo "安装 Node.js:"
|
||||||
|
echo " Ubuntu/Debian: sudo apt-get install nodejs npm"
|
||||||
|
echo " CentOS/RHEL: sudo yum install nodejs npm"
|
||||||
|
echo " 或访问: https://nodejs.org/"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_info "Node.js 版本: $(node -v)"
|
||||||
|
log_info "npm 版本: $(npm -v)"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 检查是否已存在安装目录
|
||||||
|
if [ -d "$INSTALL_DIR" ]; then
|
||||||
|
log_warn "检测到已存在的安装目录: $INSTALL_DIR"
|
||||||
|
read -p "是否更新到最新版本?(y/n): " update_choice
|
||||||
|
if [ "$update_choice" != "y" ] && [ "$update_choice" != "Y" ]; then
|
||||||
|
log_info "取消安装"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_info "正在更新到最新版本..."
|
||||||
|
cd "$INSTALL_DIR"
|
||||||
|
git pull origin master
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
log_error "更新失败!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# 创建安装目录
|
||||||
|
log_info "正在创建安装目录: $INSTALL_DIR"
|
||||||
|
sudo mkdir -p "$INSTALL_DIR"
|
||||||
|
|
||||||
|
# 克隆仓库
|
||||||
|
log_info "正在从仓库获取代码..."
|
||||||
|
if ! git clone "$REPO_URL" "$INSTALL_DIR"; then
|
||||||
|
log_error "克隆仓库失败!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 进入安装目录
|
||||||
|
cd "$INSTALL_DIR"
|
||||||
|
|
||||||
|
# 安装依赖
|
||||||
|
log_info "正在安装依赖..."
|
||||||
|
npm install --registry=https://registry.npmmirror.com
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
log_error "依赖安装失败!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_info "依赖安装成功!"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 构建项目
|
||||||
|
log_info "正在构建项目..."
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
log_error "构建失败!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_info "项目构建成功!"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 检查端口占用
|
||||||
|
if lsof -Pi :$PORT -sTCP:LISTEN -t >/dev/null 2>&1; then
|
||||||
|
log_warn "端口 $PORT 已被占用,尝试停止现有进程..."
|
||||||
|
PID=$(lsof -ti:$PORT)
|
||||||
|
kill $PID 2>/dev/null || true
|
||||||
|
sleep 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=========================================="
|
||||||
|
echo " 🎉 安装完成!"
|
||||||
|
echo "=========================================="
|
||||||
|
echo ""
|
||||||
|
echo "📂 安装目录: $INSTALL_DIR"
|
||||||
|
echo "🌐 访问地址: http://localhost:$PORT"
|
||||||
|
echo ""
|
||||||
|
echo "启动服务:"
|
||||||
|
echo " 开发模式: cd $INSTALL_DIR && npm run dev"
|
||||||
|
echo " 生产模式: cd $INSTALL_DIR && npm run preview"
|
||||||
|
echo ""
|
||||||
|
echo "管理命令:"
|
||||||
|
echo " 更新: cd $INSTALL_DIR && git pull"
|
||||||
|
echo " 卸载: cd $INSTALL_DIR && npm run uninstall"
|
||||||
|
echo ""
|
||||||
@@ -10,7 +10,9 @@
|
|||||||
"build": "vue-tsc && vite build",
|
"build": "vue-tsc && vite build",
|
||||||
"preview": "vite preview --port 10096 --host",
|
"preview": "vite preview --port 10096 --host",
|
||||||
"deploy": "./deploy.sh",
|
"deploy": "./deploy.sh",
|
||||||
"start": "./start.sh"
|
"start": "./start.sh",
|
||||||
|
"install-app": "./install.sh",
|
||||||
|
"uninstall": "./uninstall.sh"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@applemusic-like-lyrics/core": "^0.2.0",
|
"@applemusic-like-lyrics/core": "^0.2.0",
|
||||||
|
|||||||
111
uninstall.sh
Executable file
111
uninstall.sh
Executable file
@@ -0,0 +1,111 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# QZMusic-Web 卸载脚本
|
||||||
|
# 完全删除所有QZMusic部署文件和配置
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "=========================================="
|
||||||
|
echo " QZMusic-Web 卸载工具"
|
||||||
|
echo "=========================================="
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 配置
|
||||||
|
INSTALL_DIR="/opt/QZMusic-Web"
|
||||||
|
PORT=10096
|
||||||
|
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"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 确认卸载
|
||||||
|
echo "⚠️ 即将卸载 QZMusic-Web"
|
||||||
|
echo ""
|
||||||
|
read -p "确定要删除所有相关文件吗?(yes/no): " confirm
|
||||||
|
|
||||||
|
if [ "$confirm" != "yes" ]; then
|
||||||
|
log_info "取消卸载"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 停止服务
|
||||||
|
log_info "正在停止服务..."
|
||||||
|
|
||||||
|
# 停止开发服务器
|
||||||
|
PID=$(lsof -ti:$PORT 2>/dev/null || true)
|
||||||
|
if [ -n "$PID" ]; then
|
||||||
|
log_info "停止进程 (PID: $PID)..."
|
||||||
|
kill $PID 2>/dev/null || true
|
||||||
|
sleep 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 停止Systemd服务(如果存在)
|
||||||
|
if systemctl is-active --quiet $SERVICE_NAME 2>/dev/null; then
|
||||||
|
log_info "停止 Systemd 服务..."
|
||||||
|
sudo systemctl stop $SERVICE_NAME
|
||||||
|
sudo systemctl disable $SERVICE_NAME
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 删除Systemd服务文件
|
||||||
|
if [ -f "/etc/systemd/system/$SERVICE_NAME.service" ]; then
|
||||||
|
log_info "删除 Systemd 服务文件..."
|
||||||
|
sudo rm -f /etc/systemd/system/$SERVICE_NAME.service
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 删除安装目录
|
||||||
|
if [ -d "$INSTALL_DIR" ]; then
|
||||||
|
log_info "删除安装目录: $INSTALL_DIR"
|
||||||
|
sudo rm -rf "$INSTALL_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 删除npm全局链接(如果有)
|
||||||
|
if npm list -g --depth=0 2>/dev/null | grep -q "qzmusic-web"; then
|
||||||
|
log_info "删除 npm 全局包..."
|
||||||
|
sudo npm uninstall -g qzmusic-web 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 删除相关缓存
|
||||||
|
log_info "清理缓存..."
|
||||||
|
|
||||||
|
# 删除npm缓存
|
||||||
|
if [ -d "$HOME/.npm/_cacache" ]; then
|
||||||
|
npm cache clean --force 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 删除可能的临时文件
|
||||||
|
sudo rm -rf /tmp/QZMusic* 2>/dev/null || true
|
||||||
|
sudo rm -rf /var/tmp/QZMusic* 2>/dev/null || true
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=========================================="
|
||||||
|
echo " ✅ 卸载完成!"
|
||||||
|
echo "=========================================="
|
||||||
|
echo ""
|
||||||
|
echo "已删除:"
|
||||||
|
echo " - 安装目录: $INSTALL_DIR"
|
||||||
|
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 ""
|
||||||
Reference in New Issue
Block a user