359 lines
7.0 KiB
Markdown
359 lines
7.0 KiB
Markdown
# 1Panel Web界面部署指南
|
||
|
||
## 使用1Panel Web界面部署ZJPB项目
|
||
|
||
### 前提条件
|
||
- 1Panel已安装并可访问
|
||
- 1Panel版本支持Python项目管理
|
||
|
||
---
|
||
|
||
## 方式一:使用1Panel的运行时环境(推荐)
|
||
|
||
### 步骤1:准备项目文件
|
||
|
||
1. **压缩项目**
|
||
- 在本地压缩整个项目文件夹
|
||
- 排除:`venv/`, `__pycache__/`, `.env`, `test_*.py`, `logs/`
|
||
|
||
### 步骤2:在1Panel中创建数据库
|
||
|
||
1. 登录1Panel管理面板
|
||
2. 进入 **数据库** 菜单
|
||
3. 点击 **创建数据库**
|
||
4. 填写信息:
|
||
```
|
||
数据库名:ai_nav
|
||
用户名:ai_nav_user
|
||
密码:(自动生成或自定义)
|
||
权限:本地访问
|
||
```
|
||
5. 点击确定,**记录数据库密码**
|
||
|
||
### 步骤3:上传项目文件
|
||
|
||
1. 进入 **文件** 菜单
|
||
2. 导航到网站目录(如 `/www/wwwroot/`)
|
||
3. 创建项目目录 `zjpb`
|
||
4. 上传并解压 `zjpb.zip`
|
||
|
||
### 步骤4:配置环境变量
|
||
|
||
1. 在项目目录中,找到 `.env.example` 文件
|
||
2. 复制为 `.env`
|
||
3. 点击编辑,填写配置:
|
||
|
||
```env
|
||
# 数据库配置
|
||
DB_HOST=localhost
|
||
DB_PORT=3306
|
||
DB_USER=ai_nav_user
|
||
DB_PASSWORD=你的数据库密码
|
||
DB_NAME=ai_nav
|
||
|
||
# 安全配置
|
||
SECRET_KEY=你的密钥(使用下方命令生成)
|
||
FLASK_ENV=production
|
||
|
||
# DeepSeek API(可选)
|
||
DEEPSEEK_API_KEY=sk-xxxxx
|
||
DEEPSEEK_BASE_URL=https://api.deepseek.com
|
||
```
|
||
|
||
生成SECRET_KEY:
|
||
```bash
|
||
# 在1Panel终端执行
|
||
python3 -c "import secrets; print(secrets.token_hex(32))"
|
||
```
|
||
|
||
### 步骤5:使用1Panel创建Python项目
|
||
|
||
#### 5.1 进入网站管理
|
||
|
||
1. 点击 **网站** 菜单
|
||
2. 点击 **创建网站**
|
||
3. 选择 **运行时** 类型
|
||
|
||
#### 5.2 配置Python项目
|
||
|
||
填写以下信息:
|
||
|
||
**基本设置:**
|
||
```
|
||
网站类型:运行时
|
||
运行时:Python
|
||
域名:your-domain.com(或IP地址)
|
||
代码目录:/www/wwwroot/zjpb
|
||
```
|
||
|
||
**Python设置:**
|
||
```
|
||
Python版本:选择 3.8+ 的版本
|
||
应用类型:选择 "Flask" 或 "其他"
|
||
启动文件:app.py
|
||
启动命令:gunicorn -c gunicorn_config.py app:app
|
||
端口:5000(默认)
|
||
```
|
||
|
||
**环境变量:**(如果1Panel支持在界面配置)
|
||
```
|
||
FLASK_ENV=production
|
||
```
|
||
|
||
**其他选项:**
|
||
```
|
||
☑ 自动启动
|
||
☑ 守护进程
|
||
进程数:4
|
||
```
|
||
|
||
#### 5.3 安装依赖
|
||
|
||
1. 创建网站后,1Panel会自动创建虚拟环境
|
||
2. 进入网站设置
|
||
3. 找到 **依赖管理** 或 **包管理**
|
||
4. 上传 `requirements.txt` 或手动安装
|
||
5. 点击 **安装依赖**
|
||
|
||
或者使用1Panel的终端:
|
||
```bash
|
||
# 进入项目目录
|
||
cd /www/wwwroot/zjpb
|
||
|
||
# 激活虚拟环境(1Panel自动创建的)
|
||
source venv/bin/activate
|
||
|
||
# 安装依赖
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### 步骤6:初始化数据库
|
||
|
||
1. 在1Panel中打开 **终端** 或 SSH连接
|
||
2. 执行:
|
||
```bash
|
||
cd /www/wwwroot/zjpb
|
||
source venv/bin/activate
|
||
python init_db.py
|
||
```
|
||
|
||
### 步骤7:启动和管理
|
||
|
||
1. 在1Panel网站列表中找到你的项目
|
||
2. 点击 **启动** 按钮
|
||
3. 查看状态:运行中 ✓
|
||
|
||
### 步骤8:配置反向代理(如果需要)
|
||
|
||
如果1Panel没有自动配置Nginx:
|
||
|
||
1. 进入网站设置
|
||
2. 找到 **反向代理** 或 **代理配置**
|
||
3. 配置:
|
||
```
|
||
目标地址:http://127.0.0.1:5000
|
||
```
|
||
|
||
### 步骤9:配置SSL证书(推荐)
|
||
|
||
1. 在网站设置中找到 **SSL**
|
||
2. 选择 **Let's Encrypt**
|
||
3. 点击申请证书
|
||
4. 启用 **强制HTTPS**
|
||
|
||
### 步骤10:访问验证
|
||
|
||
1. 前台:`https://your-domain.com`
|
||
2. 后台:`https://your-domain.com/admin/login`
|
||
- 默认用户名:`admin`
|
||
- 默认密码:`admin123`
|
||
3. **立即修改密码**:访问 `/admin/change-password`
|
||
|
||
---
|
||
|
||
## 方式二:使用1Panel的OpenResty/Nginx + Supervisor
|
||
|
||
如果1Panel的Python运行时不支持或不稳定,可以使用传统方式:
|
||
|
||
### 步骤1-4:同上(数据库、文件上传、环境配置)
|
||
|
||
### 步骤5:手动创建虚拟环境
|
||
|
||
```bash
|
||
cd /www/wwwroot/zjpb
|
||
python3 -m venv venv
|
||
source venv/bin/activate
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### 步骤6:创建Supervisor配置
|
||
|
||
1. 在1Panel中进入 **容器** 或 **进程管理**
|
||
2. 如果有Supervisor功能,创建新任务
|
||
|
||
或手动创建配置文件:
|
||
```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"
|
||
```
|
||
|
||
启动:
|
||
```bash
|
||
supervisorctl reread
|
||
supervisorctl update
|
||
supervisorctl start zjpb
|
||
```
|
||
|
||
### 步骤7:创建反向代理网站
|
||
|
||
1. 在1Panel **网站** 菜单中点击 **创建网站**
|
||
2. 选择 **反向代理**
|
||
3. 填写:
|
||
```
|
||
域名:your-domain.com
|
||
代理地址:http://127.0.0.1:5000
|
||
```
|
||
|
||
### 步骤8:配置SSL
|
||
|
||
同方式一
|
||
|
||
---
|
||
|
||
## 常见问题
|
||
|
||
### Q1: 1Panel在哪里创建Python项目?
|
||
|
||
**A:**
|
||
- 进入 **网站** 菜单
|
||
- 点击 **创建网站**
|
||
- 选择 **运行时** 或 **Runtime**
|
||
- 选择 **Python**
|
||
|
||
### Q2: 找不到虚拟环境?
|
||
|
||
**A:**
|
||
- 1Panel创建的虚拟环境通常在项目目录下的 `venv/` 文件夹
|
||
- 路径:`/www/wwwroot/zjpb/venv/`
|
||
- 可以在文件管理器中查看
|
||
|
||
### Q3: 如何查看应用日志?
|
||
|
||
**A:**
|
||
- 方式1:在网站管理中点击 **日志** 按钮
|
||
- 方式2:查看文件 `logs/error.log`
|
||
- 方式3:使用1Panel的终端:`tail -f logs/error.log`
|
||
|
||
### Q4: 如何重启应用?
|
||
|
||
**A:**
|
||
- 方式1:在1Panel网站列表中点击 **重启** 按钮
|
||
- 方式2:使用管理脚本:`./manage.sh restart`
|
||
- 方式3:Supervisor:`supervisorctl restart zjpb`
|
||
|
||
### Q5: 端口被占用怎么办?
|
||
|
||
**A:**
|
||
修改 `gunicorn_config.py` 中的端口:
|
||
```python
|
||
bind = "0.0.0.0:5001" # 改为其他端口
|
||
```
|
||
然后在反向代理中也修改为对应端口。
|
||
|
||
---
|
||
|
||
## 管理和维护
|
||
|
||
### 更新代码
|
||
|
||
1. 在1Panel文件管理中上传新文件
|
||
2. 在网站管理中点击 **重启**
|
||
|
||
### 查看状态
|
||
|
||
1. 进入网站列表
|
||
2. 查看状态指示灯
|
||
3. 点击网站名称查看详细信息
|
||
|
||
### 备份数据库
|
||
|
||
1. 进入 **数据库** 菜单
|
||
2. 找到 `ai_nav` 数据库
|
||
3. 点击 **备份** 按钮
|
||
|
||
### 监控日志
|
||
|
||
1. 在网站设置中找到 **日志** 选项
|
||
2. 查看访问日志和错误日志
|
||
3. 可以设置日志轮转
|
||
|
||
---
|
||
|
||
## 推荐配置
|
||
|
||
### 生产环境推荐配置
|
||
|
||
```
|
||
服务器配置:
|
||
- CPU: 2核+
|
||
- 内存: 2GB+
|
||
- 硬盘: 20GB+
|
||
|
||
Python版本:
|
||
- Python 3.8+
|
||
|
||
数据库:
|
||
- MySQL 5.7+
|
||
- MariaDB 10.3+
|
||
|
||
Web服务器:
|
||
- Nginx (1Panel自带)
|
||
|
||
进程管理:
|
||
- Supervisor 或 1Panel内置
|
||
|
||
工作进程数:
|
||
- gunicorn workers: 4
|
||
- gunicorn threads: 2
|
||
```
|
||
|
||
---
|
||
|
||
## 安全建议
|
||
|
||
1. ✅ 修改默认管理员密码
|
||
2. ✅ 使用强密码的SECRET_KEY
|
||
3. ✅ 启用HTTPS (Let's Encrypt)
|
||
4. ✅ 定期备份数据库
|
||
5. ✅ 设置文件权限:
|
||
```bash
|
||
chmod 600 .env
|
||
chmod 755 static/uploads
|
||
```
|
||
6. ✅ 配置防火墙(1Panel通常自动配置)
|
||
|
||
---
|
||
|
||
## 获取帮助
|
||
|
||
如果遇到问题:
|
||
1. 查看 `logs/error.log` 日志文件
|
||
2. 检查1Panel的系统日志
|
||
3. 验证数据库连接
|
||
4. 检查端口是否被占用
|
||
5. 确认虚拟环境依赖已安装
|
||
|
||
祝部署顺利!🎉
|