Linux系统中安装部署开源的建站、博客工具——Halo

一、Halo是什么有啥用

Halo是一款基于Java,使用vue+spring boot框架开发的开源建站工具,可以配合上不同的模板、插件,帮助我们构建出自己想要的站点(可以是公司的官网、也可以是自己的个人博客、还可以作为团队的共享知识库、论坛,甚至可以构建为一个商城);拥有完整的后台管理与前台展示;属于动态框架。

|--------|------------------------|--------------------------------|
| 序号 | Halo的优点 | Halo的缺点 |
| 1 | 多种方式部署,十分灵活 | 对服务器的内存要求较高,由于基于Java内存至少配置1G |
| 2 | 支持附件、自定义图床、回复评论、多用户管理 | 不支持额外的第三方插件、插件数量相比WordPress少很多 |
| 3 | 界面设计简洁清爽、拥有完整后台管理和前端展示 | 社区规模偏小,遇到问题时支持可能不如WordPress |
| 4 | 拥有完备的富文本编辑器、支持多种文本格式 | |
| 5 | 拥有各种主题、可自定义配置 | |
| 6 | 拥有现代化的设计、响应速度快 | |
[Halo的优缺点]

二、Halo的安装部署

2.1、使用 Docker Compose 部署Halo

使用 Docker Compose 部署 | Halo 文档https://docs.halo.run/getting-started/install/docker-compose?current=halo-mysql

2.1.1、安装docker容器引擎

bash 复制代码
#安装docker引擎的实操流程
 
#1-安装docker引擎所需的依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
 
#2-安装配置阿里云的镜像仓库源添加到本机【/etc/yum.repos.d/docker-ce.repo】(国内访问会更加快速方便)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 
#3-建立缓存
yum makecache
 
#4-安装docker-ce引擎(注意:由于我们这里使用的是Almalinux9.3的系统它默认是没有安装podman容器管理工具;但如果是红帽9及其更高版本的系统则默认安装了podman,若要安装docker-ce,则需要将podman卸载掉才能安装)
yum install docker-ce -y
 
#5-启动docker
systemctl restart docker
systemctl status docker
ps -ef | grep docker
 
#6-设置docker开机自启
systemctl enable docker

2.1.2、下载安装docker-compose

docker-compose是用来做docker的多容器控制,有了docker-compose,我们可以把所有繁琐的docker操作全都一条命令,自动化的完成。

要使用docker-compose,需要安装一个工具docker-compose,可直接从官方:https://github.com/docker/compose/releases 处下载编译好的二进制文件即可。

bash 复制代码
#下载docker-compose方法(只用选择一个方法下载即可)
 
#1-创建【/usr/local/bin】目录
mkdir -p /usr/local/bin/
 
#2-方法一:下载最新的docker-compose二进制文件到本机的【/usr/local/bin】目录
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
 
#2-方法二:下载指定版本(如:v2.40.0)的docker-compose二进制文件到本机的【/usr/local/bin】目录
curl -L https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
 
 
#3-给下载好的docker-compose二进制文件添加执行权限
chmod +x /usr/local/bin/docker-compose
 
#4-验证docker-compose是否安装成功(若输出docker compose的版本信息内容则表示成功,否则失败)
docker-compose --version

2.1.3、下载安装部署Halo

bash 复制代码
#下载安装部署halo的实操流程

#1-创建halo用户并设置密码
useradd -m halo
passwd halo

#2-在root用户下创建目录
mkdir ~/halo && cd ~/halo

#3-在创建的目录【~/halo】中创建【docker-compose.yaml】文件
vi docker-compose.yaml
#【docker-compose.yaml】文件的内容(是使用mysql数据库)
version: "3"

services:
  halo:
    image: registry.fit2cloud.com/halo/halo:2.21
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - ./halo2:/root/.halo2
    ports:
      - "8092:8092"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8092/actuator/health/readiness"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s
    environment:
      # JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
      - JVM_OPTS=-Xmx256m -Xms256m
    command:
      - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
      - --spring.r2dbc.username=root
      # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=qwer1234
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8092/

  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=qwer1234
      - MYSQL_DATABASE=halo

