博客部署

Halo2 常用方法

把高频操作整理成可复制命令,减少每次维护时重新回忆。

进入目录

所有命令默认在部署目录中执行:

cd ~/halo

查看状态

查看容器:

docker compose ps

查看资源占用:

docker stats

查看最近日志:

docker compose logs --tail=120 halo
docker compose logs --tail=120 halodb

持续跟踪 Halo 日志:

docker compose logs -f halo

重启服务

只重启 Halo:

docker compose restart halo

重启整套服务:

docker compose restart

停止服务:

docker compose down

重新启动:

docker compose up -d

数据备份

备份数据库前先创建备份目录:

mkdir -p backups

如果使用 MySQL,可以导出 SQL:

docker compose exec halodb sh -c 'mysqldump -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" halo' \
  > backups/halo_mysql_$(date +%Y%m%d_%H%M%S).sql

如果使用 PostgreSQL,可以导出 dump:

docker compose exec halodb sh -c 'pg_dump -U "$POSTGRES_USER" "$POSTGRES_DB"' \
  > backups/halo_postgres_$(date +%Y%m%d_%H%M%S).sql

压缩备份:

gzip backups/halo_*_*.sql

备份 Halo 应用数据目录:

tar -czf backups/halo_data_$(date +%Y%m%d_%H%M%S).tar.gz halo2

恢复数据

恢复前先停止 Halo,避免应用写入:

docker compose stop halo

导入 SQL:

docker compose exec -T halodb sh -c 'mysql -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" halo' \
  < backups/halo_mysql_YYYYMMDD_HHMMSS.sql

恢复后启动 Halo:

docker compose start halo

再检查健康状态:

curl -I --max-time 10 http://127.0.0.1:8090/

更新镜像

更新前先备份数据库和 Halo 数据目录。确认备份完成后:

docker compose pull
docker compose up -d

更新后查看日志和健康检查:

docker compose logs --tail=120 halo
curl -I --max-time 10 http://127.0.0.1:8090/

公开入口检查

如果配置了域名或反向代理,检查公开入口:

curl -I --max-time 10 https://blog.example.com/

确认状态码、证书和页面内容都符合预期。

发布后巡检

建议每次维护完成后按顺序执行:

docker compose ps
curl -I --max-time 10 http://127.0.0.1:8090/
curl -I --max-time 10 https://blog.example.com/

如果公开域名异常,但本机端口正常,继续看反向代理、DNS、证书或 CDN。