wui 6 luni în urmă
părinte
comite
b28ff24eab
1 a modificat fișierele cu 118 adăugiri și 0 ștergeri
  1. 118 0
      deploy.sh

+ 118 - 0
deploy.sh

@@ -0,0 +1,118 @@
+#!/bin/bash
+
+# 设置错误时退出
+set -e
+
+# 配置变量
+PROJECT_NAME="tweb-api"
+PROJECT_DIR="/var/www/$PROJECT_NAME"
+GIT_REPO="https://wuiii@foxmail.com:hXE8ZjQ^Q46V7n@git.izouma.com/wuyi/tweb-api.git"
+
+echo "🚀 开始完整部署 $PROJECT_NAME..."
+
+# 检查项目目录是否存在
+if [ ! -d "$PROJECT_DIR" ]; then
+    echo "📁 项目目录不存在,开始克隆..."
+    
+    # 克隆项目
+    echo "📥 克隆项目到 $PROJECT_DIR..."
+    if git clone "$GIT_REPO" "$PROJECT_DIR"; then
+        echo "✅ 项目克隆成功"
+    else
+        echo "❌ 项目克隆失败"
+        echo "💡 请检查:"
+        echo "   1. Git 仓库地址是否正确"
+        echo "   2. 是否有访问权限"
+        echo "   3. 网络连接是否正常"
+        exit 1
+    fi
+else
+    echo "✅ 项目目录已存在: $PROJECT_DIR"
+fi
+
+# 进入项目目录
+cd "$PROJECT_DIR"
+
+# 检查是否是 Git 仓库
+if [ ! -d ".git" ]; then
+    echo "❌ 错误:项目目录不是 Git 仓库"
+    exit 1
+fi
+
+# 检查 package.json 是否存在
+if [ ! -f "package.json" ]; then
+    echo "❌ 错误:package.json 文件不存在"
+    exit 1
+fi
+
+# Git 操作函数
+handle_git_operations() {
+    echo "📥 处理 Git 操作..."
+    
+    # 固定使用 main 分支
+    echo "当前分支: main"
+    
+    # 尝试拉取最新代码
+    echo "🔄 拉取最新代码..."
+    if git pull origin main; then
+        echo "✅ Git 拉取成功"
+    else
+        echo "❌ Git 拉取失败,请检查网络连接和认证信息"
+        echo "💡 提示:确保已配置 Git 认证(用户名密码或 SSH 密钥)"
+        echo "是否继续部署(跳过代码拉取)?(y/N)"
+        read -r response
+        if [[ ! "$response" =~ ^[Yy]$ ]]; then
+            echo "部署已取消"
+            exit 1
+        fi
+        echo "⚠️  继续部署,使用当前代码..."
+    fi
+}
+
+# 执行 Git 操作
+handle_git_operations
+
+# 停止现有的 PM2 进程(如果存在)
+echo "📦 停止现有的 PM2 进程..."
+pm2 delete tweb-api 2>/dev/null || echo "没有找到现有的 tweb-api 进程"
+
+# 安装依赖(如果需要)
+echo "📦 检查并安装依赖..."
+yarn install
+
+# 清理旧的构建文件
+echo "🧹 清理旧的构建文件..."
+rm -rf dist
+
+# 构建项目
+echo "🔨 构建项目..."
+yarn build
+
+# 检查构建是否成功
+if [ ! -f "dist/app.js" ]; then
+    echo "❌ 构建失败:dist/app.js 文件不存在"
+    exit 1
+fi
+
+# 启动 PM2
+echo "🚀 启动 PM2..."
+pm2 start dist/app.js --name tweb-api
+
+# 保存 PM2 配置
+echo "💾 保存 PM2 配置..."
+pm2 save
+
+# 显示状态
+echo "📊 PM2 状态:"
+pm2 status
+
+echo "✅ 完整部署完成!"
+echo "📁 项目路径: $PROJECT_DIR"
+echo "📝 查看日志:pm2 logs tweb-api"
+echo "🔄 重启服务:pm2 restart tweb-api"
+echo "⏹️ 停止服务:pm2 stop tweb-api"
+
+# 自动展示日志
+echo ""
+echo "📋 持续显示日志(按 Ctrl+C 退出):"
+pm2 logs tweb-api