f1ad4273f4
- FastAPI 单进程托管 frontend/dist,systemd 替代 PM2 - 超级管理员 admin、注册开关与用户管理 - README/DEPLOY/USAGE 说明:改代码须本地构建 dist 后 push,服务器 update.sh - 提交 frontend/dist 与 build-frontend 脚本
140 lines
3.5 KiB
Markdown
140 lines
3.5 KiB
Markdown
# 中学成绩档案(初中 / 高中)
|
||
|
||
Secondary School Grade Archive — 多用户 Web 系统:成绩录入、占比趋势分析、错题 OCR + 本地 AI 解法。
|
||
|
||
**版权所有 © 马建军** · 微信 **dekun03** · 手机 **18364911125**
|
||
|
||
> [COPYRIGHT.md](./COPYRIGHT.md) · [LICENSE](./LICENSE)
|
||
|
||
**仓库:** [https://git.bz121.com/dekun/secondary-school-grade-archive.git](https://git.bz121.com/dekun/secondary-school-grade-archive.git)
|
||
|
||
---
|
||
|
||
## 文档
|
||
|
||
| 文档 | 说明 |
|
||
|------|------|
|
||
| [docs/DEPLOY.md](./docs/DEPLOY.md) | **Ubuntu 零 Node 部署**(systemd + FastAPI 单进程) |
|
||
| [docs/USAGE.md](./docs/USAGE.md) | 用户使用说明 |
|
||
|
||
---
|
||
|
||
## 修改代码后如何发布(必读)
|
||
|
||
**生产服务器不安装 Node.js,也不在服务器上执行 `npm build`。**
|
||
凡涉及前端或全栈改动的发布,均按以下流程在**开发机**完成构建后再推送:
|
||
|
||
```
|
||
开发机改代码 → 本地构建 frontend/dist → git push 远端仓库 → 服务器 git pull + update.sh
|
||
```
|
||
|
||
### 仅改后端(`backend/`)
|
||
|
||
```bash
|
||
git add backend/
|
||
git commit -m "你的说明"
|
||
git push
|
||
```
|
||
|
||
服务器:
|
||
|
||
```bash
|
||
bash /opt/secondary-school-grade-archive/deploy/update.sh
|
||
```
|
||
|
||
### 改前端或同时改前后端(`frontend/`)
|
||
|
||
**必须先本地构建,再把 `frontend/dist` 一并提交推送:**
|
||
|
||
```powershell
|
||
# Windows
|
||
.\deploy\build-frontend.ps1
|
||
```
|
||
|
||
```bash
|
||
# Linux / macOS
|
||
bash deploy/build-frontend.sh
|
||
```
|
||
|
||
```bash
|
||
git add frontend/ frontend/dist
|
||
git commit -m "你的说明"
|
||
git push
|
||
```
|
||
|
||
服务器:
|
||
|
||
```bash
|
||
bash /opt/secondary-school-grade-archive/deploy/update.sh
|
||
```
|
||
|
||
> 若只推送源码而未推送 `frontend/dist`,服务器更新后页面不会变化。详见 [docs/DEPLOY.md §2](./docs/DEPLOY.md#2-代码修改与发布流程重要)。
|
||
|
||
---
|
||
|
||
## Ubuntu 一键部署(零 Node)
|
||
|
||
```bash
|
||
git clone https://git.bz121.com/dekun/secondary-school-grade-archive.git /opt/secondary-school-grade-archive
|
||
cd /opt/secondary-school-grade-archive
|
||
chmod +x deploy/*.sh
|
||
bash deploy/install.sh
|
||
```
|
||
|
||
- 安装目录:`/opt/secondary-school-grade-archive`
|
||
- 访问地址:`http://<服务器IP>:23566`
|
||
- 进程管理:`systemctl status grade-archive` / `journalctl -u grade-archive -f`
|
||
- 默认超级管理员:**admin / admin123**(登录后请在「系统设置」中修改)
|
||
|
||
**前提:** 仓库中已包含 `frontend/dist/`(由开发机构建后推送)。详见 [docs/DEPLOY.md](./docs/DEPLOY.md)。**反向代理不包含在本项目中。**
|
||
|
||
---
|
||
|
||
## 本地开发
|
||
|
||
### 方式一:前后端分离(推荐日常开发)
|
||
|
||
```bash
|
||
# PostgreSQL 本地安装后
|
||
cp .env.example .env
|
||
|
||
cd backend
|
||
python3 -m venv venv
|
||
source venv/bin/activate # Windows: venv\Scripts\activate
|
||
pip install -r requirements.txt
|
||
uvicorn app.main:app --reload --host 0.0.0.0 --port 23566
|
||
|
||
cd frontend
|
||
npm install && npm run dev
|
||
```
|
||
|
||
- 前端开发:http://localhost:5173(Vite 代理 `/api` → 23566)
|
||
- 后端 API:http://localhost:23566/api/health
|
||
|
||
### 方式二:模拟生产(单进程 + 静态 dist)
|
||
|
||
```bash
|
||
cd frontend && npm run build
|
||
cd ../backend
|
||
source venv/bin/activate
|
||
uvicorn app.main:app --reload --host 0.0.0.0 --port 23566
|
||
```
|
||
|
||
访问 http://localhost:23566
|
||
|
||
---
|
||
|
||
## 运维
|
||
|
||
```bash
|
||
bash deploy/update.sh # 拉代码 + 更新依赖 + 重启服务
|
||
bash deploy/backup.sh # 备份
|
||
bash deploy/uninstall.sh # 停止并卸载
|
||
```
|
||
|
||
---
|
||
|
||
## 技术支持
|
||
|
||
微信 **dekun03** · 手机 **18364911125**
|