ops-commands.md 4.8 KB

运维常用命令

服务地址:http://<内网IP>:5019

1. 服务管理

# 启动所有服务
docker compose up -d

# 停止所有服务
docker compose down

# 重启所有服务
docker compose restart

# 重启单个服务
docker compose restart app
docker compose restart queue
docker compose restart pdf-worker

# 查看运行状态
docker compose ps

2. 日志查看

# 查看所有日志(实时)
docker compose logs -f

# 查看指定服务日志
docker compose logs -f app          # Web 服务
docker compose logs -f queue        # 队列服务
docker compose logs -f pdf-worker   # PDF 生成服务

# 查看最近 100 行日志
docker compose logs --tail=100 app

# 查看 Laravel 日志
tail -f storage/logs/laravel.log

3. 代码更新部署

# 1. 拉取最新代码
git pull

# 2. 重新构建并启动
docker compose down
docker compose build
docker compose up -d

# 或一键操作
docker compose up -d --build

4. 缓存清理

# 进入容器清理 Laravel 缓存
docker exec math_cms_app php artisan optimize:clear

# 重启队列(代码更新后必须)
docker compose restart queue pdf-worker

# 清理临时文件
rm -rf storage/app/temp/*

5. 问题排查

# 查看容器资源使用
docker stats

# 进入容器调试
docker exec -it math_cms_app sh

# 测试数据库连接
docker exec math_cms_app php artisan db:show

# 测试 Redis 连接
docker exec math_cms_app php artisan tinker --execute="Redis::ping()"

# 测试 Chrome(PDF 生成)
docker exec math_cms_app chromium-browser --version

# 查看队列状态
docker exec math_cms_app php artisan queue:monitor

6. 紧急处理

# CPU 满载 - 停止 PDF 服务
docker compose stop pdf-worker

# 强制杀死所有 Chrome 进程
docker exec math_cms_pdf pkill -9 chromium

# 清理临时文件
docker exec math_cms_pdf rm -rf /tmp/chrome-profile-*
docker exec math_cms_pdf rm -rf /tmp/exam_pdf_*

# 重启 PDF 服务
docker compose restart pdf-worker

7. 健康检查

# 检查 Web 服务
curl http://localhost:5019/health

# 检查容器状态
docker compose ps

# 检查容器健康状态
docker inspect --format='{{.State.Health.Status}}' math_cms_app

8. 备份与恢复

# 备份日志
cp -r storage/logs storage/logs_backup_$(date +%Y%m%d)

# 备份上传文件
cp -r storage/app/public storage/app/public_backup_$(date +%Y%m%d)

9. 定时任务(加入 crontab)

# 清理临时文件(每小时)
0 * * * * cd /path/to/math_cms && rm -rf storage/app/temp/* 2>/dev/null

# 清理旧日志(每天凌晨 3 点)
0 3 * * * find /path/to/math_cms/storage/logs -name "*.log" -mtime +7 -delete

10. 容器资源限制

# 查看资源限制
docker inspect math_cms_pdf --format='{{.HostConfig.Memory}}'

# 临时调整资源限制
docker update --cpus=1 --memory=1g math_cms_pdf

服务架构

┌─────────────────────────────────────────────────┐
│              Docker Compose                     │
│  ┌─────────────┐ ┌───────────┐ ┌─────────────┐  │
│  │ math_cms_app│ │math_cms_  │ │math_cms_pdf │  │
│  │   (Web)     │ │  queue    │ │(PDF Worker) │  │
│  │   :5019     │ │           │ │ CPU:2 Mem:2G│  │
│  └─────────────┘ └───────────┘ └─────────────┘  │
└─────────────────────────────────────────────────┘
         │               │               │
         └───────────────┴───────────────┘
                         │
          ┌──────────────┴──────────────┐
          ▼                             ▼
    ┌──────────┐                  ┌──────────┐
    │  Redis   │                  │  MySQL   │
    │ (阿里云)  │                  │ (阿里云)  │
    └──────────┘                  └──────────┘

联系方式

如有问题请联系开发团队。

常用日志查看

docker exec math_cms_app grep -A 10 "exam-answer-analysis\|ERROR" storage/logs/laravel.log | tail -50

tail -200 storage/logs/laravel.log

  # 实时监控(自动刷新)
  docker exec math_cms_app tail -f storage/logs/laravel.log

  # 组合:先显示最近 200 行,然后实时监控
  docker exec math_cms_app tail -200f storage/logs/laravel.log