使用Halo搭建个人博客(不得不说,Halo后台的UI设计得真的太NICE了!)

✌ 作者名字:高峰君主
📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
💬 人生格言:没有我不会的语言,没有你过不去的坎儿。💬
🔥 如果感觉博主的文章还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦

🔎如果对文章内容有疑问,请在评论区留言,24小时内答复

目录

写在前面

环境要求​

硬件配置​

CPU​

内存​

磁盘​

网络​

软件环境​

Docker(可选)​

JRE(可选)​

数据库​

Web 服务器(可选)​

Wget(可选)​

VIM(可选)​

浏览器支持​

名词解释​

~(符号)​

镜像​

工作目录​

主题​

插件​

使用 Docker Compose 部署

环境搭建

创建容器组

更新容器组

反向代理

Nginx的

球童 2

特拉菲克

初始化

第一篇文章

登录管理端

新建文章

查看文章


写在前面

环境要求

这里将讲述运行 Halo 所要求的一些软硬件的配置,我建议你在运行或者部署之前先浏览一遍此页面。

硬件配置

如果你要使用服务器进行部署 Halo,需要注意的是,Halo 目前不支持市面上的云虚拟主机,请使用云服务器或者 VPS。

CPU

无特别要求。目前Halo的 Docker 镜像 也已经支持多平台。

内存

为了获得更好的体验,我建议至少配置 1G 的 RAM。

磁盘

无特别要求,理论上如果不大量在服务器上传附件,Halo 对磁盘的容量要求并不是很高。但我推荐最好使用 SSD 硬盘的服务器,能更快的运行 Halo。

网络

无特别要求,Halo 目前可以在无公网环境下使用,但部分主题由于使用了第三方资源,可能需要公网环境。

软件环境

Halo 理论上可以运行在任何支持 Docker 及 Java 的平台。

Docker(可选)

我主要推荐使用 Docker 运行 Halo,这可以避免一些环境配置相关的问题

JRE(可选)

如果使用 Docker 镜像部署,那么无需在服务器上安装 JRE。但目前Halo也提供了 jar 文件部署的方式,但本文章不会介绍此方法,如有需要,文档可参考:

当前版本(2.0)需要 JRE 17 的版本,推荐使用 OpenJDK 17。

数据库

Halo 目前支持以下数据库:

  • PostgreSQL
  • MySQL
  • MariaDB
  • H2

其中,H2 不需要单独运行,其他数据库需要单独安装并配置。一般情况下,推荐使用 Docker Compose 部署将 Halo 和数据库容器编排在一起。

不推荐在生产环境使用默认的 H2 数据库,这可能因为操作不当导致数据文件损坏。如果因为某些原因(如内存不足以运行独立数据库)必须要使用,建议按时备份数据

Web 服务器(可选)

如果你部署在生产环境,那么你很可能需要进行域名绑定,这时候我们推荐使用诸如 NginxCaddy 之类的 Web 服务器进行反向代理。但需要注意的是,目前 Halo 不支持代理到子目录(如:halo.run/blog)。

Wget(可选)

后续的文档中,我会使用 wget 为例,用于下载所需要的文件,所以请确保服务器已经安装好了这个软件包。当然,下载文件不限制工具,如果你对其他工具熟悉,可以忽略。

VIM(可选)

后续的文档中,我会使用 vim 为例,用于修改一些必要的配置文件,所以同样请确保服务器已经安装了这个软件包。当前,修改文档也不限制工具,如果你对其他编辑软件熟悉,也可以忽略。

浏览器支持

  1. 用户前台:视主题所支持的情况而定。
  2. 管理后台(Console 和个人中心):支持目前常见的现代浏览器,具体视 Vue 框架的支持情况而定。

名词解释

这里将列出后续文档中一些和 Halo 相关的名词含义。

~(符号)

代表当前系统下的 用户目录

镜像

指 Halo 构建所产生的 Docker 镜像。用户通过该镜像启动 Halo 应用。

工作目录