networks:
  halo_network:



#4-启动 Halo 服务
docker-compose up -d

#5-实时查看日志
docker-compose logs -f

#6-在浏览器输入当前halo所在的服务器IP:8090访问halo的初始界面(【ip a】可获取服务器的IP信息;如(192.168.1.36:8090))

解决"Error response from daemon: Get "https://registry-1.docker.io/v2/":443: connect: network is unre"_error response from daemon :get-CSDN博客https://blog.csdn.net/xiaochenXIHUA/article/details/147684795

2.2、使用JAR文件部署Halo

使用 JAR 文件部署 | Halo 文档https://docs.halo.run/getting-started/install/jar-file

2.2.1、检查java环境并安装

这是红帽官网提供的OpenJDK下载网址,在这里可以查找到对应的java jdk包下载(注意:这些OpenJDK包的下载需要用账号登录红帽官网后才能下载):如下图所示:

bash 复制代码
#安装openjdk17实操流程(其余版本的Jdk安装方法也一样)

#1-检查Linux支持的jdk环境(若没有jdk17则无法使用yum安装,需手动安装)
yum list | grep jdk

#2-下载openjdk17的压缩包
wget https://access.cdn.redhat.com/content/origin/files/sha256/90/906b9ae8f7019f02a2280734bd5d2341de049a5e4817257e14520d620f84626f/java-17-openjdk-17.0.17.0.10-1.portable.jdk.el.x86_64.tar.xz?_auth_=1761551143_a10c2fd3ab2f25c2263143353b72c658 -c 0 -P /data

#3-解压openjdk17并修改名称
cd /data/
tar -xvf java-17-openjdk-17.0.17.0.10-1.portable.jdk.el.x86_64.tar.xz
mv java-17-openjdk-17.0.17.0.10-1.portable.jdk.el.x86_64 openjdk17017010

#4-编辑环境配置文件并添加openjdk17的环境变量
vi /etc/profile
#openjdk17 enviroment
export JAVA_HOME=/data/openjdk17017010
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH

#5-让修改的环境变量生效
source /etc/profile

#6-查看java版本信息
echo $JAVA_HOME
echo $PATH
java -version

2.2.2、下载安装部署Halo

bash 复制代码
#使用jar包搭建halo实操流程(官网地址【https://docs.halo.run/getting-started/install/jar-file】)

#0-创建halo用户密码、然后切换到halo用户下创建halo的工作目录
useradd -m halo
passwd halo
su - halo
mkdir ~/app && cd ~/app

#1-下载halo的包(halo的java环境要求:2.20 及以下版本:JRE 17;2.21 以上版本:JRE 21)
wget https://dl.halo.run/release/halo-2.16.3.jar -O halo.jar

#2-创建halo的工作目录【/home/halo/.halo2】和配置文件【application.yaml】
mkdir ~/.halo2 && cd ~/.halo2
vim application.yaml
#halo的配置文件【application.yaml】内容如下:
server:
  # 运行端口
  port: 8092
spring:
  # 数据库配置,支持 MySQL、MariaDB、PostgreSQL、H2 Database,具体配置方式可以参考下面的数据库配置
  r2dbc:
    url: r2dbc:pool:mysql://192.168.1.36:13336/halo
    username: ck
    password: qwer1234
  sql:
    init:
      mode: always
      # 需要配合 r2dbc 的配置进行改动
      platform: mysql
