Halo 2.0 博客系统部署指南

清夏晚风

更新日期:2025年3月15日

官方文档更新:Halo 2.x Documentation
问题排查工具:docker compose logs -f halo 查看实时日志

核心特性更新

  • 全新主题引擎:支持React/Vue等现代前端框架
  • 多数据库支持:MySQL 5.7+/MariaDB 10.5+/PostgreSQL 12+
  • 性能提升:相比1.x版本,API响应速度提升300%
  • 安全增强:默认启用CSRF防护、CORS策略

Docker Compose部署方案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
version: '3.8'

services:
halo:
image: halohub/halo:2.12
container_name: halo
restart: unless-stopped
volumes:
- ./halo:/root/.halo2
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://halo-db:3306/halo?useUnicode=true&characterEncoding=utf8&useSSL=false
- SPRING_DATASOURCE_USERNAME=halo
- SPRING_DATASOURCE_PASSWORD=your_db_password
- HALO_EXTERNAL_URL=https://blog.example.com
- HALO_SECURITY_INITIALIZER_SUPERADMINUSERNAME=admin
- HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD=your_admin_password
networks:
- halo-network
depends_on:
- halo-db

halo-db:
image: mysql:8.0
container_name: halo-db
restart: unless-stopped
volumes:
- ./mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=root_password
- MYSQL_DATABASE=halo
- MYSQL_USER=halo
- MYSQL_PASSWORD=your_db_password
command:
- --default-authentication-plugin=mysql_native_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
networks:
- halo-network

networks:
halo-network:
driver: bridge

volumes:
halo:
mysql:

关键配置说明

持久化存储

  1. ./halo 目录映射容器内配置和附件
  2. ./mysql 目录持久化数据库数据

安全建议

  1. 首次启动后立即修改管理员密码
  2. 启用HTTPS:
    1
    2
    # 自动申请证书
    docker exec halo java -jar /app/halo.jar --halo.security.ssl.enabled=true --halo.security.ssl.self-signed=true

备份与恢复

1
2
3
4
5
6
7
8
# 数据库备份
docker exec halo-db mysqldump -u halo -p your_db_password halo > halo_backup_$(date +%F).sql

# 全量备份
tar -czvf halo_backup_$(date +%F).tar.gz ./halo ./mysql

# 恢复数据库
docker exec -i halo-db mysql -u halo -p your_db_password halo < halo_backup.sql

性能优化

JVM参数调整

1
2
# 在halo服务环境变量中添加
- JAVA_OPTS=-Xmx1024m -Xms512m -XX:MaxRAMPercentage=75%

缓存配置

1
2
3
4
environment:
- SPRING_REDIS_HOST=redis-host
- SPRING_REDIS_PORT=6379
- SPRING_REDIS_PASSWORD=redis_password

插件管理

常用插件列表:

  • 百度SEO(halo-plugin-baidu-seo)
  • 微信登录(halo-plugin-wechat-login)
  • 阿里云OSS存储(halo-plugin-oss)

安装命令:

1
docker exec halo java -jar /app/halo.jar --plugin.install=https://halo.run/plugins/plugin-seo-1.0.0.jar

反向代理配置(Nginx)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
server {
listen 80;
server_name blog.example.com;
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl;
server_name blog.example.com;

ssl_certificate /etc/letsencrypt/live/blog.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/blog.example.com/privkey.pem;

location / {
proxy_pass http://halo:8090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

版本升级

1
2
3
4
5
6
7
8
9
10
11
# 1. 停止旧容器
docker compose down

# 2. 备份数据
tar -czvf halo_backup_before_upgrade.tar.gz ./halo ./mysql

# 3. 更新镜像版本
sed -i 's/halohub\/halo:2.12/halohub\/halo:2.13/g' docker-compose.yml

# 4. 重新启动
docker compose up -d
  • Title: Halo 2.0 博客系统部署指南
  • Author: 清夏晚风
  • Created at : 2026-01-13 16:48:23
  • Updated at : 2026-01-13 16:48:23
  • Link: https://blog.kimikkorow.eu.org/博客系统相关/Halo2/Halo 2.0 博客系统部署指南/
  • License: This work is licensed under CC BY-NC-SA 4.0.