指 Halo 所依赖的工作目录,在 Halo 运行的时候会在系统当前用户目录下产生一个 .halo2 的文件夹,绝对路径为 ~/.halo2。由于这个工作目录是固定的,所以上面所说的 运行包不限制所存放的位置,里面通常包含下列目录或文件:

  • db:存放 H2 Database 的物理文件,如果你使用其他数据库,那么不会存在这个目录。
  • themes:里面包含用户所安装的主题。
  • plugins:里面包含用户所安装的插件。
  • attachments:附件目录。
  • logs:运行日志目录。
  • application.yaml:配置文件。

主题

包含了各种站点页面模板的资源包。用户访问 Halo 站点浏览到的内容及样式,由 Halo 管理端所配置使用的主题所决定。

相关使用文档:主题管理相关功能说明

插件

用于扩展 Halo 功能的软件包。插件独立于 Halo 核心应用,可以单独安装、升级、卸载。

相关使用文档:插件管理相关功能说明

使用 Docker Compose 部署

环境搭建

我推荐按照 Docker 官方文档安装 Docker 和 Docker Compose,因为部分 Linux 发行版软件仓库中的 Docker 版本可能过旧。

创建容器组

目前 Halo 官方维护的 Docker 镜像仓库,可以根据自己的需求选择合适的镜像源:

目前 Halo 2 并未更新 Docker 的 latest 标签镜像,主要因为 Halo 2 不兼容 1.x 版本,防止使用者误操作。我们推荐使用固定版本的标签,比如2.17或者 2.17.0。

  • registry.fit2cloud.com/halo/halo:2:表示最新的 2.x 版本,即每次发布新版本都会更新此镜像。
  • registry.fit2cloud.com/halo/halo:2.17:表示最新的 2.17.x 版本,即每次发布 patch 版本都会同时更新此镜像。
  • registry.fit2cloud.com/halo/halo:2.17.0:表示一个具体的版本。

