139 lines
3.2 KiB
Bash
Executable File
139 lines
3.2 KiB
Bash
Executable File
#!/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 ""
|