paper-burner/scripts/setup.sh

168 lines
4.4 KiB
Bash
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
# Paper Burner X - 部署前检查和修复脚本
echo "======================================"
echo "Paper Burner X - 部署前检查"
echo "======================================"
echo ""
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 检查函数
check_command() {
if command -v $1 &> /dev/null; then
echo -e "${GREEN}${NC} $1 已安装"
return 0
else
echo -e "${RED}${NC} $1 未安装"
return 1
fi
}
# 1. 检查必要的命令
echo "1. 检查系统依赖..."
check_command docker || DOCKER_MISSING=1
check_command docker-compose || DOCKER_COMPOSE_MISSING=1
check_command node || NODE_MISSING=1
check_command npm || NPM_MISSING=1
echo ""
# 2. 检查环境变量文件
echo "2. 检查配置文件..."
if [ -f ".env" ]; then
echo -e "${GREEN}${NC} .env 文件存在"
else
echo -e "${YELLOW}!${NC} .env 文件不存在,从模板复制..."
cp .env.example .env
echo -e "${YELLOW}${NC} 请编辑 .env 文件并配置必要的环境变量!"
echo " 必须修改:"
echo " - DB_PASSWORD"
echo " - JWT_SECRET"
echo " - ADMIN_EMAIL"
echo " - ADMIN_PASSWORD"
fi
echo ""
# 3. 安装后端依赖
echo "3. 安装后端依赖..."
if [ -d "server/node_modules" ]; then
echo -e "${GREEN}${NC} 后端依赖已安装"
else
echo -e "${YELLOW}${NC} 正在安装后端依赖..."
cd server
npm install
if [ $? -eq 0 ]; then
echo -e "${GREEN}${NC} 后端依赖安装成功"
else
echo -e "${RED}${NC} 后端依赖安装失败"
exit 1
fi
cd ..
fi
echo ""
# 4. 生成 Prisma Client
echo "4. 生成 Prisma Client..."
cd server
npx prisma generate
if [ $? -eq 0 ]; then
echo -e "${GREEN}${NC} Prisma Client 生成成功"
else
echo -e "${RED}${NC} Prisma Client 生成失败"
exit 1
fi
cd ..
echo ""
# 5. 检查前端文件
echo "5. 检查前端文件..."
if [ -f "index.html" ]; then
echo -e "${GREEN}${NC} index.html 存在"
else
echo -e "${RED}${NC} index.html 不存在"
exit 1
fi
if [ -f "js/storage/storage-adapter.js" ]; then
echo -e "${GREEN}${NC} storage-adapter.js 存在"
else
echo -e "${RED}${NC} storage-adapter.js 不存在"
exit 1
fi
echo ""
# 6. 提供部署选项
echo "======================================"
echo "部署选项:"
echo "======================================"
echo ""
echo "选择部署模式:"
echo " 1) Vercel 前端部署(纯静态)"
echo " 2) Docker 后端部署(完整功能)"
echo " 3) 本地开发模式"
echo ""
read -p "请选择 (1-3): " choice
case $choice in
1)
echo ""
echo "Vercel 前端部署步骤:"
echo "1. 访问 https://vercel.com"
echo "2. 导入此 GitHub 仓库"
echo "3. 保持默认配置点击部署"
echo "4. 完成!"
echo ""
echo "注意Vercel 模式下数据存储在浏览器本地"
;;
2)
echo ""
echo "正在启动 Docker 服务..."
# 检查 .env 是否配置
if grep -q "changeme" .env; then
echo -e "${RED}${NC} 警告:.env 文件包含默认值!"
echo " 请编辑 .env 文件后再启动服务"
exit 1
fi
# 启动 Docker
docker-compose up -d
if [ $? -eq 0 ]; then
echo -e "${GREEN}${NC} Docker 服务启动成功!"
echo ""
echo "访问地址:"
echo " 主应用: http://localhost:3000"
echo " 管理面板: http://localhost:3000/admin"
echo ""
echo "查看日志: docker-compose logs -f app"
else
echo -e "${RED}${NC} Docker 服务启动失败"
exit 1
fi
;;
3)
echo ""
echo "启动本地开发服务器..."
cd server
npm run dev &
SERVER_PID=$!
echo ""
echo -e "${GREEN}${NC} 开发服务器已启动"
echo " 后端 API: http://localhost:3000/api"
echo " 前端: 直接打开 index.html"
echo ""
echo "按 Ctrl+C 停止服务器"
wait $SERVER_PID
;;
*)
echo "无效选择"
exit 1
;;
esac