使用 Docker 部署 Halo 博客系统

:::info
项目地址:https://github.com/halo-dev/halo
:::

一、Halo 介绍

1)Halo 简介

Halo 是一款强大易用的开源建站工具,它让你无需太多的技术知识就可以快速搭建一个博客、网站或者内容管理系统。具备可插拔架构、主题套用、富文本编辑器等多重特性,支持用户根据自己的喜好选择不同类型的插件及主题模板来定制化自己的站点功能及外观。让内容创作和发布更加便捷生动。

:::info
在线体验
:::

  • 环境地址:https://demo.halo.run
  • 后台地址:https://demo.halo.run/console
  • 用户名:demo
  • 密码:P@ssw0rd123…

2)Halo 特点

  • 使用 Spring Boot 框架,方便部署和更新。
  • 完备的 Markdown 编辑器以及文章/页面系统,包含分类/标签/预览图等。
  • 内置图库,需要主题支持。
  • 完备的附件管理。
  • 比较完备的评论系统,内置的评论系统还需要不断完善,另外还支持部分三方评论系统( 如 Valine,Disqus 等 ),可以随意切换,支持任何主题。
  • 完备的模板(主题)系统(目前已有四款主题)。
  • 完善的系统设置,包括 SEO,文章设置,评论设置,邮箱设置等。

3)本次实践说明

  1. 本次部署 Halo 版本为 Halo V2.11.0 版本,与 V1 版本安装有所不同。
  2. 本次部署为日常个人使用或测试,生产环境请勿使用。

二、检查本地 Docker 环境

1)检查 Docker 版本

// 1) 低版本 Docker 安装
yum install docker -y

----
// < '推荐' >
// 2) 高版本 Docker 安装
curl -fsSL https://get.docker.com/ | sh

----
// 关闭防火墙
systemctl disable --now firewalld
setenforce 0

// 启用 Docker
systemctl enable --now docker

----
// 3) 安装 Docker-Compose
curl -L https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose -v

2)检查 Docker 状态

systemctl status docker

3)检查 Docker compose 版本

docker-compose -v

三、下载 Halo 镜像

docker pull halohub/halo:2.11.0

四、下载 application.yaml 文件

1)创建数据目录

mkdir -p /data/halo/.halo2 && mkdir -p /data/halo/mysql && cd /data/halo

2)下载 application.yaml

wget https://dl.halo.run/config/application-template.yaml --no-check-certificate -O ./application.yaml

3)复制 application.yaml 文件

[root@blog halo] cp application.yaml .halo2/

五、使用 Docker-Cli 部署 Halo

1)Docker-Cli 部署 Halo

docker run \
  -it -d \
  --name halo \
  -p 8090:8090 \
  -v ~/.halo2:/root/.halo2 \
  -e HALO_EXTERNAL_URL=http://localhost:8090/ \
  -e HALO_SECURITY_INITIALIZER_SUPERADMINUSERNAME=admin \
  -e HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD=P@ssw0rd123456 \
  halohub/halo:2.11.0

2)相关参数解释

**注意:**此命令默认使用自带的 H2 Database 数据库。如需使用 PostgreSQL,请参考:使用 Docker Compose 部署

-it:开启输入功能并连接伪终端
-d:后台运行容器
–name:为容器指定一个名称
-p:端口映射,格式为 主机(宿主)端口:容器端口,可在 application.yaml 配置。
-v:工作目录映射。形式为:-v 宿主机路径:/root/.halo2,后者不能修改。
-e:环境变量
HALO_EXTERNAL_URL:外部可访问的链接。例如:https://域名/
HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD:超级管理员用户(admin)的初始化密码。如果该环境变量没有设置,系统将会生成随机密码并打印在日志中。

六、开启 ipv4.ip_forward

1)开启 ipv4.ip_forward

在 /usr/lib/sysctl.d/00-system.conf 文件中添加 net.ipv4.ip_forward=1

vim /usr/lib/sysctl.d/00-system.conf
# Kernel sysctl configuration file
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.

# Disable netfilter on bridges.
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
net.ipv4.ip_forward=1

2)重启 Docker 服务

systemctl restart network && systemctl restart docker

七、部署 Halo 博客系统

1)编辑 docker-compose.yaml

[root@blog halo] vim docker-compose.yaml 
version: "3"