后续文档以 为例。registry.fit2cloud.com/halo/halo:2.17

  1. 在系统任意位置创建一个文件夹,此文档以 为例。~/halo

    mkdir ~/halo && cd ~/halo
    注意:后续操作中,Halo 产生的所有数据都会保存在这个目录,请妥善保存。
  2. 创建docker-compose.yaml

    此文档提供两种场景的 Docker Compose 配置文件,请根据你的需要选择一种

    需要注意的是,此文档为了更加方便的管理配置,所有与 Halo 相关的配置都使用 Docker 容器启动参数代替,所以无需创建 application.yaml 文件。

    1. 创建 Halo + PostgreSQL 的实例:

      ~/halo/docker-compose.yaml
      version: "3"
      
      services:
        halo:
          image: registry.fit2cloud.com/halo/halo:2.17
          restart: on-failure:3
          depends_on:
            halodb:
              condition: service_healthy
          networks:
            halo_network:
          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:postgresql://halodb/halo
            - --spring.r2dbc.username=halo
            # PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
            - --spring.r2dbc.password=openpostgresql
            - --spring.sql.init.platform=postgresql
            # 外部访问地址,请根据实际需要修改
            - --halo.external-url=http://localhost:8090/
        halodb:
          image: postgres:15.4
          restart: on-failure:3
          networks:
            halo_network:
          volumes:
            - ./db:/var/lib/postgresql/data
          healthcheck:
            test: [ "CMD", "pg_isready" ]
            interval: 10s
            timeout: 5s
            retries: 5
          environment:
            - POSTGRES_PASSWORD=openpostgresql
            - POSTGRES_USER=halo
            - POSTGRES_DB=halo
            - PGUSER=halo
      
      networks:
        halo_network:
      此示例的 PostgreSQL 数据库容器默认没有设置端口映射,如果需要在容器外部访问数据库,可以自行在 服务中添加端口映射,PostgreSQL 的端口为 。 halodb  5432
    2. 创建 Halo + MySQL 的实例:

      ~/halo/docker-compose.yaml
      version: "3"
      
      services:
        halo:
          image: registry.fit2cloud.com/halo/halo:2.17
          restart: on-failure:3
          depends_on:
            halodb:
              condition: service_healthy
          networks:
            halo_network:
          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://halodb:3306/halo
            - --spring.r2dbc.username=root
            # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
            - --spring.r2dbc.password=o#DwN&JSa56
            - --spring.sql.init.platform=mysql
            # 外部访问地址,请根据实际需要修改
            - --halo.external-url=http://localhost:8090/
      
        halodb:
          image: mysql:8.1.0
          restart: on-failure:3
          networks:
            halo_network:
          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
          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=o#DwN&JSa56
            - MYSQL_DATABASE=halo
      
      networks:
        halo_network:

      此示例的 MySQL 数据库容器默认没有设置端口映射,如果需要在容器外部访问数据库,可以自行在 服务中添加端口映射,MySQL 的端口为 。halodb 3306

    3. 仅创建 Halo 实例(使用默认的 H2 数据库):

      不推荐在生产环境使用默认的 H2 数据库,这可能因为操作不当导致数据文件损坏。如果因为某些原因(如内存不足以运行独立数据库)必须要使用,建议按时备份数据

      ~/halo/docker-compose.yaml
      version: "3"
      
      services:
        halo:
          image: registry.fit2cloud.com/halo/halo:2.17
          restart: on-failure:3
          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:
            # 外部访问地址,请根据实际需要修改
            - --halo.external-url=http://localhost:8090/
    4. 仅创建 Halo 实例(使用已有外部数据库,MySQL 为例):

      ~/halo/docker-compose.yaml
      version: "3"
      
      services:
        halo:
          image: registry.fit2cloud.com/halo/halo:2.17
          restart: on-failure:3
          network_mode: "host"
          volumes:
            - ./halo2:/root/.halo2
          command:
            # 修改为自己已有的 MySQL 配置
            - --spring.r2dbc.url=r2dbc:pool:mysql://localhost:3306/halo
            - --spring.r2dbc.username=root
            - --spring.r2dbc.password=
            - --spring.sql.init.platform=mysql
            # 外部访问地址,请根据实际需要修改
            - --halo.external-url=http://localhost:8090/
            # 端口号 默认8090
            - --server.port=8090

    运行参数详解:

    参数名描述
    spring.r2dbc.url数据库连接地址,详细可查阅下方的数据库配置
    spring.r2dbc.username数据库用户名
    spring.r2dbc.password数据库密码
    spring.sql.init.platform数据库平台名称,支持 、、postgresqlmysqlh2
    halo.external-url外部访问链接,如果需要在公网访问,需要配置为实际访问地址

    数据库配置:

    链接方式链接地址格式spring.sql.init.platform
    PostgreSQL的r2dbc:pool:postgresql://{HOST}:{PORT}/{DATABASE}PostgreSQL的
    MySQL的r2dbc:pool:mysql://{HOST}:{PORT}/{DATABASE}MySQL的
    H2 数据库r2dbc:h2:file:///${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSEH2型
  3. 启动 Halo 服务

    docker-compose up -d

    实时查看日志:

    docker-compose logs -f
  4. 用浏览器访问 /console 即可进入 Halo 管理页面,首次启动会进入初始化页面。

    如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。如果通过 的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。 http://ip:端口号
    当然,方法还有很多种,但我只介绍这一种,因为用这种方法部署后面的麻烦会少些

更新容器组

  1. 备份数据,可以参考 备份与恢复 进行完整备份。

  2. 更新 Halo 服务

    修改 中配置的镜像版本。docker-compose.yaml

    services:
      halo:
        image: registry.fit2cloud.com/halo/halo:2.17
    docker-compose up -d

反向代理

你可以在下面的反向代理软件中任选一项,我假设你已经安装好了其中一项,并对其的基本操作有一定了解。如果你对它们没有任何了解,可以参考Halo更为详细的反向代理文档:

  1. 使用 Nginx Proxy Manager
  2. 使用 Traefik

Nginx的

