使用 Docker 部署 Halo 博客系统

news2024/11/19 9:25:20

:::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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

05-微服务Sentinel流量哨兵

一、Sentinel介绍 1.1 什么是Sentinel 分布式系统的流量防卫兵&#xff1a;随着微服务的普及&#xff0c;服务调用的稳定性变得越来越重要。Sentinel以“流量”为切入点&#xff0c;在流量控制、断路、负载保护等多个领域开展工作&#xff0c;保障服务可靠性。特点&#xff1…

MyBatis实战指南(二):工作原理与基础使用详解

MyBatis是一个优秀的持久层框架&#xff0c;它支持定制化SQL、存储过程以及高级映射。那么&#xff0c;它是如何工作的呢&#xff1f;又如何进行基础的使用呢&#xff1f;本文将带你了解MyBatis的工作原理及基础使用。 一、MyBatis的工作原理 1.1 MyBatis的工作原理 工作原理…

Vue基础-搭建Vue运行环境

这篇文章介绍了在Vue.js项目中进行开发环境搭建的关键步骤。包括node.js安装和配置、安装Vue及Vue CLI工具、安装webpack模板、安装vue-router、创建Vue项目等步骤。这篇文章为读者提供了清晰的指南&#xff0c;帮助他们快速搭建Vue.js开发环境&#xff0c;为后续的项目开发奠定…

小汪,TCP连接和断连夺命6连问你可能扛得住?

目录 TCP三次握手连接和四次挥手断连的几处疑问 一、建立连接&#xff0c;为什么是三次握手&#xff0c;而不是二次握手&#xff1f; 二、为什么每次建立 TCP 连接时&#xff0c;初始化的序列号都要求不一样呢&#xff1f; 三、断开连接&#xff0c;为什么是四次握手&#x…

HarmonyOS 开发基础(八)Row和Column

HarmonyOS 开发基础&#xff08;八&#xff09;Row和Column 一、Column 容器 1、容器说明&#xff1a; 纵向容器主轴方向&#xff1a;从上到下纵向交叉轴方向&#xff1a;从左到右横向 2、容器属性&#xff1a; justifyContent&#xff1a;设置子元素在主轴方向的对齐格式…

30道JVM综合面试题详解含答案(值得珍藏)

1. 描述一下JVM加载Class文件的原理机制? Java中的所有类&#xff0c;都需要由类加载器装载到JVM中才能运行。类加载器本身也是一个类&#xff0c;而它的工作就是把class文件从硬盘读取到内存中。在写程序的时候&#xff0c;我们几乎不需要关心类的加载&#xff0c;因为这些都…

流程控制详解

1、Java流程控制 主要涉及三大流程控制&#xff1a;顺序、分支、循环 如下图&#xff1a; 1&#xff09;流程2 存在对用户名和密码的校验&#xff0c;是否为空&#xff0c;存在分支控制 2&#xff09;流程3 用户名和密码在数据库是否存在&#xff0c;存在分支控制 3&#xf…

ant design vue Tree组件叶子节点横向排列

antdesignvue的树形组件要实现组件叶子节点横向排列有点坑&#xff0c;没有 配置属性&#xff0c;需要自己想办法。 要实现的效果 看tree组件的dom结构&#xff0c;父元素flex竖向布局&#xff0c;子项不论节点层级都在同一层&#xff01;&#xff01;&#xff01; 难点在于想…

中级Python面试问题

文章目录 专栏导读1、xrange 和 range 函数有什么区别&#xff1f;2、什么是字典理解&#xff1f;举个例子3、元组理解吗&#xff1f;如果是&#xff0c;怎么做&#xff0c;如果不是&#xff0c;为什么&#xff1f;4、 列表和元组的区别&#xff1f;5、浅拷贝和深拷贝有什么区别…

SV-298XT IP网络广播板 SV-298XT-共公广播音频模块IP网络广播板

