当前位置: 首页 > news >正文

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

一、Halo是什么有啥用

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

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

二、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容器引擎

#安装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 处下载编译好的二进制文件即可。

#下载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

#下载安装部署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.21restart: on-failure:3depends_on:halodb:condition: service_healthynetworks:halo_network:volumes:- ./halo2:/root/.halo2ports:- "8092:8092"healthcheck:test: ["CMD", "curl", "-f", "http://localhost:8092/actuator/health/readiness"]interval: 30stimeout: 5sretries: 5start_period: 30senvironment:# JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数- JVM_OPTS=-Xmx256m -Xms256mcommand:- --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.0restart: on-failure:3networks:halo_network:command: - --default-authentication-plugin=caching_sha2_password- --character-set-server=utf8mb4- --collation-server=utf8mb4_general_ci- --explicit_defaults_for_timestamp=truevolumes:- ./mysql:/var/lib/mysql- ./mysqlBackup:/data/mysqlBackuphealthcheck:test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]interval: 3sretries: 5start_period: 30senvironment:# 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值- MYSQL_ROOT_PASSWORD=qwer1234- MYSQL_DATABASE=halonetworks: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包的下载需要用账号登录红帽官网后才能下载):如下图所示:

#安装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

#使用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/halousername: ckpassword: qwer1234sql: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=syslogStandError=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/

http://www.dtcms.com/a/536317.html

相关文章:

  • 【论文精读】STREAM:视频生成模型的时空评估新指标
  • 建设网站的模板下载福田企业网站优化有用吗
  • 网站建设公司营业范围app公司是做什么的
  • KP3310SGA线性降压无电感替代阻容降压220V转5V3.3V2.7V
  • 【 国产信创系统】udev监测USB事件
  • 洒长春菩网站建设我要浏览国外网站怎么做
  • 【JUnit实战3_16】第九章:容器内测试(上)
  • 面向对象编程练习题
  • 【FPGA】时序逻辑计数器设计级验证
  • 大连网站建设哪里好网络营销推广方法和手段有哪些
  • __工艺数据管理的范式转变:金仓数据库替代MongoDB实操实践__
  • RV1126 NO.35:OPENCV重点结构体Mat的讲解
  • 【靶场】linux提权
  • 网站优化总结报告技术类网站模板
  • 衡水网站开发报价怎么利用自媒体做网站优化
  • 深析Springboot之自动配置
  • 基于大数据的游戏数据可视化分析与推荐系统 Steam游戏 电子游戏 娱乐数据 Flask框架 selenium爬虫 协同过滤推荐算法 python✅
  • 网站建设对公司来说重要吗wordpress页脚插件
  • TDengine 数据函数 SIN 用户手册
  • 无人机多光谱在高山松地上生物量估测的研究应用进展
  • Spring Boot3零基础教程,Kafka 小结,笔记79
  • LiveQing视频推流点播流媒体功能-支持RTSP推流支持rtmp推流无人机rtmp推流无人机rtsp推流
  • 做化妆品代理在那些网站比较多江苏公司响应式网站建设报价
  • RAG文档切片新方案HiChunk:LLM重构RAG文档分块
  • mybatis的sql中,如果一个条件column=#{column},column的值为null时,会不会匹配出column is null 的记录
  • 购物商城系统搭建实战指南
  • 怎么做网站挣钱做一下网站收购废钢
  • 专业移动微网站建设玖玖建筑网
  • 无锡建行网站网站加速cdn
  • kafka使用-admin创建