upstream halo {
  server 127.0.0.1:8090;
}
server {
  listen 80;
  listen [::]:80;
  server_name www.yourdomain.com;
  client_max_body_size 1024m;
  location / {
    proxy_pass http://halo;
    proxy_set_header HOST $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

球童 2

www.yourdomain.com

encode gzip

reverse_proxy 127.0.0.1:8090

特拉菲克

更新 halo 容器组的配置

  1. networks中引入已存在的网络 (此网络需要 提前创建traefik
  2. services.halo.networks中添加网络traefik
  3. 修改外部地址为你的域名
  4. 声明路由规则、开启 TLS
version: "3.8"

networks:
  traefik:
    external: true
  halo:

services:
  halo:
    image: registry.fit2cloud.com/halo/halo:2.17
    restart: on-failure:3
    volumes:
      - ./halo2:/root/.halo2
    networks:
      - traefik
      - halo
    command:
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=https://yourdomain.com
    labels:
      traefik.enable: "true"
      traefik.docker.network: traefik
      traefik.http.routers.halo.rule: Host(`yourdomain.com`)
      traefik.http.routers.halo.tls: "true"
      traefik.http.routers.halo.tls.certresolver: myresolver
      traefik.http.services.halo.loadbalancer.server.port: 8090

初始化

通过之前的安装文档,你已经成功安装了 Halo,在首次访问网站的时候会自动跳转到初始化页面,你需要完成这个步骤才能正常使用 Halo。

设置

表单项说明:

  1. 站点名称:网站的名称,将会显示在浏览器标签页上。
  2. 邮箱:初始管理员的邮箱地址。
  3. 用户名:初始管理员的用户名。
  4. 密码:初始管理员的密码。
  5. 确认密码:重复输入密码以验证是否匹配。

输入完成之后点击初始化按钮即可完成初始化,初始化完成之后,将会跳转到登录页面,输入刚才设置的用户名和密码即可登录。

第一篇文章

登录管理端

浏览器访问 即可进入 Halo 管理端。/console

新建文章

Halo 安装完成后,默认初始化了一篇 文章,接下来我们将创建并发布一篇自己的文章。Hello Halo

  1. 在 Halo 管理端,点击仪表盘页面中的 快捷入口,即可进入到文章编辑页面。创建文章
  2. 在文章编辑器中,你可以尽情写下你想展现的内容。
  3. 当内容编辑完成后,点击右上角的 按钮,给文章设置一个合适的标题和别名,同时可以设置文章所属分类、标签及其他一些高级设置。发布
  4. 确认无误后,点击弹框下方的 按钮,我们的第一篇文章就成功发布了。发布
关于文章相关其他功能及文章各种设置项的说明,请参考《 用户指南-文章》章节

查看文章

文章发布成功后,就可以在主题端查看到我们刚刚创建的文章了。

浏览器访问域名进入站点首页,站点展示的内容及样式由当前启用的主题所决定。

接下来,选一款喜欢的主题,尽情体验 Halo 吧!

为了在Windows上安装ADB工具,你可以按照以下步骤进行操作: 1. 首先,下载ADB工具包并解压缩到你自定义的安装目录。你可以选择将其解压缩到任何你喜欢的位置。 2. 打开运行窗口,可以通过按下Win+R键来快速打开。在运行窗口中输入"sysdm.cpl"并按下回车键。 3. 在系统属性窗口中,选择"高级"选项卡,然后点击"环境变量"按钮。 4. 在环境变量窗口中,选择"系统变量"部分,并找到名为"Path"的变量。点击"编辑"按钮。 5. 在编辑环境变量窗口中,点击"新建"按钮,并将ADB工具的安装路径添加到新建的路径中。确保路径正确无误后,点击"确定"按钮。 6. 返回到桌面,打开命令提示符窗口。你可以通过按下Win+R键,然后输入"cmd"并按下回车键来快速打开命令提示符窗口。 7. 在命令提示符窗口中,输入"adb version"命令来验证ADB工具是否成功安装。如果显示版本信息,则表示安装成功。 这样,你就成功在Windows上安装了ADB工具。你可以使用ADB工具来执行各种操作,如枚举设备、进入/退出ADB终端、文件传输、运行命令、查看系统日志等。具体的操作方法可以参考ADB工具的官方文档或其他相关教程。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [windows环境安装adb驱动](https://blog.youkuaiyun.com/zx54633089/article/details/128533343)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Windows下安装使用ADB,简单易懂教程](https://blog.youkuaiyun.com/m0_37777700/article/details/129836351)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值