halo:
  # 工作目录位置
  work-dir: /home/halo/.halo2
  # 外部访问地址
  external-url: http://localhost:8092
  # 附件映射配置,通常用于迁移场景
  attachment:
    resource-mappings:
      - pathPattern: /upload/**
        locations:
          - migrate-from-1.x


#3-测试系统的java环境(若未安装java或者安装的版本不对可参照如上【安装openjdk17实操流程】操作)
java -version

#4-安装mysql数据库,并在mysql数据库中创建halo数据库和ck用户;并授予ck用户操作halo数据库的所有权限
mysql -uroot -p
create database halo character set utf8mb4 collate utf8mb4_bin;
create user ck@'192.168.1.12' identified by 'qwer1234';
grant all on halo.* to ck@'192.168.1.12';
flush privileges;

#5-测试运行Halo(若没有观察到异常日志,即可在浏览器输入当前Halo所在服务器的ip:8092 访问halo的初始界面(如:192.168.1.12:8092)【ip a】命令可查看当前服务器IP信息)
cd ~/app && java -Dfile.encoding=UTF-8 -jar halo.jar --spring.config.additional-location=optional:file:$HOME/.halo2/

#6-注意:如果当前服务器开启了防火墙则需要放开8092端口
systemctl status firewalld
firewall-cmd --list-port
firewall-cmd --zone=public --add-port=8092/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-port


#7-将halo作为一个服务
#7.1-登录到root用户(或从当前halo用户退出到root)
exit
#7.2-创建halo的服务文件
vim /etc/systemd/system/halo.service
#halo的服务文件【/etc/systemd/system/halo.service】内容
[Unit]
Description=Halo Service
Documentation=https://docs.halo.run
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=halo
ExecStart=/data/openjdk17017010/bin/java -Dfile.encoding=UTF-8 -server -Xms256m -Xmx256m -jar /home/halo/app/halo.jar --spring.config.additional-location=optional:file:/home/halo/.halo2/
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog

StandError=inherit

[Install]
WantedBy=multi-user.target


#8-重新加载systemd
systemctl daemon-reload

#9-启动halo服务
systemctl start halo

#10-设置halo服务开机自启
systemctl enable halo

#11-查看halo服务状态
systemctl status halo

#12-查看halo服务日志
journalctl -n 20 -u halo

全网最全的关系型数据库MySQL解析及其安装部署的保姆级教程https://coffeemilk.blog.csdn.net/article/details/151891095?spm=1001.2014.3001.5502

如上图所示的测试运行Halo时输出的控制台内容也没有报错信息,然后我们访问该Halo所在服务器的IP:8092(如:192.168.1.12:8092)后即可看到这个Halo的初始界面则表示安装的Halo成功了(注意:若我们访问【192.168.1.12:8092】没有显示这个界面,则需要检查Halo所在的服务器的防火墙是否放开了8092这个端口,没有则需要放开)。

三、Halo官网资料

Halo - 强大易用的开源建站工具https://www.halo.run/

相关推荐
GoodTimeGGB6 天前
轻量服务器Lighthouse + 1Panel + Halo,三步打造你的专属网站
服务器·1panel·lighthouse·建站·halo
kaika112 天前
Halo 链上好文插件使用指南
隐私·建站·网站管理·网站分享·halo
邂逅星河浪漫24 天前
【RabbitMQ】docker-compose编排部署RabbitMQ容器——CentOS
分布式·docker·centos·rabbitmq·docker-compose
邂逅星河浪漫1 个月前
【DockerFile+Nginx+DockerCompose】前后端分离式项目部署(docker容器化方式)
nginx·docker·centos·部署·docker-compose·dockerfile·容器化部署
邂逅星河浪漫1 个月前
【Docker + DockerCompose】安装步骤+演示
docker·容器·docker-compose
友莘居士1 个月前
Docker Compose从入门到实战:配置与命令全指南
docker·docker-compose
kaika12 个月前
在 Halo 中导入 Markdown 和 Word 文档
建站·网站管理·halo·文档导入
zml_20152 个月前
docker 1分钟 快速搭建 redis 哨兵集群
linux·redis·docker·docker-compose
kaika12 个月前
通过 1Panel MCP 自动部署静态网站
1panel·halo·mcp·ai建站