Преглед изворни кода

feat: add build script, deployment guide, and upgrade-safe single JAR flow

wangkangyjy пре 2 месеци
родитељ
комит
72e2e07302
3 измењених фајлова са 151 додато и 34 уклоњено
  1. 116 0
      docs/部署指南.md
  2. 19 0
      scripts/build.sh
  3. 16 34
      scripts/start.sh

+ 116 - 0
docs/部署指南.md

@@ -0,0 +1,116 @@
+# 部署指南
+
+## 环境要求
+
+服务器需安装 JDK 17+。无需安装 Node、Maven 或数据库。
+
+## 首次部署
+
+### 1. 在开发机上构建
+
+```bash
+./scripts/build.sh
+```
+
+产物为单个 JAR 文件:`backend/target/okr-performance-1.0.0.jar`
+
+### 2. 上传到服务器
+
+```bash
+# 替换 your-server 为实际地址
+scp backend/target/okr-performance-1.0.0.jar user@your-server:/opt/okr/
+scp scripts/start.sh user@your-server:/opt/okr/
+```
+
+### 3. 启动
+
+```bash
+ssh user@your-server
+cd /opt/okr
+chmod +x start.sh
+./start.sh
+```
+
+首次启动后自动在 `/opt/okr/data/` 下创建 `okr-performance.db`。
+
+系统访问:`http://<服务器IP>:18080`  
+默认账号:`admin` / `emoon123456`
+
+### 4. 后台运行(推荐)
+
+```bash
+nohup java -jar okr-performance-1.0.0.jar > app.log 2>&1 &
+```
+
+---
+
+## 代码升级
+
+数据库文件 `data/okr-performance.db` 在 JAR 外部,升级只需替换 JAR,数据不受影响。
+
+### 步骤
+
+```bash
+# 1. 在开发机重新构建
+./scripts/build.sh
+
+# 2. 上传新 JAR 到服务器
+scp backend/target/okr-performance-1.0.0.jar user@your-server:/opt/okr/okr-performance-new.jar
+
+# 3. 替换并重启
+ssh user@your-server
+cd /opt/okr
+
+# 停止旧进程
+pkill -f okr-performance
+
+# 替换 JAR
+mv okr-performance-new.jar okr-performance-1.0.0.jar
+
+# 重新启动
+nohup java -jar okr-performance-1.0.0.jar > app.log 2>&1 &
+```
+
+---
+
+## 目录结构(服务器上)
+
+```
+/opt/okr/
+├── okr-performance-1.0.0.jar   ← 唯一需要替换的文件
+├── start.sh
+├── app.log
+└── data/
+    └── okr-performance.db      ← 持久化数据,升级不会丢失
+```
+
+---
+
+## 端口与反向代理
+
+默认端口 18080。如需 80 端口,用 Nginx 反代:
+
+```nginx
+server {
+    listen 80;
+    server_name okr.your-domain.com;
+
+    location / {
+        proxy_pass http://127.0.0.1:18080;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    }
+}
+```
+
+---
+
+## 备份数据库
+
+```bash
+# 定期备份 SQLite 文件即可
+cp /opt/okr/data/okr-performance.db /opt/okr/data/okr-performance.db.$(date +%Y%m%d)
+```
+
+SQLite 使用 WAL 模式,直接复制文件是安全的。

+ 19 - 0
scripts/build.sh

@@ -0,0 +1,19 @@
+#!/bin/bash
+set -e
+cd "$(cd "$(dirname "$0")/.." && pwd)"
+
+echo "=== 构建前端 ==="
+cd frontend
+[ ! -d node_modules ] && npm install
+npm run build
+
+echo "=== 集成到后端 ==="
+rm -rf ../backend/src/main/resources/static
+cp -r dist ../backend/src/main/resources/static
+
+echo "=== 打包 JAR ==="
+cd ../backend
+mvn clean package -DskipTests -q
+
+echo ""
+echo "构建完成: backend/target/okr-performance-1.0.0.jar"

+ 16 - 34
scripts/start.sh

@@ -1,43 +1,25 @@
 #!/bin/bash
 set -e
+cd "$(cd "$(dirname "$0")/.." && pwd)"
 
-echo "=========================================="
-echo "  医梦AI - OKR绩效考核系统"
-echo "  一键启动脚本"
-echo "=========================================="
+echo "========================================"
+echo "  医梦AI OKR 绩效考核系统 v1.0.0"
+echo "========================================"
 
-PROJECT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
+# 启动前确保 data 目录存在
+mkdir -p data
 
-# Build frontend
-echo ""
-echo "[1/3] Building frontend..."
-cd "$PROJECT_DIR/frontend"
-if [ ! -d "node_modules" ]; then
-    npm install
+# 启动服务
+JAR="backend/target/okr-performance-1.0.0.jar"
+if [ ! -f "$JAR" ]; then
+    echo "未找到 JAR 包,请先运行 scripts/build.sh"
+    exit 1
 fi
-npm run build
 
-# Copy frontend dist to backend static
-echo ""
-echo "[2/3] Integrating frontend + backend..."
-rm -rf "$PROJECT_DIR/backend/src/main/resources/static"
-cp -r dist "$PROJECT_DIR/backend/src/main/resources/static"
-
-# Build backend
-echo ""
-echo "[3/3] Building and starting server (port: 18080)..."
-cd "$PROJECT_DIR/backend"
-mvn clean package -DskipTests -q
-
-cd "$PROJECT_DIR"
-mkdir -p data
-
-echo ""
-echo "=========================================="
-echo "  Server starting..."
-echo "  Open: http://localhost:18080"
-echo "  Default admin: admin / admin123"
-echo "=========================================="
+echo "启动服务 (端口 18080)..."
+echo "访问: http://localhost:18080"
+echo "默认管理员: admin / emoon123456"
+echo "按 Ctrl+C 停止"
 echo ""
 
-java -jar backend/target/okr-performance-1.0.0.jar
+java -jar "$JAR"