优化更新
This commit is contained in:
@@ -18,11 +18,11 @@
|
||||
# 使用 mysqldump 备份单个数据库
|
||||
mysqldump -h 127.0.0.1 -u root -p --single-transaction \
|
||||
--routines --triggers --events \
|
||||
djangoadmin.django.elevue > backup_$(date +%Y%m%d_%H%M%S).sql
|
||||
djangoadmin.django.naivevue > backup_$(date +%Y%m%d_%H%M%S).sql
|
||||
|
||||
# 压缩备份
|
||||
mysqldump -h 127.0.0.1 -u root -p --single-transaction \
|
||||
djangoadmin.django.elevue | gzip > backup_$(date +%Y%m%d_%H%M%S).sql.gz
|
||||
djangoadmin.django.naivevue | gzip > backup_$(date +%Y%m%d_%H%M%S).sql.gz
|
||||
```
|
||||
|
||||
:::tip --single-transaction 作用
|
||||
@@ -44,7 +44,7 @@ mysqlbinlog --start-datetime="2026-09-05 00:00:00" \
|
||||
|
||||
:::tip binlog 配置
|
||||
确保 MySQL 配置中启用了 binlog:
|
||||
```ini
|
||||
```bash
|
||||
[mysqld]
|
||||
server-id = 1
|
||||
log-bin = mysql-bin
|
||||
@@ -76,10 +76,10 @@ Redis 用于缓存和 JWT token 黑名单,数据可从数据库重建。建议
|
||||
|
||||
```bash
|
||||
# 打包上传目录
|
||||
tar -czf uploads_$(date +%Y%m%d).tar.gz /data/apps/DjangoAdmin_Django_EleVue/public/uploads/
|
||||
tar -czf uploads_$(date +%Y%m%d).tar.gz /data/apps/DjangoAdmin_Django_NaiveVue/public/uploads/
|
||||
|
||||
# 使用 rsync 增量同步到远程
|
||||
rsync -avz --delete /data/apps/DjangoAdmin_Django_EleVue/public/uploads/ backup@10.0.2.100:/data/backup/uploads/
|
||||
rsync -avz --delete /data/apps/DjangoAdmin_Django_NaiveVue/public/uploads/ backup@10.0.2.100:/data/backup/uploads/
|
||||
```
|
||||
|
||||
## 自动化备份
|
||||
@@ -100,7 +100,7 @@ mkdir -p ${BACKUP_DIR}/{mysql,redis,uploads}
|
||||
|
||||
# MySQL 备份
|
||||
mysqldump -h 127.0.0.1 -u djangoadmin -p'<密码>' \
|
||||
--single-transaction djangoadmin.django.elevue | gzip > \
|
||||
--single-transaction djangoadmin.django.naivevue | gzip > \
|
||||
${BACKUP_DIR}/mysql/backup_${DATE}.sql.gz
|
||||
|
||||
# Redis 备份
|
||||
@@ -110,7 +110,7 @@ cp /var/lib/redis/dump.rdb ${BACKUP_DIR}/redis/redis_${DATE}.rdb
|
||||
|
||||
# 上传文件备份
|
||||
tar -czf ${BACKUP_DIR}/uploads/uploads_${DATE}.tar.gz \
|
||||
/data/apps/DjangoAdmin_Django_EleVue/public/uploads/
|
||||
/data/apps/DjangoAdmin_Django_NaiveVue/public/uploads/
|
||||
|
||||
# 清理过期备份
|
||||
find ${BACKUP_DIR} -type f -mtime +${RETENTION_DAYS} -delete
|
||||
@@ -134,10 +134,10 @@ crontab -e
|
||||
|
||||
```bash
|
||||
# 从 SQL 文件恢复
|
||||
mysql -h 127.0.0.1 -u root -p djangoadmin.django.elevue < backup_20260905.sql
|
||||
mysql -h 127.0.0.1 -u root -p djangoadmin.django.naivevue < backup_20260905.sql
|
||||
|
||||
# 从压缩文件恢复
|
||||
gunzip < backup_20260905.sql.gz | mysql -h 127.0.0.1 -u root -p djangoadmin.django.elevue
|
||||
gunzip < backup_20260905.sql.gz | mysql -h 127.0.0.1 -u root -p djangoadmin.django.naivevue
|
||||
```
|
||||
|
||||
### Redis 恢复
|
||||
|
||||
@@ -167,7 +167,7 @@ stages:
|
||||
|
||||
### pytest 配置
|
||||
|
||||
```ini
|
||||
```bash
|
||||
# pytest.ini
|
||||
[pytest]
|
||||
DJANGO_SETTINGS_MODULE = application.settings
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
:::tip 迁移工具链
|
||||
- **结构迁移**:Django 内置迁移系统(`makemigrations` + `migrate`)
|
||||
- **字段注释**:Django 4.1+ 通过 `db_comment` 参数自动添加数据库字段注释
|
||||
- **自定义命令**:`python manage.py add_full_comments` 回填数据库字段注释
|
||||
:::
|
||||
|
||||
## 全新安装初始化
|
||||
@@ -24,7 +23,7 @@ python manage.py migrate
|
||||
```
|
||||
|
||||
:::tip 初始化流程
|
||||
1. 确保数据库已创建:`CREATE DATABASE djangoadmin.django.elevue DEFAULT CHARACTER SET utf8mb4;`
|
||||
1. 确保数据库已创建:`CREATE DATABASE djangoadmin.django.naivevue DEFAULT CHARACTER SET utf8mb4;`
|
||||
2. 确保 `.env` 中的数据库配置正确
|
||||
3. 执行 `python manage.py migrate` 自动创建所有表
|
||||
:::
|
||||
@@ -99,7 +98,7 @@ python manage.py migrate --fake example
|
||||
|
||||
## 字段注释管理
|
||||
|
||||
Django 4.1+ 支持通过 `db_comment` 参数为数据库字段添加注释。项目中的模型已自动生成 `db_comment`:
|
||||
Django 4.1+ 支持通过 `db_comment` 参数为数据库字段添加注释。项目中的模型已自动生成 `db_comment`,在执行 `migrate` 时会自动同步到数据库:
|
||||
|
||||
```python
|
||||
class Example(BaseModel):
|
||||
@@ -110,16 +109,6 @@ class Example(BaseModel):
|
||||
)
|
||||
```
|
||||
|
||||
### 回填字段注释
|
||||
|
||||
对于已有数据库,可使用自定义命令回填字段注释:
|
||||
|
||||
```bash
|
||||
python manage.py add_full_comments
|
||||
```
|
||||
|
||||
该命令会遍历所有模型,为缺少注释的字段补充 `db_comment`。
|
||||
|
||||
## 迁移文件结构
|
||||
|
||||
每个应用的迁移文件位于 `application/{app_name}/migrations/` 目录:
|
||||
@@ -150,7 +139,6 @@ application/example/
|
||||
| 回滚指定应用 | `python manage.py migrate <app> zero` |
|
||||
| 查看迁移状态 | `python manage.py showmigrations` |
|
||||
| 查看迁移 SQL | `python manage.py sqlmigrate <app> <migration>` |
|
||||
| 回填字段注释 | `python manage.py add_full_comments` |
|
||||
|
||||
## 常见问题与排错
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
**数据库**:
|
||||
|
||||
- [ ] 安装 MySQL 8.0+
|
||||
- [ ] 创建数据库:`CREATE DATABASE djangoadmin.django.elevue DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;`
|
||||
- [ ] 创建数据库:`CREATE DATABASE djangoadmin.django.naivevue DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;`
|
||||
- [ ] 创建数据库用户并授权
|
||||
- [ ] 修改 `.env` 中的数据库配置(DATABASE_ENGINE、DATABASE_NAME、DATABASE_HOST、DATABASE_PORT、DATABASE_USER、DATABASE_PASSWORD)
|
||||
- [ ] 初始化数据库:`python manage.py migrate`
|
||||
@@ -144,7 +144,7 @@ server {
|
||||
|
||||
### 数据库迁移
|
||||
|
||||
- [ ] 备份数据库:`mysqldump -uroot -p djangoadmin.django.elevue > backup.sql`
|
||||
- [ ] 备份数据库:`mysqldump -uroot -p djangoadmin.django.naivevue > backup.sql`
|
||||
- [ ] 执行迁移:`python manage.py makemigrations && python manage.py migrate`
|
||||
- [ ] 验证迁移结果
|
||||
|
||||
@@ -204,7 +204,7 @@ cp -r /opt/backup/dist /opt/project/ui/dist
|
||||
|
||||
```bash
|
||||
# 从备份恢复
|
||||
mysql -uroot -p djangoadmin.django.elevue < backup.sql
|
||||
mysql -uroot -p djangoadmin.django.naivevue < backup.sql
|
||||
```
|
||||
|
||||
## 总结
|
||||
|
||||
@@ -151,7 +151,7 @@ services:
|
||||
image: mysql:8.0
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: root
|
||||
MYSQL_DATABASE: djangoadmin.django.elevue
|
||||
MYSQL_DATABASE: djangoadmin.django.naivevue
|
||||
volumes:
|
||||
- mysql_data:/var/lib/mysql
|
||||
ports:
|
||||
|
||||
@@ -49,7 +49,7 @@ REDIS_PASSWORD=123456
|
||||
REDIS_DB=0
|
||||
|
||||
# 文件配置
|
||||
DJANGO_FILE_URL=http://file.django.elevue
|
||||
DJANGO_FILE_URL=http://file.django.naivevue
|
||||
```
|
||||
|
||||
### Prod 环境
|
||||
@@ -91,7 +91,7 @@ DJANGO_FILE_URL=https://files.example.com
|
||||
```python
|
||||
# config/env.py 中的配置读取方式
|
||||
DATABASE_ENGINE = os.getenv('DATABASE_ENGINE', "django.db.backends.mysql")
|
||||
DATABASE_NAME = os.getenv('DATABASE_NAME', 'djangoadmin.django.elevue')
|
||||
DATABASE_NAME = os.getenv('DATABASE_NAME', 'djangoadmin.django.naivevue')
|
||||
DATABASE_HOST = os.getenv('DATABASE_HOST', "127.0.0.1")
|
||||
```
|
||||
|
||||
@@ -105,12 +105,12 @@ Docker 部署时,`docker-compose.yml` 通过 `env_file: .env` 注入环境变
|
||||
|
||||
| 变量名 | 说明 | 默认值 |
|
||||
|:----|:----|:----|
|
||||
| `DJANGO_NAME` | 应用名称(显示在浏览器标题) | Django+EleVue旗舰版 |
|
||||
| `DJANGO_NAME` | 应用名称(显示在浏览器标题) | Django+NaiveUI旗舰版 |
|
||||
| `DJANGO_VERSION` | 应用版本号 | v3.0.0 |
|
||||
| `DJANGO_DEBUG` | 调试模式开关 | True |
|
||||
| `DJANGO_DEMO` | 演示模式(限制写操作) | True |
|
||||
| `DATABASE_ENGINE` | 数据库引擎 | django.db.backends.mysql |
|
||||
| `DATABASE_NAME` | 数据库名称 | djangoadmin.django.elevue |
|
||||
| `DATABASE_NAME` | 数据库名称 | djangoadmin.django.naivevue |
|
||||
| `DATABASE_HOST` | 数据库主机 | 127.0.0.1 |
|
||||
| `DATABASE_PORT` | 数据库端口 | 3306 |
|
||||
| `DATABASE_USER` | 数据库用户名 | root |
|
||||
@@ -120,7 +120,7 @@ Docker 部署时,`docker-compose.yml` 通过 `env_file: .env` 注入环境变
|
||||
| `REDIS_PORT` | Redis 端口 | 6379 |
|
||||
| `REDIS_PASSWORD` | Redis 密码 | 123456 |
|
||||
| `REDIS_DB` | Redis 数据库索引 | 0 |
|
||||
| `DJANGO_FILE_URL` | 文件访问域名 | http://file.django.elevue |
|
||||
| `DJANGO_FILE_URL` | 文件访问域名 | http://file.django.naivevue |
|
||||
| `DJANGO_UPLOAD_DIR` | 文件上传目录 | /public/uploads |
|
||||
| `IP_LOCATION_SOURCE` | IP 地理位置来源 | api |
|
||||
| `SITE_DOMAIN` | 站点域名 | http://127.0.0.1:8000 |
|
||||
|
||||
@@ -41,7 +41,7 @@ server {
|
||||
gzip_vary on;
|
||||
|
||||
# 前端静态资源
|
||||
root /data/apps/DjangoAdmin_Django_EleVue/ui/dist;
|
||||
root /data/apps/DjangoAdmin_Django_NaiveVue/ui/dist;
|
||||
index index.html;
|
||||
|
||||
location / {
|
||||
@@ -70,14 +70,14 @@ server {
|
||||
|
||||
# Django 静态文件
|
||||
location /static/ {
|
||||
alias /data/apps/DjangoAdmin_Django_EleVue/public/static/;
|
||||
alias /data/apps/DjangoAdmin_Django_NaiveVue/public/static/;
|
||||
expires 30d;
|
||||
access_log off;
|
||||
}
|
||||
|
||||
# 上传文件访问
|
||||
location /uploads/ {
|
||||
alias /data/apps/DjangoAdmin_Django_EleVue/public/uploads/;
|
||||
alias /data/apps/DjangoAdmin_Django_NaiveVue/public/uploads/;
|
||||
expires 7d;
|
||||
access_log off;
|
||||
limit_except GET { deny all; }
|
||||
@@ -105,8 +105,8 @@ server {
|
||||
cd ui && pnpm build
|
||||
|
||||
# 2. 拷贝构建产物
|
||||
mkdir -p /data/apps/DjangoAdmin_Django_EleVue/ui/dist
|
||||
cp -r ui/dist /data/apps/DjangoAdmin_Django_EleVue/ui/
|
||||
mkdir -p /data/apps/DjangoAdmin_Django_NaiveVue/ui/dist
|
||||
cp -r ui/dist /data/apps/DjangoAdmin_Django_NaiveVue/ui/
|
||||
|
||||
# 3. 收集 Django 静态文件
|
||||
python manage.py collectstatic
|
||||
|
||||
@@ -239,7 +239,7 @@ class MasterSlaveRouter:
|
||||
|
||||
## Supervisor 多实例配置
|
||||
|
||||
```ini
|
||||
```bash
|
||||
; /etc/supervisor/conf.d/djangoadmin.conf
|
||||
[program:djangoadmin-1]
|
||||
command=/opt/venv/bin/gunicorn application.wsgi:application -c gunicorn.conf.py -b 127.0.0.1:8001
|
||||
|
||||
@@ -12,7 +12,7 @@ Supervisor 是一个 Python 编写的进程管理工具,用于在 Linux 服务
|
||||
|
||||
## 配置文件示例
|
||||
|
||||
```ini
|
||||
```bash
|
||||
; Supervisor 进程管理配置
|
||||
; 将 command / directory 替换为实际路径后复制到 /etc/supervisor/conf.d/
|
||||
|
||||
@@ -20,7 +20,7 @@ Supervisor 是一个 Python 编写的进程管理工具,用于在 Linux 服务
|
||||
; 启动命令:使用 gunicorn 运行 Django WSGI 应用
|
||||
command=/path/to/venv/bin/gunicorn application.wsgi:application --bind 127.0.0.1:8000 --workers 4 --timeout 120
|
||||
; 项目根目录
|
||||
directory=/data/apps/DjangoAdmin_Django_EleVue
|
||||
directory=/data/apps/DjangoAdmin_Django_NaiveVue
|
||||
; 自动启动
|
||||
autostart=true
|
||||
; 异常退出后自动重启
|
||||
@@ -134,7 +134,7 @@ gunicorn application.wsgi:application \
|
||||
|
||||
Supervisor 内置日志轮转功能,通过以下配置控制:
|
||||
|
||||
```ini
|
||||
```bash
|
||||
; 单个日志文件最大 50MB
|
||||
stdout_logfile_maxbytes=50MB
|
||||
; 保留 10 个历史日志文件
|
||||
@@ -153,16 +153,16 @@ stdout_logfile_backups=10
|
||||
|
||||
如需同时管理多个进程(如应用 + Celery Worker):
|
||||
|
||||
```ini
|
||||
```bash
|
||||
[program:djangoadmin]
|
||||
command=/path/to/venv/bin/gunicorn application.wsgi:application --bind 127.0.0.1:8000 --workers 4
|
||||
directory=/data/apps/DjangoAdmin_Django_EleVue
|
||||
directory=/data/apps/DjangoAdmin_Django_NaiveVue
|
||||
autostart=true
|
||||
autorestart=true
|
||||
|
||||
[program:djangoadmin-celery]
|
||||
command=/path/to/venv/bin/celery -A application worker -l info
|
||||
directory=/data/apps/DjangoAdmin_Django_EleVue
|
||||
directory=/data/apps/DjangoAdmin_Django_NaiveVue
|
||||
autostart=true
|
||||
autorestart=true
|
||||
numprocs=2
|
||||
|
||||
@@ -170,8 +170,8 @@ pip show Pillow
|
||||
|
||||
```bash
|
||||
# 1. 检查上传目录权限
|
||||
ls -la /data/apps/DjangoAdmin_Django_EleVue/public/uploads/
|
||||
chmod 755 /data/apps/DjangoAdmin_Django_EleVue/public/uploads/
|
||||
ls -la /data/apps/DjangoAdmin_Django_NaiveVue/public/uploads/
|
||||
chmod 755 /data/apps/DjangoAdmin_Django_NaiveVue/public/uploads/
|
||||
|
||||
# 2. 检查磁盘空间
|
||||
df -h
|
||||
|
||||
@@ -18,15 +18,15 @@
|
||||
```bash
|
||||
# 1. 数据库全量备份
|
||||
mysqldump -h 127.0.0.1 -u root -p --single-transaction \
|
||||
djangoadmin.django.elevue | gzip > backup_$(date +%Y%m%d_%H%M%S).sql.gz
|
||||
djangoadmin.django.naivevue | gzip > backup_$(date +%Y%m%d_%H%M%S).sql.gz
|
||||
|
||||
# 2. 上传文件备份
|
||||
tar -czf uploads_$(date +%Y%m%d).tar.gz /data/apps/DjangoAdmin_Django_EleVue/public/uploads/
|
||||
tar -czf uploads_$(date +%Y%m%d).tar.gz /data/apps/DjangoAdmin_Django_NaiveVue/public/uploads/
|
||||
|
||||
# 3. 应用目录备份(含 .env 和配置)
|
||||
tar -czf app_$(date +%Y%m%d).tar.gz \
|
||||
--exclude='uploads' --exclude='__pycache__' --exclude='.git' \
|
||||
/data/apps/DjangoAdmin_Django_EleVue/
|
||||
/data/apps/DjangoAdmin_Django_NaiveVue/
|
||||
```
|
||||
|
||||
### 查看变更日志
|
||||
@@ -54,7 +54,7 @@ git diff --stat HEAD~10
|
||||
### 步骤一:拉取代码
|
||||
|
||||
```bash
|
||||
cd /data/apps/DjangoAdmin_Django_EleVue
|
||||
cd /data/apps/DjangoAdmin_Django_NaiveVue
|
||||
|
||||
# 拉取最新代码
|
||||
git fetch origin
|
||||
@@ -174,7 +174,7 @@ cd /data/apps/
|
||||
tar -xzf app_20260905.tar.gz
|
||||
|
||||
# 3. 恢复数据库
|
||||
gunzip < backup_20260905.sql.gz | mysql -u root -p djangoadmin.django.elevue
|
||||
gunzip < backup_20260905.sql.gz | mysql -u root -p djangoadmin.django.naivevue
|
||||
|
||||
# 4. 恢复上传文件
|
||||
tar -xzf uploads_20260905.tar.gz -C /
|
||||
|
||||
Reference in New Issue
Block a user