操作环境
操作系统:Linux CentOS 8.0
数据库:mysql 8.0
JAVA:java-17以上版本
Halo介绍
Halo是一款开源建站工具。具备以下特点:
可插拔架构
Halo 采用可插拔架构,功能模块之间耦合度低、灵活性提高。支持用户按需安装、卸载插件,操作便捷。同时提供插件开发接口以确保较高扩展性和可维护性。
1.支持在运行时安装和卸载插件。
2.更加方便地集成三方平台。
3.统一的可配置设置表单。
4.支持自定义模型,自动生成 RESTful API。
功能丰富的主题机制
Halo 提供完整的主题模板机制,用于构建前台界面。这意味着用户可以根据自己的喜好选择不同类型的主题模板来定制化自己的站点外观。
1.动态切换主题模板。
2.支持实时编辑和预览效果。
3.多语言支持。
4.与插件配合实现更多功能。
编辑器
Halo 的富文本编辑器提供了方便丰富的功能,包括添加标题、段落、引用、列表、代码块等元素,并支持设置样式属性、上传图片、插入视频等功能。这些工具让你的文章创作更加便捷和生动。
1.完备的富文本格式支持
2.支持拖拽和粘贴图片上传
3.支持通过插件扩展编辑器
部署Halo
一、创建用于运行Halo的新系统用户
1.创建用户
代码语言:javascript复制useradd -m halo
2.为 halo用户创建密码
代码语言:javascript复制passwd 你的账户名
3.授权Halo目录相关执行权限,指定选择一个目录为Halo目录,CD进入
代码语言:javascript复制sudo chmod -R 700 路径
sudo chown -R root:账户 路径
sudo chmod -R g=rwx 路径
4.登录到 halo 账户
代码语言:javascript复制su - halo
二、安装JAVA
1.下载java 17以上版本
2.将java上传至指定目录,如/usr/halo/
3.解压下载的java包:
代码语言:javascript复制tar -zxvf java包名.tar.gz
4.配置环境变量。打开/etc/profile文件,找到export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL,在下面写上:
代码语言:javascript复制#java环境变量
export JAVA_HOME=/usr/local/java/jdk-17.0.4
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
5.使环境变量生效
代码语言:javascript复制source /etc/profile
6.验证java是否安装成功
代码语言:javascript复制java -version
三、安装SSH远程连接工具
推荐华为CodeArts IDE(RemoteShell)
四、安装数据库
1.CentOS 8系统需启用MySQL官方仓库
代码语言:javascript复制sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el8-2.noarch.rpm
2.更新YUM缓存
代码语言:javascript复制sudo yum update
3.先禁用默认的MySql模块
代码语言:javascript复制sudo yum module disable mysql
4.执行安装MySql服务器
代码语言:javascript复制sudo yum install mysql-community-server
5.启动MySql服务并设置开机自启
代码语言:javascript复制sudo systemctl start mysqld
sudo systemctl enable mysqld
6.获取MySql初始随机密码
MySQL 8.x安装后会自动为管理员用户生成一个临时密码,在 /var/log/mysqld.log 文件中查找类似 A temporary password is generated for root@localhost: 的行以获取该密码。
7.登录MySql
代码语言:javascript复制mysql -u usr -p
注:usr为你要登入的账户名。
8.修改MySql密码
代码语言:javascript复制ALTER USER 'root'@'localhost' IDENTIFIED BY '要修改为的密码';
9.创建用于允许Halo的数据库账户
代码语言:javascript复制CREATE USER '数据库账户名'@'localhost' IDENTIFIED BY '要设置的密码';
10.创建halodb的数据库
代码语言:javascript复制CREATE DATABASE IF NOT EXISTS halodb;
FLUSH PRIVILEGES;‘
11.为Halo数据库账户赋予halodb数据库权限
代码语言:javascript复制GRANT ALL PRIVILEGES ON halodb.* TO '数据库账户名'@'localhost';
12.让MySQL对Halo数据库账户账户开放外部访问3306端口
代码语言:javascript复制grant all privileges on . to 数据库账户名@'%' with grant option;
<p>FLUSH PRIVILEGES;
五、安装Halo
1.选一个指定文件夹,并且CD进入,创建存放Halo后续数据及运行包的目录:
注:例如/usr/halo/
代码语言:javascript复制mkdir ./app && cd ./app
2.将Halo运行包上传至此文件夹
3.创建工作目录
代码语言:javascript复制mkdir ./.halo2 && cd ./.halo2
4.在“.halo2文件夹”内创建Halo配置文件,该配置文件主要作用为数据库及站点相关设置,具体代码如下:
代码语言:javascript复制server:
port: 8090 #运行端口
spring:
#数据库配置,支持 MySQL、MariaDB、PostgreSQL、H2 Database
r2dbc:
url: r2dbc:h2:file://${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE
username: admin #数据库账户
password: 123456 #数据库密码
sql:
init:
mode: always
platform: h2 #数据库类型
halo:
caches:
page:
disabled: true #是否禁用页面缓存
work-dir: ${user.home}/.halo2 #工作目录位置,此处填写你创建的Halo目录位置
external-url: http://localhost:8090 #站点外部访问地址</p>
<h1 id="附件映射配置,通常用于迁移场景">附件映射配置,通常用于迁移场景</h1>
<p>attachment:
resource-mappings:
- pathPattern: /upload/**
locations:
- migrate-from-1.x
#-------------以上为配置文件代码,以下为备注提示--------------
#spring.r2dbc.url 数据库连接地址(指代码中r2dbc结构下需填写的参数,例如设置为mysql数据库则填入r2dbc:pool:mysql://你的服务器地址:3306/halodb(数据库名)
#spring.r2dbc.username 数据库用户名
#spring.r2dbc.password 数据库密码
#spring.sql.init.platform 数据库平台名称,支持 postgresql、mysql、mariadb、h2,需要使用哪个数据库则填写对应的数据库名称参数
#PostgreSQL数据库设置标准:
#r2dbc:pool:postgresql://{HOST}:{PORT}/{DATABASE} postgresql
#MySQL数据库设置标准:
#r2dbc:pool:mysql://{HOST}:{PORT}/{DATABASE} mysql
#MariaDB数据库设置标准:
#r2dbc:pool:mariadb://{HOST}:{PORT}/{DATABASE} mariadb
#H2 Database数据库设置标准:
#r2dbc:h2:file:///${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE h2
5.CD进入存放Halo运行包的文件夹,测试运行Halo
代码语言:javascript复制java -jar halo.jar --spring.config.additional-location=optional:file:$HOME/.halo2/
注:halo.jar
为Halo运行包文件名。
注:.halo2文件夹
”为隐藏文件夹,用于存放上传的图片、备份等文件。一般位于创建该文件夹及运行Halo站点时的用户所在目录下。例如创建该文件夹及运行Halo站点的用户为非root账户,则该配置文件的路径为/home/系统用户名/。如创建该文件夹及运行Halo站点的用户为root账户,则该配置文件的路径为/root/.halo2/。
六、设置Halo开机自启动
1.CD进入/etc/systemd/system/文件夹,创建halo.service文件:
代码语言:javascript复制[Unit]
Description=Halo Service
Documentation=https://docs.halo.run
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=USER
ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar JAR_PATH --spring.config.additional-location=optional:file:/home/halo/.halo2/
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog
StandError=inherit
#JAR_PATH: Halo 运行包的绝对路径,例如 /home/halo/app/halo.jar。
#USER: 运行 Halo 的系统用户。
#/usr/bin/java: java包的绝对路径。
#file:/home/halo/.halo2/ 为.halo2隐藏文件夹路径
[Install]
WantedBy=multi-user.target
2.重新加载 systemd
代码语言:javascript复制systemctl daemon-reload
3.运行服务
代码语言:javascript复制systemctl start halo
4.在系统启动时启动服务
代码语言:javascript复制systemctl enable halo
5.查看服务运行状态
代码语言:javascript复制systemctl status halo.service