feat: 添加v2.2.0部署脚本和工具文件

This commit is contained in:
Jowe
2025-12-31 01:33:47 +08:00
parent f5f73025d7
commit 4d3163575c
24 changed files with 5428 additions and 1 deletions

463
DEPLOYMENT.md Normal file
View File

@@ -0,0 +1,463 @@
# ZJPB - 焦提示词 部署文档
## 1Panel部署指南
### 前置要求
- 1Panel管理面板已安装
- MySQL 5.7+ 或 MariaDB
- Python 3.8+
- Nginx1Panel自带
---
## 一、数据库准备
### 1.1 在1Panel中创建MySQL数据库
1. 登录1Panel管理面板
2. 进入「数据库」菜单
3. 点击「创建数据库」
4. 填写信息:
- 数据库名:`ai_nav`
- 用户名:`ai_nav_user`
- 密码:自动生成或自定义(记录下来)
- 权限:本地访问
5. 点击创建
### 1.2 导入数据库结构
使用1Panel的phpMyAdmin或命令行导入
```sql
-- 如果你有数据库备份文件,可以直接导入
-- 否则在部署后通过init_db.py初始化
```
---
## 二、上传项目文件
### 2.1 压缩项目
在本地Windows环境压缩项目文件夹为 `zjpb.zip`**排除以下文件/文件夹**
- `__pycache__/`
- `*.pyc`
- `.git/`
- `.env`(生产环境重新配置)
- `venv/``env/`
- `test_*.py`(测试文件)
### 2.2 上传到服务器
1. 在1Panel中进入「文件」菜单
2. 导航到 `/opt/1panel/apps/` 或你的网站目录(如 `/www/wwwroot/`
3. 创建项目目录:`zjpb`
4. 上传 `zjpb.zip` 并解压
5. 最终路径示例:`/www/wwwroot/zjpb/`
---
## 三、环境配置
### 3.1 SSH连接到服务器
使用1Panel的终端或SSH工具连接服务器
### 3.2 创建Python虚拟环境
```bash
cd /www/wwwroot/zjpb
# 创建虚拟环境
python3 -m venv venv
# 激活虚拟环境
source venv/bin/activate
# 升级pip
pip install --upgrade pip
```
### 3.3 安装Python依赖
```bash
pip install -r requirements.txt
```
### 3.4 配置环境变量
创建生产环境的 `.env` 文件:
```bash
nano .env
```
填写以下内容(**修改为实际值**
```env
# 数据库配置
DB_HOST=localhost
DB_PORT=3306
DB_USER=ai_nav_user
DB_PASSWORD=你的数据库密码
DB_NAME=ai_nav
# 安全配置(生成随机密钥)
SECRET_KEY=your-production-secret-key-change-this
# 运行环境
FLASK_ENV=production
# DeepSeek API配置可选
DEEPSEEK_API_KEY=你的DeepSeek_API密钥
DEEPSEEK_BASE_URL=https://api.deepseek.com
```
**生成安全的SECRET_KEY**
```bash
python3 -c "import secrets; print(secrets.token_hex(32))"
```
### 3.5 创建必要的目录
```bash
# 创建日志目录
mkdir -p logs
# 创建静态文件上传目录
mkdir -p static/uploads
# 设置权限
chmod 755 logs static/uploads
```
---
## 四、初始化数据库
### 4.1 运行初始化脚本
```bash
source venv/bin/activate
python init_db.py
```
这会创建所有表并创建默认管理员账号:
- 用户名:`admin`
- 密码:`admin123`
**⚠️ 重要:登录后立即修改默认密码!**
---
## 五、配置Nginx反向代理
### 5.1 在1Panel中创建网站
1. 进入1Panel「网站」菜单
2. 点击「创建网站」
3. 填写信息:
- 网站类型:反向代理
- 域名:`your-domain.com`或IP
- 代理地址:`http://127.0.0.1:5000`
- 启用SSL推荐自动申请Let's Encrypt证书
### 5.2 自定义Nginx配置可选
如果需要自定义编辑Nginx配置
```nginx
server {
listen 80;
server_name your-domain.com;
# 如果启用SSL这里会自动重定向到443
client_max_body_size 10M; # 允许上传文件大小
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket支持如果需要
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# 静态文件直接由Nginx处理
location /static/ {
alias /www/wwwroot/zjpb/static/;
expires 30d;
add_header Cache-Control "public, immutable";
}
}
```
---
## 六、配置Supervisor守护进程
### 6.1 在1Panel中使用Supervisor
1. 进入1Panel「容器」→「应用编排」或「进程管理」
2. 创建新的守护进程配置
### 6.2 创建Supervisor配置文件
如果1Panel没有内置手动创建
```bash
nano /etc/supervisor/conf.d/zjpb.conf
```
配置内容:
```ini
[program:zjpb]
command=/www/wwwroot/zjpb/venv/bin/gunicorn -c gunicorn_config.py app:app
directory=/www/wwwroot/zjpb
user=www
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/www/wwwroot/zjpb/logs/supervisor.log
environment=FLASK_ENV="production"
```
### 6.3 启动服务
```bash
# 重新加载Supervisor配置
supervisorctl reread
supervisorctl update
# 启动应用
supervisorctl start zjpb
# 查看状态
supervisorctl status zjpb
```
---
## 七、使用systemd守护进程替代方案
如果不使用Supervisor可以用systemd
### 7.1 创建systemd服务文件
```bash
sudo nano /etc/systemd/system/zjpb.service
```
内容:
```ini
[Unit]
Description=ZJPB AI Navigation Flask Application
After=network.target mysql.service
[Service]
Type=notify
User=www
Group=www
WorkingDirectory=/www/wwwroot/zjpb
Environment="PATH=/www/wwwroot/zjpb/venv/bin"
Environment="FLASK_ENV=production"
ExecStart=/www/wwwroot/zjpb/venv/bin/gunicorn -c gunicorn_config.py app:app
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
```
### 7.2 启动服务
```bash
# 重新加载systemd
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start zjpb
# 设置开机自启
sudo systemctl enable zjpb
# 查看状态
sudo systemctl status zjpb
```
---
## 八、验证部署
### 8.1 检查服务状态
```bash
# 查看gunicorn进程
ps aux | grep gunicorn
# 查看日志
tail -f logs/error.log
tail -f logs/access.log
```
### 8.2 访问网站
1. 前台访问:`http://your-domain.com`
2. 后台访问:`http://your-domain.com/admin/login`
- 用户名:`admin`
- 密码:`admin123`(首次登录后立即修改)
---
## 九、常用管理命令
### 9.1 重启应用
**使用Supervisor**
```bash
supervisorctl restart zjpb
```
**使用systemd**
```bash
sudo systemctl restart zjpb
```
### 9.2 查看日志
```bash
# 应用日志
tail -f logs/error.log
# Nginx访问日志
tail -f /www/server/nginx/logs/your-domain.com.log
# Supervisor日志
tail -f logs/supervisor.log
```
### 9.3 更新代码
```bash
cd /www/wwwroot/zjpb
# 备份数据库
mysqldump -u ai_nav_user -p ai_nav > backup_$(date +%Y%m%d).sql
# 拉取新代码或上传新文件
# ...
# 激活虚拟环境
source venv/bin/activate
# 安装新依赖
pip install -r requirements.txt
# 重启应用
supervisorctl restart zjpb
# 或
sudo systemctl restart zjpb
```
---
## 十、安全加固
### 10.1 修改默认管理员密码
登录后台后立即修改密码:
1. 访问:`/admin/change-password`
2. 输入旧密码:`admin123`
3. 设置新的强密码
### 10.2 配置防火墙
```bash
# 只允许80和443端口1Panel通常已配置
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
```
### 10.3 配置SSL证书
在1Panel中为网站启用SSL
1. 进入网站设置
2. 启用SSL
3. 选择Let's Encrypt免费证书
4. 自动申请并配置
---
## 十一、故障排查
### 11.1 应用无法启动
检查日志:
```bash
tail -f logs/error.log
```
常见问题:
- 数据库连接失败:检查`.env`配置
- 端口被占用:修改`gunicorn_config.py`中的端口
- 权限问题:确保文件所有者为`www`用户
### 11.2 静态文件404
检查Nginx配置和目录权限
```bash
ls -la static/
chmod -R 755 static/
```
### 11.3 数据库连接失败
```bash
# 测试数据库连接
mysql -u ai_nav_user -p ai_nav
# 检查MySQL服务
sudo systemctl status mysql
```
---
## 十二、备份策略
### 12.1 数据库备份
创建定时任务:
```bash
crontab -e
```
添加每日备份:
```cron
0 2 * * * mysqldump -u ai_nav_user -p密码 ai_nav > /www/backup/zjpb_$(date +\%Y\%m\%d).sql
```
### 12.2 文件备份
```bash
# 备份上传的文件
tar -czf uploads_backup_$(date +%Y%m%d).tar.gz static/uploads/
```
---
## 支持与帮助
如有问题,请检查:
1. 应用日志:`logs/error.log`
2. Nginx日志`/www/server/nginx/logs/`
3. 系统日志:`journalctl -u zjpb -f`
祝部署顺利!🚀