services:
  halo:
    image: halohub/halo:2.11.0
    container_name: halo
    restart: always
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - /data/halo/.halo2:/root/.halo2
    ports:
      - "8930:8090"
    environment:
      - SPRING_R2DBC_URL=r2dbc:pool:mysql://halodb:3306/halo
      - SPRING_R2DBC_USERNAME=root
      # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
      - SPRING_R2DBC_PASSWORD=P@ssw0rd
      - SPRING_SQL_INIT_PLATFORM=mysql
      # 外部访问地址,请根据实际需要修改
      - HALO_EXTERNAL_URL=http://192.168.80.8:8930/
      # 初始化的超级管理员用户名
      - HALO_SECURITY_INITIALIZER_SUPERADMINUSERNAME=admin
      # 初始化的超级管理员密码
      - HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD=halo

  halodb:
    image: mysql:8.0.27
    container_name: halodb
    restart: on-failure:3
    networks:
      halo_network:
    command: --default-authentication-plugin=mysql_native_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"
    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=halo
      - MYSQL_DATABASE=halo

networks:
  halo_network:

2)创建 Halo 相关容器

docker compose up -d

docker start halo halodb

3)查看 Halo 容器状态

docker ps -a

image.png

八、Halo 的初始化配置

1)进入 Halo 首页

:::info
http://192.168.80.8:8090/console/setup
:::
image.png

2)设置站点名称

登录 Halo 后台,设置站点名称,并选择初始化。

image.png

九、访问 Halo 博客系统

1)进入 Halo 后台首页

image.png

2)Halo 系统设置

image.png

3)插件安装

image.png

4)安装 Halo 主题

image.png
image.png

5)查看主题效果

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/326507.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Springboot的私人健身与教练预约管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的私人健身与教练预约管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三…

某侠网js逆向wasm解析

本次目标地址如下&#xff0c;使用base64解密获得 aHR0cHM6Ly93d3cud2FpbWFveGlhLm5ldC9sb2dpbg 打开网址&#xff0c;本次的目标是登录接口&#xff0c;如下图 本文主要讲解wasm的解析&#xff0c;所以对其他参数不做逆向处理&#xff0c;本次由wasm加密的参数只有sign一个&a…

分布式存储

1 存储基础 1.1 单机存储设备 DAS&#xff08;直接附加存储&#xff0c;是直接接到计算机打的主板总线上去的存储&#xff09; UDE、SATA、SCSI、SAS、USB接口的磁盘 所谓的接口就是一种存储设备驱动下的磁盘设备&#xff0c;提供块级别的存储 NAS&#xff08;网络附加存储…

BLHeli_S 代码分析---BLHeli.asm入口函数pgm_start分析

BLHeli_S 代码分析—BLHeli.asm入口函数pgm_start分析 pgm_start 代码 代码中数据变量定义 Bit_Access: DS 1Flash_Key_1: DS 1 ; Flash key one Flash_Key_2: DS 1 ; Flash key twoAIKON_Boltlite_30A.inc文件中定义的变量 LOCK_BYTE_ADDRESS_16K EQU 3FFFh ; Ad…

苹果最新系统iOS 17的调试和适配方法 - Xcode 14.3.1 真机调试指南

最近苹果发布了iOS 17作为其最新操作系统版本&#xff0c;作为开发者&#xff0c;你可能需要了解如何在Xcode 14.3.1中进行真机调试和适配。本文将为你详细介绍步骤和注意事项。 I. 检查Xcode版本 在开始之前&#xff0c;确保你已经安装了Xcode 14.3.1或更高版本。你可以在Xco…

APP广告变现设置合理的广告频次的原因

过多的广告展示可能会导致用户体验下降&#xff0c;而过少则可能会降低广告收入&#xff0c;我们需要的是找到其中的平衡点。 广告频次限制可以通过多种方式实现&#xff0c;比如限制某段时间内广告出现的次数、限制某个用户在一定时间内看到广告的次数等。在实践中&#xff0…

SpringBoot+SSM项目实战 苍穹外卖(12) Apache POI

继续上一节的内容&#xff0c;本节是苍穹外卖后端开发的最后一节&#xff0c;本节学习Apache POI&#xff0c;完成工作台、数据导出功能。 目录 工作台Apache POI入门案例 导出运营数据Excel报表 工作台 工作台是系统运营的数据看板&#xff0c;并提供快捷操作入口&#xff0c…

【目标检测实验系列】YOLOv5模型改进:融入坐标注意力机制CA,多维度关注数据特征,高效涨点!(内含源代码,超详细改进代码流程)

自我介绍&#xff1a;本人硕士期间全程放养&#xff0c;目前成果:一篇北大核心CSCD录用,两篇中科院三区已见刊&#xff0c;一篇中科院四区在投。如何找创新点&#xff0c;如何放养过程厚积薄发&#xff0c;如何写中英论文&#xff0c;找期刊等等。本人后续会以自己实战经验详细…

免费开源OCR 软件Umi-OCR

Umi-OCR 是一款免费、开源、可批量的离线 OCR 软件&#xff0c;基于 PaddleOCR&#xff0c;适用于 Windows10/11 平台 免费&#xff1a;本项目所有代码开源&#xff0c;完全免费。方便&#xff1a;解压即用&#xff0c;离线运行&#xff0c;无需网络。高效&#xff1a;自带高效…

