更新了readme
This commit is contained in:
118
README.md
118
README.md
@@ -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`
|
||||
|
||||
Reference in New Issue
Block a user