新增功能: 1. 修改密码功能 - 用户可以修改自己的密码 - 需要验证旧密码 - 新密码至少6位且不能与旧密码相同 2. 邮箱绑定功能 - 用户可以绑定/修改邮箱 - 邮箱格式验证和唯一性检查 - 修改邮箱后需要重新验证 3. 邮箱验证功能 - 发送验证邮件(24小时有效) - 点击邮件链接完成验证 - 验证状态显示 技术实现: - 新增4个数据库字段(email_verified等) - 封装邮件发送工具(utils/email_sender.py) - 新增5个API接口 - 新增修改密码页面 - 集成邮箱管理到个人中心 文件变更: - 修改:app.py, models.py, base_new.html, profile.html - 新增:change_password.html, email_sender.py, migrate_email_verification.py - 文档:server-update.md, SERVER_RESTART_GUIDE.md Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
213 lines
3.2 KiB
Markdown
213 lines
3.2 KiB
Markdown
# ZJPB 服务器重启指南(1Panel 环境)
|
||
|
||
## 第一步:确认当前部署方式
|
||
|
||
请在服务器上执行以下命令,找出应用的运行方式:
|
||
|
||
### 1. 检查是否有运行的 Python 进程
|
||
|
||
```bash
|
||
ps aux | grep -E "python|gunicorn|flask|app.py" | grep -v grep
|
||
```
|
||
|
||
### 2. 检查 1Panel 的应用配置
|
||
|
||
```bash
|
||
# 查看 1Panel 应用目录
|
||
ls -la /opt/1panel/apps/
|
||
|
||
# 查看项目实际路径
|
||
pwd
|
||
|
||
# 查看是否有启动脚本
|
||
ls -la *.sh start.* run.*
|
||
```
|
||
|
||
### 3. 检查 Nginx 配置
|
||
|
||
```bash
|
||
# 查看 Nginx 配置
|
||
cat /etc/nginx/sites-enabled/* | grep zjpb
|
||
# 或者
|
||
cat /etc/nginx/conf.d/* | grep zjpb
|
||
```
|
||
|
||
### 4. 检查是否使用 Docker
|
||
|
||
```bash
|
||
docker ps | grep zjpb
|
||
```
|
||
|
||
---
|
||
|
||
## 常见的 1Panel 部署方式
|
||
|
||
### 方式 1:直接运行 Python 脚本
|
||
|
||
如果找到类似这样的进程:
|
||
```
|
||
python app.py
|
||
```
|
||
|
||
**重启方法:**
|
||
```bash
|
||
# 停止旧进程
|
||
pkill -f "python app.py"
|
||
|
||
# 启动新进程(后台运行)
|
||
nohup python app.py > app.log 2>&1 &
|
||
```
|
||
|
||
---
|
||
|
||
### 方式 2:使用 Gunicorn
|
||
|
||
如果找到类似这样的进程:
|
||
```
|
||
gunicorn -w 4 -b 0.0.0.0:5000 app:app
|
||
```
|
||
|
||
**重启方法:**
|
||
```bash
|
||
# 停止旧进程
|
||
pkill -f gunicorn
|
||
|
||
# 启动新进程
|
||
gunicorn -w 4 -b 0.0.0.0:5000 app:app --daemon
|
||
```
|
||
|
||
---
|
||
|
||
### 方式 3:使用启动脚本
|
||
|
||
如果项目中有 `start.sh` 或类似脚本:
|
||
|
||
**重启方法:**
|
||
```bash
|
||
# 停止
|
||
./stop.sh
|
||
# 或者
|
||
pkill -f "python app.py"
|
||
|
||
# 启动
|
||
./start.sh
|
||
```
|
||
|
||
---
|
||
|
||
### 方式 4:使用 Docker
|
||
|
||
如果使用 Docker 容器:
|
||
|
||
**重启方法:**
|
||
```bash
|
||
# 查看容器
|
||
docker ps | grep zjpb
|
||
|
||
# 重启容器
|
||
docker restart <container_id>
|
||
```
|
||
|
||
---
|
||
|
||
### 方式 5:1Panel 面板管理
|
||
|
||
如果通过 1Panel 面板部署:
|
||
|
||
**重启方法:**
|
||
1. 登录 1Panel 管理面板
|
||
2. 找到 ZJPB 应用
|
||
3. 点击"重启"按钮
|
||
|
||
---
|
||
|
||
## 推荐的重启流程
|
||
|
||
### 步骤 1:找到当前进程
|
||
|
||
```bash
|
||
ps aux | grep python | grep -v grep
|
||
```
|
||
|
||
记录下进程 PID 和启动命令。
|
||
|
||
### 步骤 2:停止进程
|
||
|
||
```bash
|
||
# 方法 1:使用 PID
|
||
kill <PID>
|
||
|
||
# 方法 2:使用进程名
|
||
pkill -f "python app.py"
|
||
|
||
# 方法 3:强制停止(如果上面不行)
|
||
pkill -9 -f "python app.py"
|
||
```
|
||
|
||
### 步骤 3:确认已停止
|
||
|
||
```bash
|
||
ps aux | grep python | grep -v grep
|
||
```
|
||
|
||
应该没有输出。
|
||
|
||
### 步骤 4:启动应用
|
||
|
||
```bash
|
||
# 进入项目目录
|
||
cd /opt/1panel/apps/zjpb
|
||
|
||
# 激活虚拟环境
|
||
source venv/bin/activate
|
||
|
||
# 启动应用(后台运行)
|
||
nohup python app.py > app.log 2>&1 &
|
||
|
||
# 或者使用 Gunicorn
|
||
nohup gunicorn -w 4 -b 0.0.0.0:5000 app:app > gunicorn.log 2>&1 &
|
||
```
|
||
|
||
### 步骤 5:验证启动成功
|
||
|
||
```bash
|
||
# 检查进程
|
||
ps aux | grep python | grep -v grep
|
||
|
||
# 检查日志
|
||
tail -f app.log
|
||
# 或者
|
||
tail -f gunicorn.log
|
||
|
||
# 测试访问
|
||
curl http://localhost:5000/
|
||
```
|
||
|
||
---
|
||
|
||
## 如果不确定如何重启
|
||
|
||
请执行以下命令并将结果发给我:
|
||
|
||
```bash
|
||
echo "=== 当前目录 ==="
|
||
pwd
|
||
|
||
echo -e "\n=== Python 进程 ==="
|
||
ps aux | grep python | grep -v grep
|
||
|
||
echo -e "\n=== 项目文件 ==="
|
||
ls -la
|
||
|
||
echo -e "\n=== 启动脚本 ==="
|
||
ls -la *.sh 2>/dev/null || echo "没有找到 .sh 脚本"
|
||
|
||
echo -e "\n=== 最近的日志 ==="
|
||
ls -lt *.log 2>/dev/null | head -5 || echo "没有找到日志文件"
|
||
```
|
||
|
||
---
|
||
|
||
**创建日期:** 2025-02-06
|
||
**适用版本:** v3.0.1
|