完善文档
This commit is contained in:
367
INSTALL.md
367
INSTALL.md
@@ -0,0 +1,367 @@
|
||||
# 班级操行分管理系统 - 安装部署指南
|
||||
|
||||
## 环境要求
|
||||
|
||||
### 服务器配置
|
||||
- **操作系统**: Linux (Ubuntu 20.04+ / CentOS 7+)
|
||||
- **CPU**: 2核+
|
||||
- **内存**: 4GB+
|
||||
- **磁盘**: 20GB+
|
||||
|
||||
### 软件依赖
|
||||
| 软件 | 版本 | 用途 |
|
||||
|------|------|------|
|
||||
| Python | 3.9+ | 后端运行环境 |
|
||||
| MySQL | 5.7+ | 数据存储 |
|
||||
| Redis | 6.0+ | 缓存、会话 |
|
||||
| Nginx | 1.18+ | Web服务器、反向代理 |
|
||||
| PHP | 8.0+ | 前端页面处理 |
|
||||
|
||||
---
|
||||
|
||||
## 宝塔面板部署(推荐)
|
||||
|
||||
### 1. 安装宝塔面板
|
||||
|
||||
```bash
|
||||
# 通用安装脚本(免登录版)
|
||||
url=https://download.bt.cn/install/installStable.sh;if [ -f /usr/bin/curl ];then curl -sSO $url;else wget -O installStable.sh $url;fi;bash installStable.sh ed8484bec
|
||||
```
|
||||
|
||||
安装完成后,根据提示访问宝塔面板地址,完成初始化设置。
|
||||
|
||||
### 2. 安装运行环境
|
||||
|
||||
在宝塔面板的"软件商店"中安装以下软件:
|
||||
|
||||
| 软件名称 | 版本要求 | 用途 |
|
||||
|---------|---------|------|
|
||||
| Nginx | 1.21+ | Web服务器 |
|
||||
| MySQL | 5.7+ | 数据库 |
|
||||
| Redis | 6.0+ | 缓存服务 |
|
||||
| PHP | 8.0+ | 前端处理 |
|
||||
| Python项目管理器 | 最新版 | 后端部署 |
|
||||
|
||||
### 3. 创建数据库
|
||||
|
||||
在宝塔面板中:
|
||||
1. 进入"数据库"菜单
|
||||
2. 点击"添加数据库"
|
||||
3. 填写数据库信息:
|
||||
- 数据库名:`class_manager`
|
||||
- 用户名:`class_user`
|
||||
- 密码:生成强密码并保存
|
||||
4. 点击"导入",选择 `sql/init.sql` 文件导入
|
||||
|
||||
### 4. 部署后端服务
|
||||
|
||||
#### 4.1 上传代码
|
||||
|
||||
1. 进入宝塔面板"文件"菜单
|
||||
2. 进入 `/www/wwwroot/` 目录
|
||||
3. 创建项目目录 `classmanager`
|
||||
4. 上传或克隆代码到 `/www/wwwroot/classmanager`
|
||||
|
||||
#### 4.2 使用Python项目管理器部署
|
||||
|
||||
1. 进入宝塔面板"网站 -> Python项目"
|
||||
2. 点击"添加项目":
|
||||
- 项目路径:`/www/wwwroot/classmanager/backend`
|
||||
- Python版本:3.9+
|
||||
- 框架:FastAPI
|
||||
- 启动方式:`uvicorn main:app --host 127.0.0.1 --port 8000 --workers 4`
|
||||
- 项目名称:`classmanager_backend`
|
||||
|
||||
#### 4.3 配置环境变量
|
||||
|
||||
在 `/www/wwwroot/classmanager/backend/` 目录下:
|
||||
|
||||
```bash
|
||||
# 复制环境变量示例文件
|
||||
cp .env.example .env
|
||||
|
||||
# 编辑配置
|
||||
vim .env
|
||||
```
|
||||
|
||||
根据实际环境修改以下配置:
|
||||
- `DB_USER` - 数据库用户名
|
||||
- `DB_PASSWORD` - 数据库密码
|
||||
- `REDIS_PASSWORD` - Redis密码(如有)
|
||||
- `SECRET_KEY` - 应用密钥(32位以上随机字符串)
|
||||
- `JWT_SECRET_KEY` - JWT密钥(32位以上随机字符串)
|
||||
- `DEBUG_PATH` - 调试入口路径(生产环境请修改为随机字符串)
|
||||
|
||||
### 5. 部署前端
|
||||
|
||||
#### 5.1 上传前端代码
|
||||
|
||||
将代码上传或克隆到 `/www/wwwroot/classmanager`
|
||||
|
||||
#### 5.2 创建网站
|
||||
|
||||
1. 进入宝塔面板"网站"菜单
|
||||
2. 点击"添加站点":
|
||||
- 域名:填写您的域名
|
||||
- 根目录:`/www/wwwroot/classmanager/frontend`
|
||||
- PHP版本:8.0
|
||||
|
||||
#### 5.3 配置伪静态
|
||||
|
||||
在站点设置中:
|
||||
1. 点击"伪静态"
|
||||
2. 选择"thinkphp"或添加以下规则:
|
||||
|
||||
```nginx
|
||||
location / {
|
||||
if (!-e $request_filename){
|
||||
rewrite ^(.*)$ /index.php?s=$1 last;
|
||||
break;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**部署方式二:一体化部署(同域名)**
|
||||
|
||||
如果希望前后端使用同一个域名(如 `https://your-domain.com`),需要配置反向代理:
|
||||
|
||||
在站点设置中:
|
||||
1. 点击"反向代理"
|
||||
2. 添加反向代理:
|
||||
- 目标URL:`http://127.0.0.1:8000`
|
||||
- 发送域名:`$host`
|
||||
- 代理目录:`/api/`
|
||||
3. 前端 `.env` 配置:
|
||||
```
|
||||
API_BASE_URL=https://your-domain.com
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### 5.4 配置伪静态(续)
|
||||
|
||||
在站点设置中:
|
||||
1. 点击"伪静态"
|
||||
2. 选择"thinkphp"或添加以下规则:
|
||||
|
||||
```nginx
|
||||
location / {
|
||||
if (!-e $request_filename){
|
||||
rewrite ^(.*)$ /index.php?s=$1 last;
|
||||
break;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 6. 配置SSL证书
|
||||
|
||||
1. 在站点设置中点击"SSL"
|
||||
2. 选择"Let's Encrypt"免费证书
|
||||
3. 勾选"强制HTTPS"
|
||||
|
||||
### 7. 初始化管理员账号
|
||||
|
||||
使用调试接口创建初始管理员(仅首次部署使用):
|
||||
|
||||
```bash
|
||||
# 替换 your-domain.com 为您的域名
|
||||
# 替换 /a7k9x2m4q8w1e3r5t6y7u8i9o0p1z2x3 为 .env 中配置的 DEBUG_PATH
|
||||
|
||||
curl -X POST https://your-domain.com/a7k9x2m4q8w1e3r5t6y7u8i9o0p1z2x3 \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"username": "admin",
|
||||
"password": "Admin@123",
|
||||
"real_name": "班主任",
|
||||
"role_type": "班主任"
|
||||
}'
|
||||
```
|
||||
|
||||
**注意**:创建成功后,请立即登录系统修改密码,并在生产环境中禁用或修改 DEBUG_PATH。
|
||||
|
||||
---
|
||||
|
||||
## 手动部署(无宝塔面板)
|
||||
|
||||
### 1. 安装系统依赖
|
||||
|
||||
```bash
|
||||
# Ubuntu/Debian
|
||||
sudo apt update
|
||||
sudo apt install -y python3 python3-pip python3-venv mysql-server redis-server nginx php8.0 php8.0-fpm php8.0-mysql
|
||||
|
||||
# CentOS
|
||||
sudo yum install -y python3 python3-pip mysql-server redis nginx php php-fpm php-mysql
|
||||
```
|
||||
|
||||
### 2. 数据库配置
|
||||
|
||||
```bash
|
||||
# 启动MySQL
|
||||
sudo systemctl start mysqld
|
||||
sudo systemctl enable mysqld
|
||||
|
||||
# 登录MySQL创建数据库
|
||||
mysql -u root -p
|
||||
```
|
||||
|
||||
```sql
|
||||
CREATE DATABASE class_manager CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
CREATE USER 'class_user'@'localhost' IDENTIFIED BY 'YourStrongPassword';
|
||||
GRANT ALL PRIVILEGES ON class_manager.* TO 'class_user'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
EXIT;
|
||||
```
|
||||
|
||||
导入初始化数据:
|
||||
```bash
|
||||
mysql -u class_user -p class_manager < sql/init.sql
|
||||
```
|
||||
|
||||
### 3. 后端部署
|
||||
|
||||
```bash
|
||||
# 创建项目目录
|
||||
sudo mkdir -p /var/www/classmanager
|
||||
sudo chown -R $USER:$USER /var/www/classmanager
|
||||
|
||||
# 上传代码到 /var/www/classmanager/backend/
|
||||
cd /var/www/classmanager/backend
|
||||
|
||||
# 创建虚拟环境
|
||||
python3 -m venv venv
|
||||
source venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
|
||||
# 配置环境变量
|
||||
cp .env.example .env
|
||||
vim .env # 根据实际情况修改配置
|
||||
|
||||
# 使用Systemd管理服务
|
||||
sudo vim /etc/systemd/system/classmanager.service
|
||||
```
|
||||
|
||||
Systemd服务文件内容:
|
||||
```ini
|
||||
[Unit]
|
||||
Description=ClassManager Backend
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=www-data
|
||||
WorkingDirectory=/var/www/classmanager/backend
|
||||
Environment="PATH=/var/www/classmanager/backend/venv/bin"
|
||||
ExecStart=/var/www/classmanager/backend/venv/bin/uvicorn main:app --host 127.0.0.1 --port 8000
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
启动服务:
|
||||
```bash
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl start classmanager
|
||||
sudo systemctl enable classmanager
|
||||
```
|
||||
|
||||
### 4. 前端部署
|
||||
|
||||
```bash
|
||||
# 上传前端代码到 /var/www/classmanager/frontend/
|
||||
# 配置Nginx
|
||||
sudo vim /etc/nginx/sites-available/classmanager
|
||||
```
|
||||
|
||||
Nginx配置示例:
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name your-domain.com;
|
||||
root /var/www/classmanager/frontend;
|
||||
index index.php;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?$query_string;
|
||||
}
|
||||
|
||||
location ~ \.php$ {
|
||||
include snippets/fastcgi-php.conf;
|
||||
fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
|
||||
}
|
||||
|
||||
location /api/ {
|
||||
proxy_pass http://127.0.0.1:8000/;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
启用站点:
|
||||
```bash
|
||||
sudo ln -s /etc/nginx/sites-available/classmanager /etc/nginx/sites-enabled/
|
||||
sudo nginx -t
|
||||
sudo systemctl restart nginx
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 环境变量说明
|
||||
|
||||
后端 `.env` 文件主要配置项:
|
||||
|
||||
| 配置项 | 说明 | 示例 |
|
||||
|-------|------|------|
|
||||
| `APP_NAME` | 应用名称 | 班级操行分管理系统 |
|
||||
| `DEBUG` | 调试模式 | false(生产环境) |
|
||||
| `SECRET_KEY` | 应用密钥 | 32位以上随机字符串 |
|
||||
| `DB_HOST` | 数据库地址 | localhost |
|
||||
| `DB_USER` | 数据库用户名 | class_user |
|
||||
| `DB_PASSWORD` | 数据库密码 | YourPassword |
|
||||
| `DB_NAME` | 数据库名 | class_manager |
|
||||
| `REDIS_HOST` | Redis地址 | localhost |
|
||||
| `REDIS_PASSWORD` | Redis密码 | 可选 |
|
||||
| `JWT_SECRET_KEY` | JWT密钥 | 32位以上随机字符串 |
|
||||
| `DEBUG_PATH` | 调试入口路径 | /random-string |
|
||||
| `DEDUCTION_HOMEWORK_NOT_SUBMIT` | 作业未提交扣分 | 2 |
|
||||
| `DEDUCTION_HOMEWORK_LATE` | 作业迟交扣分 | 1 |
|
||||
| `DEDUCTION_ATTENDANCE_ABSENT` | 缺勤扣分 | 5 |
|
||||
| `DEDUCTION_ATTENDANCE_LATE` | 迟到扣分 | 2 |
|
||||
| `DEDUCTION_ATTENDANCE_LEAVE` | 请假扣分 | 1 |
|
||||
|
||||
---
|
||||
|
||||
## 常见问题
|
||||
|
||||
### Q1: 后端启动失败
|
||||
- 检查端口8000是否被占用
|
||||
- 检查数据库和Redis连接配置
|
||||
- 查看日志:`sudo journalctl -u classmanager -f`
|
||||
|
||||
### Q2: 前端页面空白或报错
|
||||
- 检查Nginx配置中的root路径
|
||||
- 检查PHP-FPM是否运行
|
||||
- 检查文件权限:`sudo chown -R www-data:www-data /var/www/classmanager`
|
||||
|
||||
### Q3: API请求404
|
||||
- 检查反向代理配置
|
||||
- 确认后端服务已启动
|
||||
- 检查防火墙设置
|
||||
|
||||
### Q4: 数据库连接失败
|
||||
- 确认MySQL已启动
|
||||
- 检查用户名密码
|
||||
- 确认用户有数据库权限
|
||||
|
||||
---
|
||||
|
||||
## 技术支持
|
||||
|
||||
- 开发者: Canglan
|
||||
- 联系方式: admin@sea-studio.top
|
||||
- 版权归属: Sea Network Technology Studio
|
||||
- 许可证: MIT License
|
||||
|
||||
Reference in New Issue
Block a user