464 lines
8.1 KiB
Markdown
464 lines
8.1 KiB
Markdown
|
|
# ZJPB - 焦提示词 部署文档
|
|||
|
|
|
|||
|
|
## 1Panel部署指南
|
|||
|
|
|
|||
|
|
### 前置要求
|
|||
|
|
- 1Panel管理面板已安装
|
|||
|
|
- MySQL 5.7+ 或 MariaDB
|
|||
|
|
- Python 3.8+
|
|||
|
|
- Nginx(1Panel自带)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 一、数据库准备
|
|||
|
|
|
|||
|
|
### 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`
|
|||
|
|
|
|||
|
|
祝部署顺利!🚀
|