[Halo博客] 在群晖7.21中搭建Halo2.x版本博客

在群晖7.21中搭建Halo2.x版本博客

前言

最近沉迷于Nas, 我用闲置的笔记本安装上黑群晖7.21版本,简直打开新世界。

群晖 相对于Linux的其他系统,群晖其丝滑的可视化交互界面,及其较为完善的软件插件生态,简直是小白服务器开发学习的福音。我平时在群晖上学习及测试服务器相关项目,不要太爽,哈哈!
预想在一系列文章中记录分享搭建群晖,及使用群晖搭建项目的简单教程。

Halo 是一款现代化的个人独立博客系统,
官网地址:Halo

1.x版本有着许多好看的博客模板,及博客后台管理界面,而且升级到2.x版本后,加入了插件及多用户的功能,支持搭建除博客外的其他网页系统。
其上手搭建相对简单,对于小白或者非前端开发者搭建博客来说,及其友好!

在尝试搭建Halo博客时,查阅许多资料,也遇到一些问题,本文分享搭建过程及细节。

搭建方法

群晖中搭建halo 有两途径方法

  1. Container Manager(原Docker) 搭建
    直接在Docker 的注册表中搜索halo,下载,运行就好了,简单但仅支持halo1.x版本的搭建。

  2. docker-compose 使用.yaml文件搭建
    使用compose.yaml文件,写好配置,ssh终端或者新建项目的方式搭建。
    也挺方便的,而且支持halo2.x版本搭建,能够简单实现替换mysql数据库系统为默认系统。

我在本文记录第二种方式搭建!
官方搭建教程

搭建步骤

  1. 提前准备
    在共享文件夹的docker文件夹中新建halo文件夹,
    放入我们提前写好的docker-compose.yaml文件,并新建空文件夹:
    [Halo博客] 在群晖7.21中搭建Halo2.x版本博客_第1张图片
    compose.yaml文件内容:(也可以官网文档获取)
version: "3"

services:
  halo:
    image: halohub/halo:2.11
    container_name: halo-blog #容器名 , 可自定义
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_default:
    volumes:
      - ./halo2:/root/.halo2 #容器地址映射
    ports:
      - "8090:8090"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s
    command:
      - --spring.r2dbc.url=r2dbc:pool:mysql://halo-mysql:3306/halo #对应mysql 容器名及访问端口
      - --spring.r2dbc.username=root
      # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=123456 
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/

  halodb:
    image: mysql:8.1.0
    container_name: halo-mysql
    restart: on-failure:3
    networks:
      halo_default:
    command: 
      - --default-authentication-plugin=caching_sha2_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_general_ci
      - --explicit_defaults_for_timestamp=true
    volumes:
      - ./mysql:/var/lib/mysql
      - ./mysqlBackup:/data/mysqlBackup
    ports:
      - "3306:3306" #mysql 端口映射,可自定义。比如改为"3307:3306" ,则使用3307端口访问连接mysql
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
      interval: 3s
      retries: 5
      start_period: 30s
    environment:
      # 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_DATABASE=halo

networks:
  halo_default:
  1. docker 中新建项目并执行
    我们打开docker程序,在项目一栏中新建新的项目
    项目命名自定义,文件路径我们就选择刚刚创建的halo文件夹
    [Halo博客] 在群晖7.21中搭建Halo2.x版本博客_第2张图片
    设置项目路径后,会提示你使用存在的.yaml配置文件,我们确认就好了
    [Halo博客] 在群晖7.21中搭建Halo2.x版本博客_第3张图片
    接着一路点击 ‘下一步就行‘
    [Halo博客] 在群晖7.21中搭建Halo2.x版本博客_第4张图片
    在弹出的终端界面看到 Exit Code: 0 命令,则代表着,Halo 搭建并启动成功了!
    [Halo博客] 在群晖7.21中搭建Halo2.x版本博客_第5张图片