07 整合SSM的快速理解

1.1 第一问&#xff1a;SSM整合需要几个IoC容器&#xff1f; 两个容器 本质上说&#xff0c;整合就是将三层架构和框架核心API组件交给SpringIoC容器管理&#xff01; 一个容器可能就够了&#xff0c;但是我们常见的操作是创建两个IoC容器&#xff08;web容器和root容器&…

C++ 设计模式之桥接模式

【声明】本题目来源于卡码网&#xff08;题目页面 (kamacoder.com)&#xff09; 【提示&#xff1a;如果不想看文字介绍&#xff0c;可以直接跳转到C编码部分】 【简介】什么是桥接模式 桥接模式&#xff08;Bridge Pattern&#xff09;是⼀种结构型设计模式&#xff0c;它的U…

不是人才用不起,而是AI巡检更有性价比!

在许多行业中&#xff0c;如煤炭、电力、化工等&#xff0c;安全生产是至关重要的。这就需要通过巡检&#xff0c;对设备运行状态进行实时监测&#xff0c;及时发现并处理潜在的安全隐患&#xff0c;从而降低事故发生的概率。但是传统的巡检方式通常依赖于人工进行&#xff0c;…

Java项目:121SSM记账管理系统

博主主页&#xff1a;Java旅途 简介&#xff1a;分享计算机知识、学习路线、系统源码及教程 文末获取源码 一、项目介绍 记账管理系统基于SpringSpringMVCMybatis开发&#xff0c;系统主要功能如下&#xff1a; 收入项管理 支出项管理 收入方式管理 支出方式管理 添加收入…

申泰勇教练的独家人物化身系列即将登陆 The Sandbox

申泰勇&#xff08;Shin Tae-yong&#xff09;教练是足球界的传奇人物&#xff0c;他来到 The Sandbox&#xff0c;推出了自己的专属人物化身系列。作为前 K 联赛中场球员和印尼队取得历史性成就的幕后教练&#xff0c;他的传奇经历现在已经影响到了虚拟世界。 向过去、现在和未…

Linux第29步_安装“Notepad++”软件

STM32CubeProgrammer脚本文件的后缀为“.tsv”&#xff0c;ST公司官方也叫做FlashLayout。在烧写“TF-A固件”之前&#xff0c;我们需要用“Notepad”软件打开“后缀为.tsv”的脚本文件&#xff0c;根据需求决定哪些文件需要更新&#xff0c;设置好这个脚本文件。 在后期使用S…

AnyText多语言文字生成与编辑

AnyText图文融合 近年来&#xff0c;随着AIGC的爆火&#xff0c;图片生成技术得到飞速发展&#xff0c;当前AI生成的图片已达到真假难辨的高保真度。不过&#xff0c;当合成图片中出现文字内容时&#xff0c;仍能够使AI露出马脚&#xff0c;因为当前主流方法尚无法在图片中生成…

一个程序员“玩”出来的网站:每月成本仅 350 元,如今赚了 16.4 万元

很难想象&#xff1a;一个每月运行成本不到 50 美元&#xff08;约人民币 358 元&#xff09;的网站. 是如何做到收入 2.3 万美元&#xff08;约人民币 16.4 万元&#xff09;的&#xff1f; ** 如果你也对网站开发感兴趣&#xff1f; ** 首先&#xff0c;这个网站只有创始…

【动态规划】【滑动窗口】【C++算法】 629K 个逆序对数组

作者推荐 【矩阵快速幂】封装类及测试用例及样例 本文涉及知识点 动态规划 C算法&#xff1a;滑动窗口总结 LeetCode629: K 个逆序对数组 逆序对的定义如下&#xff1a;对于数组 nums 的第 i 个和第 j 个元素&#xff0c;如果满足 0 < i < j < nums.length 且 nu…

【架构】docker实现集群主从扩容【案例3/4】

实现集群主从扩容 当整个集群扛不住流量的情况时&#xff0c;需要给集群扩容增加设备&#xff0c;由3主3从&#xff0c;扩为4主4从。实现&#xff1a; 示意图如下&#xff1a; 第一步&#xff1a;新创建两个节点&#xff08;redis-node-7&#xff0c;端口6387和 redis-node…

「云渲染科普」3dmax vray动画渲染参数如何设置

动画渲染一直都是占用时间最多的地方&#xff0c;动画帧数通常 1 秒在 25 帧或者以上&#xff0c;电脑通常需要对每一帧的画面分批渲染&#xff0c;通常本地电脑由于配置上的限制&#xff0c;往往无法在短时间内快速的完成渲染任务。这时“云渲染”则成为了动画渲染的主要方案&…