新增功能: 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>
170 lines
2.7 KiB
Markdown
170 lines
2.7 KiB
Markdown
# ZJPB 服务器更新标准流程
|
||
|
||
## 适用场景
|
||
- 代码更新后需要部署到服务器
|
||
- 数据库结构变更需要迁移
|
||
- 新功能上线
|
||
|
||
## 服务器环境
|
||
- **部署方式**: 1Panel 管理
|
||
- **项目路径**: `/opt/1panel/apps/zjpb`
|
||
- **运行方式**: Python 直接运行或 Gunicorn
|
||
- **数据库**: MySQL/MariaDB
|
||
|
||
---
|
||
|
||
## 标准更新流程
|
||
|
||
### 第一步:提交代码到 Git
|
||
|
||
```bash
|
||
# 在本地开发环境
|
||
git add .
|
||
git commit -m "feat: 功能描述"
|
||
git push origin master
|
||
```
|
||
|
||
### 第二步:登录服务器
|
||
|
||
```bash
|
||
ssh your_username@server_ip
|
||
```
|
||
|
||
### 第三步:进入项目目录
|
||
|
||
```bash
|
||
cd /opt/1panel/apps/zjpb
|
||
```
|
||
|
||
### 第四步:停止应用
|
||
|
||
```bash
|
||
# 查找进程
|
||
ps aux | grep python | grep -v grep
|
||
|
||
# 停止进程(使用进程ID)
|
||
kill <PID>
|
||
|
||
# 或者强制停止
|
||
pkill -f "python app.py"
|
||
```
|
||
|
||
### 第五步:拉取最新代码
|
||
|
||
```bash
|
||
git pull origin master
|
||
```
|
||
|
||
### 第六步:激活虚拟环境
|
||
|
||
```bash
|
||
source venv/bin/activate
|
||
```
|
||
|
||
### 第七步:安装/更新依赖(如有)
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### 第八步:运行数据库迁移(如有)
|
||
|
||
```bash
|
||
# 根据具体的迁移脚本名称
|
||
python migrate_xxx.py
|
||
```
|
||
|
||
### 第九步:启动应用
|
||
|
||
```bash
|
||
# 后台运行
|
||
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 &
|
||
```
|
||
|
||
### 第十步:验证启动成功
|
||
|
||
```bash
|
||
# 检查进程
|
||
ps aux | grep python | grep -v grep
|
||
|
||
# 查看日志
|
||
tail -f app.log
|
||
|
||
# 测试访问
|
||
curl http://localhost:5000/
|
||
```
|
||
|
||
---
|
||
|
||
## 快速命令(一键执行)
|
||
|
||
```bash
|
||
# 进入目录并更新
|
||
cd /opt/1panel/apps/zjpb && \
|
||
pkill -f "python app.py" && \
|
||
git pull origin master && \
|
||
source venv/bin/activate && \
|
||
nohup python app.py > app.log 2>&1 & && \
|
||
tail -f app.log
|
||
```
|
||
|
||
---
|
||
|
||
## 注意事项
|
||
|
||
1. **数据库迁移前必须备份**
|
||
```bash
|
||
mysqldump -u root -p zjpb > backup_$(date +%Y%m%d_%H%M%S).sql
|
||
```
|
||
|
||
2. **检查环境变量配置**
|
||
- 确保 `.env` 文件存在且配置正确
|
||
- 新增的环境变量需要手动添加
|
||
|
||
3. **日志监控**
|
||
- 启动后观察日志至少 1-2 分钟
|
||
- 确认没有错误信息
|
||
|
||
4. **回滚方案**
|
||
```bash
|
||
# 如果出现问题,回滚到上一个版本
|
||
git reset --hard HEAD~1
|
||
# 重启应用
|
||
```
|
||
|
||
---
|
||
|
||
## 常见问题
|
||
|
||
### 问题1:端口被占用
|
||
```bash
|
||
# 查找占用端口的进程
|
||
lsof -i :5000
|
||
# 杀死进程
|
||
kill -9 <PID>
|
||
```
|
||
|
||
### 问题2:虚拟环境找不到
|
||
```bash
|
||
# 重新创建虚拟环境
|
||
python3 -m venv venv
|
||
source venv/bin/activate
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### 问题3:数据库连接失败
|
||
```bash
|
||
# 检查数据库服务状态
|
||
systemctl status mysql
|
||
# 检查 .env 配置
|
||
cat .env | grep DATABASE
|
||
```
|
||
|
||
---
|
||
|
||
**创建日期**: 2025-02-07
|
||
**最后更新**: 2025-02-07
|