如果提示启动失败,也不要慌
在容器中找到启动失败的halo或者mysql 容器,查看其日志
可以看到失败的原因,针对性解决就好!
[Halo博客] 在群晖7.21中搭建Halo2.x版本博客_第6张图片
[Halo博客] 在群晖7.21中搭建Halo2.x版本博客_第7张图片

  1. 进入Halo
    halo搭建成功后,我们在浏览器 使用 http://ip地址:端口/ 访问初始化界面
    [Halo博客] 在群晖7.21中搭建Halo2.x版本博客_第8张图片
    接着登录后端控制台
    完善博客配置信息就好啦
    [Halo博客] 在群晖7.21中搭建Halo2.x版本博客_第9张图片
    访问博客
    再次使用 http://ip地址:端口/ 访问博客界面
    完美!
    我搭建的博客: Tome Blog
    安利下我配置的主题:Halo Theme Xue

【扩展】实现Mqsql 与Halo 分开搭建

其实就是把 上述compose.yaml文件拆分开,分成两个项目搭建。步骤是一样的。【先部署mysql,再部署halo】

  1. 文件路径及文件配置
    [Halo博客] 在群晖7.21中搭建Halo2.x版本博客_第10张图片
    [Halo博客] 在群晖7.21中搭建Halo2.x版本博客_第11张图片
    mysql的 compose.yaml内容:
version: "3"

services:
  mysql:
    image: mysql:8.1.0
    container_name: mysql-test #容器名称,自定义更改
    restart: on-failure:3 
    networks:
      mysql_default:
    command: 
      - --default-authentication-plugin=caching_sha2_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_general_ci
      - --explicit_defaults_for_timestamp=true
    volumes:
      - ./mysql:/var/lib/mysql
      - ./mysqlBackup:/data/mysqlBackup 
    ports:
      - "3306:3306" #端口,自定义更改,比如3307:3306. 后期就可以在sql工具中使用3307端口访问了
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
      interval: 3s
      retries: 5
      start_period: 30s
    environment:
      # 请修改此密码,对应root 用户的登录密码
      - MYSQL_ROOT_PASSWORD=123456 #自定义,建议更改,登录需要用到
      - MYSQL_DATABASE=main #建的数据库名,自定义更改

networks:
  mysql_default:

halo的compose.yaml内容:

version: "3"

services:
  halo:
    image: halohub/halo:2.11
    container_name: halo-blog
    restart: on-failure:3
    networks:
      halo_default:
    volumes:
      - ./halo2.x:/root/.halo2
    ports:
      - "8090:8090" 
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s
    command:
      - --spring.r2dbc.url=r2dbc:pool:mysql://192.168.1.26:3306/halo #注意更改为mysql的访问ip:端口,我这给的是192.168.1.26:3306示例
      - --spring.r2dbc.username=root
      # MySQL 的密码,需要与mysql 配置的 MYSQL_ROOT_PASSWORD 的密码值一致。
      - --spring.r2dbc.password=123456
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/
networks:
  halo_default:
  1. mysql 搭建
    [Halo博客] 在群晖7.21中搭建Halo2.x版本博客_第12张图片
    新建mysql项目,设置路径(dacker/halo/mysql), 一路确认下一步,构建搞定
  2. halo 搭建
    [Halo博客] 在群晖7.21中搭建Halo2.x版本博客_第13张图片
    新建halo项目,设置路径(dacker/halo/halo), 一路确认下一步,构建搞定

遇到问题及解决方法

参考这个文章的问题及解决办法:mqsql搭建步骤

需要具体问题具体分析
查看容器日志,然后对应找到解决办法解决
无非就是:端口被占用了、文件存在旧文件需要先删除、halo访问mysql失败(ip地址/端口是否正确!)等小问题!!!

教程参考链接

群晖DSM7.2用Container Manager(原Docker) 安装halo Blog详细过程
用Halo在自己服务器搭建一个个人博客
使用 Docker Compose 部署Halo

完结!!!

你可能感兴趣的:(个人服务器,mysql)