【Docker项目】之–Halo一个小巧精美的个人博客
#手册 #教程 #工具 #Docker #Docker-compose #Linux #Ubuntu
halo是基于java开发的一款现代化的开源博客/CMS系统。
官网:https://halo.run
官方文档:https://docs.halo.run
官方论坛:https://bbs.halo.run
主题:https://halo.run/themes.html
1. 安装准备
系统:ubuntu 20.4
工具:docker和docker-compose
2. 搭建
2.1. 创建数据存放位置
mkdir -p /data/docker_data/halo ## 创建文件夹
cd /data/docker_data/halo ## 进入文件夹
vim docker-compose.yml ## 创建docker-compose
2.2. 编辑docker-compose.yml
2.2.1. 仅创建 Halo 实例
使用默认的 H2 Database
数据库,适合服务器性能不佳访问量不大时使用。
version: "3"
services:
halo:
image: halohub/halo:1.6.0
container_name: halo
restart: on-failure:3
volumes:
- /data/docker_data/halo:/root/.halo
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "8090:8090" # 访问端口
environment:
- SERVER_PORT=8090
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.h2.Driver
- SPRING_DATASOURCE_URL=jdbc:h2:file:~/.halo/db/halo # 数据保存位置,默认
- SPRING_DATASOURCE_USERNAME=admin
- SPRING_DATASOURCE_PASSWORD=o#DwN&JSa56
- HALO_ADMIN_PATH=admin # 管理页面访问地址https://your-domain/{admin-path}
- HALO_CACHE=memory # 缓存方式memory(内存)/level(本地)/redis(需配置redis)
networks:
- mynet
networks: # 连接外部网络,方便内部代理
mynet:
external: true
2.2.2. 创建 Halo + MySQL 的实例
安装文档中推荐的image: mysql:8.0.27
安装后无法启动,这里我们换成image: mariadb:latest
,兼容MySQL,包括API和命令行。
version: "3"
services:
halo_server:
image: halohub/halo:1.6.0
container_name: halo_server
restart: on-failure:3
depends_on:
- halo_mysql
volumes:
- /data/docker_data/halo:/root/.halo
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "8090:8090"
environment:
- SERVER_PORT=8090
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.cj.jdbc.Driver
- SPRING_DATASOURCE_URL=jdbc:mysql://halo_mysql:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=o#DwN&JSa56
- HALO_ADMIN_PATH=admin
- HALO_CACHE=memory
networks:
- mynet
halo_mysql:
image: mariadb:latest
container_name: halo_mysql
restart: on-failure:3
command: --default_authentication_plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
volumes:
- /etc/localtime:/etc/localtime:ro
- /data/docker_data/halo/mysql:/var/lib/mysql
- /data/docker_data/halo/mysql/mysqlBackup:/data/mysqlBackup
ports:
- "3306" # 外部不需要访问,可以关闭映射3306:3306
environment:
# 请修改此密码,并对应修改上方 Halo 服务的 SPRING_DATASOURCE_PASSWORD 变量值
- MYSQL_ROOT_PASSWORD=o#DwN&JSa56
- MYSQL_DATABASE=halodb
networks:
- mynet
networks: # 连接外部网络,方便内部代理
mynet:
external: true
2.2.3. 创建 Halo + MySQL + Redis 的实例
version: "3"
services:
halo_server:
image: halohub/halo:1.6.0
container_name: halo_server
restart: on-failure:3
depends_on:
- halo_mysql
- halo_redis
networks:
- mynet
volumes:
- /data/docker_data/halo:/root/.halo
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "8090:8090"
environment:
- SERVER_PORT=8090
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.cj.jdbc.Driver
- SPRING_DATASOURCE_URL=jdbc:mysql://halo_mysql:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=o#DwN&JSa56
- HALO_ADMIN_PATH=admin
- HALO_CACHE=redis
- SPRING_REDIS_PORT=6379
- SPRING_REDIS_DATABASE=0
- SPRING_REDIS_HOST=halo_redis
- SPRING_REDIS_PASSWORD=dm5fD%rvPtq
halo_mysql:
image: mariadb:latest
container_name: halo_mysql
restart: on-failure:3
command: --default_authentication_plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
networks:
- mynet
volumes:
- /etc/localtime:/etc/localtime:ro
- /data/docker_data/halo/mysql:/var/lib/mysql
- /data/docker_data/halo/mysql/mysqlBackup:/data/mysqlBackup
ports:
- "3306" # 外部不需要访问,可以关闭映射3306:3306
environment:
# 请修改此密码,并对应修改上方 Halo 服务的 SPRING_DATASOURCE_PASSWORD 变量值
- MYSQL_ROOT_PASSWORD=o#DwN&JSa56
- MYSQL_DATABASE=halodb
networks:
- mynet
halo_redis:
image: redis
container_name: halo_redis
restart: on-failure:3
volumes:
- /data/docker_data/halo/redis/data:/data
- /data/docker_data/halo/redis/logs:/logs
# 请修改此密码,并对应修改上方 Halo 服务的 SPRING_REDIS_PASSWORD 变量值
command: redis-server --requirepass dm5fD%rvPtq
ports:
- "6379" # 外部不需要访问,可以关闭映射6379:6379
networks:
- mynet
networks: # 连接外部网络,方便内部代理
mynet:
external: true
Halo 2.0 的首个 Alpha 测试版本已经发布,尤其是多用户的支持。也推荐大家在服务器性能可以的情况下,采用后面两种搭建。
Halo 2.0 主要特性
- 支持多用户与权限。
- 支持插件机制,将在后续的迭代过程中逐步完善文档。
- 提供 Extension API,以便插件更方便地持久化数据。
- 重新设计的主题机制,提供更加灵活地设置表单配置。
- 重新设计的附件系统,引入分组和存储策略的概念,可通过插件支持多种云存储的策略。
- 重新设计的评论系统,支持登录访问。
- 重新设计的后台管理系统。
- 默认提供富文本编辑器。
- 支持 PostgreSQL 数据库。
下面我们使用 Halo + MySQL + Redis 的方式演示一下。
2.3. 新建docker网络
已经创建的略过。
# 创建一个公用的docker网络
docker network create mynet
# 查看docker网络情况
docker network ls
# 显示如下信息
NETWORK ID NAME DRIVER SCOPE
0134ad30defd bridge bridge local
29474e75ede0 host host local
33bc01a2e0d0 mynet bridge local # 刚刚新建的网络
2.4. 拉去镜像开始安装
docker-compose up -d
3. 使用及展示
浏览器输入:http://ip:8090 第一次登录进入设置界面。
设置完后会自动跳到后台管理登录界面。如果没有可以登录:http://ip:8090/admin (按照自己修改的)
支持markdown
语法编辑文章
看一下博客:http://ip:8090
更换主题,官方主题仓库:https://halo.run/themes.html
推荐Joe 2.0
本地上传安装:https://halo.run/archives/joe20.html
登录GitHub,找到支持的版本,下载.zip文件上传。
启用后,打开博客看看。
后台的主题的设置页面
备份功能。
4. 最后
由于是国内人员开发的博客系统,很多问题都可以查阅官方文档,或者直接去官方论坛寻求帮助,希望大家多多支持他们。
评论区