更新了readme

This commit is contained in:
2026-01-05 21:33:18 +08:00
parent 4d04a630ab
commit 1d625a1481

118
README.md
View File

@@ -351,35 +351,145 @@ sudo ufw enable
## 代码更新
### 常规代码更新流程
当需要更新代码时,可以使用以下命令:
```bash
cd /var/www/diary-family
# 1. 拉取远程最新代码(只获取,不合并)
# 1. 拉取远程最新代码(只获取,不合并)
git fetch origin
# 2. 硬重置本地分支到远程分支的最新版本(会覆盖所有本地未提交修改)
# 注意:将 main 替换为你的分支名(如 master、dev 等)
git reset --hard origin/main
# 3. 拉取最新代码
git pull http://14.103.237.41:16001/xiaji/diary-family.git
# 激活虚拟环境
source venv/bin/activate
# 3. 安装新依赖(如果有)
pip install -r requirements.txt
# 4. 收集静态文件(如果有静态文件更新)
python manage.py collectstatic --noinput
# 5. 重启服务
sudo supervisorctl restart all
sudo systemctl restart nginx
```
### 模型更新部署流程
当开发机的models.py文件有更新时部署机需要执行以下完整流程
#### 步骤一:拉取最新代码
```bash
cd /var/www/diary-family
# 拉取远程最新代码
git fetch origin
# 硬重置本地分支到远程分支的最新版本
git reset --hard origin/main
# 激活虚拟环境
source venv/bin/activate
# 安装新依赖(如果有)
pip install -r requirements.txt
```
# 执行数据库迁移
#### 步骤二:数据库备份(关键步骤!)
```bash
# 备份当前数据库,以防迁移失败
cp /var/www/diary-family/db.sqlite3 /var/www/diary-family/db.sqlite3.backup.$(date +%Y%m%d_%H%M%S)
```
#### 步骤三:检查并生成迁移文件
```bash
# 检查模型定义是否有语法错误
python manage.py check
# 生成迁移文件根据models.py的变化自动生成
python manage.py makemigrations
```
#### 步骤四:查看并执行迁移
```bash
# 查看生成的迁移文件内容,确保迁移逻辑正确
# 注意:将 000x_xxx.py 替换为实际生成的迁移文件名
cat core/migrations/000x_xxx.py
# 执行数据库迁移(将模型变更应用到数据库)
python manage.py migrate
```
#### 步骤五:收集静态文件
```bash
# 收集静态文件(如果有静态文件更新)
python manage.py collectstatic --noinput
```
#### 步骤六:重启服务
```bash
# 重启服务,使新代码生效
sudo supervisorctl restart all
sudo systemctl restart nginx
```
#### 完整一键执行脚本
```bash
cd /var/www/diary-family
git fetch origin
git reset --hard origin/main
source venv/bin/activate
pip install -r requirements.txt
cp db.sqlite3 db.sqlite3.backup.$(date +%Y%m%d_%H%M%S)
python manage.py check
python manage.py makemigrations
python manage.py migrate
python manage.py collectstatic --noinput
sudo supervisorctl restart all
sudo systemctl restart nginx
```
### 迁移失败处理
如果`migrate`命令失败,可使用备份恢复数据库:
```bash
# 恢复数据库
cp /var/www/diary-family/db.sqlite3.backup.$(date +%Y%m%d_%H%M%S) /var/www/diary-family/db.sqlite3
# 重启服务
sudo supervisorctl restart all
sudo systemctl restart nginx
```
### 代码更新注意事项
1. **模型更新必须执行迁移**当开发机修改了models.py文件后部署机必须执行`makemigrations``migrate`命令,否则会出现数据库结构不匹配的错误。
2. **迁移文件检查**:生成迁移文件后,务必查看迁移文件内容,确保迁移逻辑正确,避免意外修改数据库结构。
3. **数据库备份不可省略**:在执行`migrate`命令前,必须备份数据库文件,以防迁移失败导致数据丢失。
4. **依赖更新**如果requirements.txt文件有更新必须执行`pip install -r requirements.txt`命令安装新依赖。
5. **静态文件更新**如果修改了静态文件CSS、JS、图片等必须执行`collectstatic`命令收集静态文件。
6. **服务重启**:代码更新后,必须重启相关服务,否则新代码不会生效。
7. **迁移失败处理**:如果`migrate`命令失败,可使用备份恢复数据库。
## 系统访问
1. **访问系统**:在浏览器中打开 `http://your_domain_or_ip`