#!/bin/bash # 一键部署脚本 - Linux/macOS # 使用方法: chmod +x deploy.sh && ./deploy.sh set -e # 遇到错误立即退出 echo "🚀 开始部署 Just-Demo 项目..." # 颜色定义 GREEN='\033[0;32m' BLUE='\033[0;34m' RED='\033[0;31m' NC='\033[0m' # No Color # 1. 检查 Node.js echo -e "${BLUE}📦 检查 Node.js...${NC}" if ! command -v node &> /dev/null; then echo -e "${RED}❌ Node.js 未安装,请先安装 Node.js (v16+)${NC}" exit 1 fi echo -e "${GREEN}✅ Node.js 版本: $(node -v)${NC}" # 2. 检查 pnpm,如果没有则安装 echo -e "${BLUE}📦 检查 pnpm...${NC}" if ! command -v pnpm &> /dev/null; then echo "pnpm 未安装,正在安装..." npm install -g pnpm fi echo -e "${GREEN}✅ pnpm 版本: $(pnpm -v)${NC}" # 3. 检查 PM2,如果没有则安装 echo -e "${BLUE}📦 检查 PM2...${NC}" if ! command -v pm2 &> /dev/null; then echo "PM2 未安装,正在安装..." npm install -g pm2 fi echo -e "${GREEN}✅ PM2 已安装${NC}" # 4. 安装依赖 echo -e "${BLUE}📦 安装项目依赖...${NC}" pnpm install:all # 5. 构建项目 echo -e "${BLUE}🔨 构建项目...${NC}" pnpm build # 6. 创建生产环境配置 echo -e "${BLUE}⚙️ 创建生产环境配置...${NC}" if [ ! -f backend/.env ]; then cat > backend/.env << EOF NODE_ENV=production PORT=3000 JWT_SECRET=$(openssl rand -base64 32) FRONTEND_URL=http://localhost:5500 UPLOAD_DIR=uploads EOF echo -e "${GREEN}✅ 已创建 backend/.env${NC}" else echo -e "${GREEN}✅ backend/.env 已存在${NC}" fi # 7. 运行数据库迁移 echo -e "${BLUE}🗄️ 运行数据库迁移...${NC}" cd backend pnpm migrate:prod cd .. # 8. 使用 PM2 启动服务 echo -e "${BLUE}🚀 使用 PM2 启动服务...${NC}" pm2 delete just-demo-backend 2>/dev/null || true pm2 start ecosystem.config.js # 9. 保存 PM2 配置(开机自启动) echo -e "${BLUE}💾 配置 PM2 开机自启动...${NC}" pm2 save pm2 startup # 10. 显示服务状态 echo "" echo -e "${GREEN}✅ 部署完成!${NC}" echo "" echo "📊 服务状态:" pm2 status echo "" echo -e "${GREEN}🎉 部署成功!${NC}" echo "" echo "访问地址:" echo " - 前端: http://localhost:5500" echo " - 后端: http://localhost:3000" echo "" echo "常用命令:" echo " pm2 status # 查看服务状态" echo " pm2 logs # 查看日志" echo " pm2 restart all # 重启所有服务" echo " pm2 stop all # 停止所有服务" echo ""