更新了readme
This commit is contained in:
118
README.md
118
README.md
@@ -351,35 +351,145 @@ sudo ufw enable
|
|||||||
|
|
||||||
## 代码更新
|
## 代码更新
|
||||||
|
|
||||||
|
### 常规代码更新流程
|
||||||
|
|
||||||
当需要更新代码时,可以使用以下命令:
|
当需要更新代码时,可以使用以下命令:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd /var/www/diary-family
|
cd /var/www/diary-family
|
||||||
|
|
||||||
# 1. 先拉取远程最新代码(只获取,不合并)
|
# 1. 拉取远程最新代码(只获取,不合并)
|
||||||
git fetch origin
|
git fetch origin
|
||||||
|
|
||||||
# 2. 硬重置本地分支到远程分支的最新版本(会覆盖所有本地未提交修改)
|
# 2. 硬重置本地分支到远程分支的最新版本(会覆盖所有本地未提交修改)
|
||||||
# 注意:将 main 替换为你的分支名(如 master、dev 等)
|
# 注意:将 main 替换为你的分支名(如 master、dev 等)
|
||||||
git reset --hard origin/main
|
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
|
source venv/bin/activate
|
||||||
|
|
||||||
# 安装新依赖(如果有)
|
# 安装新依赖(如果有)
|
||||||
pip install -r requirements.txt
|
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
|
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 supervisorctl restart all
|
||||||
sudo systemctl restart nginx
|
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`
|
1. **访问系统**:在浏览器中打开 `http://your_domain_or_ip`
|
||||||
|
|||||||
Reference in New Issue
Block a user