侧边栏壁纸
博主头像
v林羽博主等级

行动起来,活在当下

  • 累计撰写 172 篇文章
  • 累计创建 34 个标签
  • 累计收到 21 条评论

目 录CONTENT

文章目录

【Docker项目】之--Halo一个小巧精美的个人博客

v林羽
2022-11-20 / 1 评论 / 1 点赞 / 1083 阅读 / 9789 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2023-11-01,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

【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. 最后

由于是国内人员开发的博客系统,很多问题都可以查阅官方文档,或者直接去官方论坛寻求帮助,希望大家多多支持他们。

1

评论区