Files
django-vue3-admin/docs/scripts-documentation.md
T
lewis_yan f6313a93ce feat: add cross-platform service management scripts
Add comprehensive scripts for managing PIS project services:
- start-backend.ps1/.sh: Start Django backend with uvicorn/gunicorn
- start-frontend.ps1/.sh: Start Vue frontend dev server
- start-celery.ps1/.sh: Start Celery worker and beat
- stop-all.ps1/.sh: Stop all services gracefully
- stop-celery.ps1/.sh: Stop Celery services only
- view-logs.ps1/.sh: View and tail log files
- check-status.ps1/.sh: Check service status and ports

Cross-platform support:
- Windows PowerShell scripts with English output (UTF-8 safe)
- Unix/Linux/macOS Bash scripts with Chinese output
- WMI queries for PowerShell 5.1 compatibility
- Unified Makefile and make.ps1 orchestrators

Also add scripts-documentation.md with comprehensive usage guide.
2026-04-01 19:11:45 +08:00

258 lines
6.0 KiB
Markdown
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.
# 脚本文档
PIS 项目跨平台服务管理脚本。
## 概述
| 脚本 | Windows (PowerShell) | Unix/Linux/macOS (Bash) |
|------|---------------------|------------------------|
| 启动后端 | `start-backend.ps1` | `start-backend.sh` |
| 启动前端 | `start-frontend.ps1` | `start-frontend.sh` |
| 启动 Celery | `start-celery.ps1` | `start-celery.sh` |
| 停止所有 | `stop-all.ps1` | `stop-all.sh` |
| 停止 Celery | `stop-celery.ps1` | `stop-celery.sh` |
| 查看日志 | `view-logs.ps1` | `view-logs.sh` |
| 检查状态 | `check-status.ps1` | `check-status.sh` |
## 快速开始
### Windows (PowerShell)
```powershell
# 启动所有服务
.\make.ps1 dev
# 停止所有服务
.\make.ps1 stop
# 查看日志
.\make.ps1 logs
# 检查状态
.\make.ps1 status
```
### Unix/Linux/macOS (Bash)
```bash
# 启动所有服务
make dev
# 停止所有服务
make stop
# 查看日志
make logs
# 检查状态
make status
```
## 使用方法
### make.ps1 命令 (Windows PowerShell)
| 命令 | 说明 |
|------|------|
| `.\make.ps1 help` | 显示所有可用命令 |
| `.\make.ps1 dev` | 启动开发环境(前端 + 后端 + Celery |
| `.\make.ps1 dev-backend` | 仅启动后端 |
| `.\make.ps1 dev-frontend` | 仅启动前端 |
| `.\make.ps1 dev-celery` | 仅启动 Celery |
| `.\make.ps1 stop` | 停止所有服务 |
| `.\make.ps1 restart` | 重启所有服务 |
| `.\make.ps1 restart-celery` | 仅重启 Celery |
| `.\make.ps1 logs` | 查看所有日志 |
| `.\make.ps1 logs-backend` | 查看后端日志 |
| `.\make.ps1 logs-frontend` | 查看前端日志 |
| `.\make.ps1 logs-celery` | 查看 Celery 日志 |
| `.\make.ps1 status` | 检查服务状态 |
| `.\make.ps1 clean-logs` | 清理日志文件 |
| `.\make.ps1 clean-pids` | 清理 PID 文件 |
### make 命令 (Unix/Linux/macOS Bash)
| 命令 | 说明 |
|------|------|
| `make help` | 显示所有可用命令 |
| `make dev` | 启动开发环境(前端 + 后端 + Celery |
| `make dev-backend` | 仅启动后端 |
| `make dev-frontend` | 仅启动前端 |
| `make dev-celery` | 仅启动 Celery |
| `make stop` | 停止所有服务 |
| `make restart` | 重启所有服务 |
| `make restart-celery` | 仅重启 Celery |
| `make logs` | 查看所有日志 |
| `make logs-backend` | 查看后端日志 |
| `make logs-frontend` | 查看前端日志 |
| `make logs-celery` | 查看 Celery 日志 |
| `make status` | 检查服务状态 |
| `make clean-logs` | 清理日志文件 |
| `make clean-pids` | 清理 PID 文件 |
## 直接调用脚本
### Windows PowerShell
```powershell
# 启动后端
.\scripts\start-backend.ps1 [dev|prod]
# 启动前端
.\scripts\start-frontend.ps1 [dev|prod]
# 启动 Celery
.\scripts\start-celery.ps1 [dev|prod]
# 停止所有服务
.\scripts\stop-all.ps1
# 仅停止 Celery
.\scripts\stop-celery.ps1
# 查看日志
.\scripts\view-logs.ps1 [backend|frontend|celery|all]
# 检查状态
.\scripts\check-status.ps1
```
### Unix/Linux/macOS Bash
```bash
# 启动后端
./scripts/start-backend.sh [dev|prod]
# 启动前端
./scripts/start-frontend.sh [dev|prod]
# 启动 Celery
./scripts/start-celery.sh [dev|prod]
# 停止所有服务
./scripts/stop-all.sh
# 仅停止 Celery
./scripts/stop-celery.sh
# 查看日志
./scripts/view-logs.sh [backend|frontend|celery|all]
# 检查状态
./scripts/check-status.sh
```
## 环境参数
- `dev`(默认):开发模式,带热重载
- `prod`:生产模式,使用优化构建
### Windows PowerShell
```powershell
.\make.ps1 dev -ENV prod
```
### Unix/Linux/macOS
```bash
ENV=prod make dev
```
## 端口
| 服务 | 端口 |
|------|------|
| 后端 (Django) | 8000 |
| 前端 (Vue) | 8080 |
## 日志文件
日志存储在 `backend/logs/`
- `backend.log` - 后端应用日志
- `frontend.log` - 前端应用日志
- `celery_worker.log` - Celery Worker 日志
- `celery_beat.log` - Celery Beat 调度器日志
## PID 文件
PID 文件存储在 `.pids/`
- `backend.pid`
- `frontend.pid`
- `celery_worker.pid`
- `celery_beat.pid`
## 跨平台兼容性
### Windows PowerShell
- 支持 Windows PowerShell 5.1 及 PowerShell 7+
- 使用 `System.Net.Sockets.TcpClient` 检查端口
- 使用 WMI 查询检测进程(兼容 PS 5.1 和 PS 7+
- 所有输出使用英文(避免编码问题)
### Unix/Linux/macOS
- 需要 Bash 4.0+
- 使用 `nc`netcat)检查端口(如果可用)
- 使用 `pgrep``pkill` 管理进程
- 输出使用中文
## 依赖要求
### 后端
- Python 3.10+
- Django 4.2.14
- uvicorn(开发)或 gunicorn(生产)
- Celery + Redis broker
### 前端
- Node.js 18+
- Yarn 或 npm
### Celery
- Redis 服务运行中
- django-celery-beat
## 故障排除
### 后端无法启动
1. 检查端口 8000 是否被占用
2. 检查 Python 依赖是否安装
3. 检查 Django 配置:确保 `backend/conf/env.py` 已配置
### 前端无法启动
1. 检查 Node.js 是否安装
2. 安装依赖:`cd web && yarn install`
3. 检查端口 8080 是否被占用
### Celery 无法启动
1. 检查 Redis 是否运行
2. 执行数据库迁移:`python manage.py migrate`
3. 查看 Celery 日志
### 编码问题
如果 PowerShell 显示乱码,确保使用 UTF-8 with BOM 编码保存的脚本文件。
## 脚本架构
```
scripts/
├── start-backend.ps1/.sh # 启动 Django 后端服务
├── start-frontend.ps1/.sh # 启动 Vue 前端开发服务器
├── start-celery.ps1/.sh # 启动 Celery worker 和 beat
├── stop-all.ps1/.sh # 停止所有服务
├── stop-celery.ps1/.sh # 仅停止 Celery 服务
├── view-logs.ps1/.sh # 查看和跟踪日志文件
├── check-status.ps1/.sh # 检查服务运行状态
├── Makefile # Unix/Linux/macOS 编排
└── make.ps1 # Windows PowerShell 编排
```
## 注意事项
- 所有脚本都是幂等的 - 多次运行是安全的
- 脚本会检测服务是否已运行,已运行则跳过启动
- 使用 PID 文件实现优雅关闭
- 停止时会清理残留进程
- PowerShell 脚本输出使用英文,避免编码问题
- Bash 脚本输出使用中文