SV-298XT IP网络广播板 SV-298XT-共公广播音频模块IP网络广播板 SV-298XT网络广播模块是一款全数字网络型广播模组&#xff0c;核心部分采用了成熟的私有协议解决方案&#xff0c;性能稳定可靠。支持TCP、UDP、组播协议能针对当前服务器中不同的广播任务设置不同的广播传输方式…

DLT:dlt-daemon示例解析2

DLT&#xff1a;dlt-daemon示例解析 回顾一下上期第一个示例打印DLT日志的流程。 这次来分析第二个示例。 目录dlt-daemon/examples/example2/下有以下文件 CMakeLists.txt dlt_id.h example2.c example2.xml 其中example2.xml编译用不到&#xff0c;里面描述了一些程序的…

Elasticsearch聚合优化 | 聚合速度提升5倍!

1、聚合为什么慢&#xff1f; 大多数时候对单个字段的聚合查询还是非常快的&#xff0c; 但是当需要同时聚合多个字段时&#xff0c;就可能会产生大量的分组&#xff0c;最终结果就是占用 Elasticsearch大量内存&#xff0c;从而导致 OOM 的情况发生。 实践应用发现&#xff0…

git入门之本地操作

1、启动git命令输入 在想要建立仓库&#xff0c;建议的方式是在文件夹中右键单击&#xff0c;选择git bash here 2、初始化仓库命令&#xff1a;git init 3、查看仓库状态&#xff1a;git status 4、更新仓库特定文件&#xff1a;git add xxx 5、更新仓库所有文件&#xff1…

【机器学习】聚类算法(二)

五、基于密度的算法 5.1 DBSCAN 算法 import sys # 导入 sys 模块&#xff0c;用于访问系统相关的参数和功能 import os # 导入 os 模块&#xff0c;用于处理文件和目录 import math # 导入 math 模块&#xff0c;用于进行数学运算 import random # 导入 random 模块&#xff0…

JVM基础(5)——JVM垃圾回收算法

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…

【机器学习】模型调参工具:Hyperopt 使用指南

机器学习| 模型调参工具&#xff1a;Hyperopt 使用指南 前言1. Hyperopt是什么&#xff1f;2. Hyperopt的优缺点3. 如何使用 Hyperopt 进行调参3.1 安装 Hyperopt3.2 构建超参数空间3.3 定义目标函数3.4 运行 Hyperopt 优化3.5 获取最优超参数 4. XGB调参代码示例参考资料 前言…

Java Http各个请求类型详细介绍

1. 前言 在Spring Boot框架中&#xff0c;HTTP请求类型是构建Web应用程序的重要组成部分。常见的请求类型包括GET、POST、PUT和DELETE&#xff0c;每种类型都有其特定的用途和特点。本文将详细比较这四种请求类型&#xff0c;帮助您在开发过程中做出明智的选择。 2. GET请求…

12.扩展字典(ExtensionDictionary)

愿你出走半生,归来仍是少年! 环境:.NET FrameWork4.5、ObjectArx 2016 64bit、Entity Framework 6. 在10.扩展数据(XData)中我们讲到每个DbObject有一个XData对象可以存储数据,除此之外每个DbObject对象还有一个ExtensionDictionary(扩展字典)可以进行数据存储。…

vue3+ts+vite中封装axios,使用方法从0到1

一、安装axios npm install axios types/axios --save二、配置代理vite.config.ts&#xff0c;如果没有需要新建该文件 module.exports {server: {proxy: {/api: {target: http://localhost:5000, // 设置代理目标changeOrigin: true, // 是否改变请求源地址rewrite: (path)…

【开源】基于JAVA+Vue+SpringBoot的大病保险管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统配置维护2.2 系统参保管理2.3 大病保险管理2.4 大病登记管理2.5 保险审核管理 三、系统详细设计3.1 系统整体配置功能设计3.2 大病人员模块设计3.3 大病保险模块设计3.4 大病登记模块设计3.5 保险审核模块设计 四、…