项目简介
Halo是一款强大且易于使用的开源建站工具,非常适合用来搭建站点或个人博客。Halo具有简单易用、高度可定制等特点,支持多语言、多主题、多存储方式等众多功能。
主要特点
- 可插拔架构
Halo 采用可插拔架构,功能模块之间耦合度低、灵活性提高。支持用户按需安装、卸载插件,操作便捷。同时提供插件开发接口以确保较高扩展性和可维护性。 - 功能丰富的主题机制
Halo 提供完整的主题模板机制,用于构建前台界面。这意味着用户可以根据自己的喜好选择不同类型的主题模板来定制化自己的站点外观。 - 编辑器
Halo 的富文本编辑器提供了方便丰富的功能,包括添加标题、段落、引用、列表、代码块等元素,并支持设置样式属性、上传图片、插入视频等功能。这些工具让你的文章创作更加便捷和生动。
更多特性请查看官网 Halo官网
安装环境
工具 | 版本 |
---|---|
系统 | CentOS 7 |
Docker | 25.0.4 |
Docker-Compose | 2.24.7 |
Halo | 2.14.0 |
PostgreSQL(非必须) | 15.4 |
安装步骤
安装Docker
具体安装步骤见:Docker安装教程
安装docker-compose
具体安装步骤见:Docker-Compose安装教程
安装Halo
新建目录
mkdir -p /你的路径/halo/halo/data /你的路径/halo/postgresql/data
编写docker-compose.yml文件
在halo目录下新建docker-compose.yml文件,并填写以下内容
version: "3"
services:
halo:
image: halohub/halo:2.14.0
container_name: halo
restart: on-failure:3
depends_on:
halodb:
condition: service_healthy
networks:
halo_network:
volumes:
- $PWD/halo/data:/root/.halo2
- /etc/localtime:/etc/localtime:ro
ports:
- "8090:8090"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
command:
- --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
- --spring.r2dbc.username=halo
# PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
- --spring.r2dbc.password=xxxxxxxxxx
- --spring.sql.init.platform=postgresql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=https://xxx.xxx.com
# 初始化的超级管理员用户名
- --halo.security.initializer.superadminusername=admin
# 初始化的超级管理员密码
- --halo.security.initializer.superadminpassword=xxxxxxxxxx
halodb:
image: postgres:15.4
container_name: halodb
restart: on-failure:3
networks:
halo_network:
volumes:
- $PWD/postgresql/data:/var/lib/postgresql/data
- /etc/localtime:/etc/localtime:ro
# ports:
# - "5432:5432"
healthcheck:
test: [ "CMD", "pg_isready" ]
interval: 10s
timeout: 5s
retries: 5
environment:
- POSTGRES_PASSWORD=xxxxxxxxxx
- POSTGRES_USER=halo
- POSTGRES_DB=halo
- PGUSER=halo
networks:
halo_network:
此示例的 PostgreSQL 数据库容器默认没有设置端口映射,如果需要在容器外部访问数据库,可以自行在
halodb
服务中添加端口映射,PostgreSQL 的端口为5432
。
运行参数详解:
参数名 | 描述 |
---|---|
spring.r2dbc.url |
数据库连接地址,详细可查阅下方的 数据库配置 |
spring.r2dbc.username |
数据库用户名 |
spring.r2dbc.password |
数据库密码 |
spring.sql.init.platform |
数据库平台名称,支持 postgresql 、mysql 、h2 |
halo.external-url |
外部访问链接,如果需要在公网访问,需要配置为实际访问地址 |
halo.cache.page.disabled |
是否禁用页面缓存,默认为禁用,如需页面缓存可以手动添加此配置,并设置为 false 。开启缓存之后,在登录的情况下不会经过缓存,且默认一个小时会清理掉不活跃的缓存,也可以在 Console 仪表盘的快捷访问中手动清理缓存。 |
数据库配置:
链接方式 | 链接地址格式 | spring.sql.init.platform |
---|---|---|
PostgreSQL | r2dbc:pool:postgresql://{HOST}:{PORT}/{DATABASE} |
postgresql |
MySQL | r2dbc:pool:mysql://{HOST}:{PORT}/{DATABASE} |
mysql |
MariaDB | r2dbc:pool:mariadb://{HOST}:{PORT}/{DATABASE} |
mysql |
H2 Database | r2dbc:h2:file:///${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE |
h2 |
启动容器
在docker-compose.yml文件所在目录下执行
docker-compose up -d
实时查看日志:
docker-compose logs -f
至此Halo就安装好了,用浏览器访问halo地址/console 即可进入 Halo 管理页面,首次启动会进入初始化页面。
如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。如果通过
http://ip:端口号
的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。
更新容器组
-
备份数据,可以参考 备份与恢复 进行完整备份。
-
更新 Halo 服务
修改docker-compose.yaml
中配置的镜像版本。services: halo: image: halohub/halo:2.14
docker-compose up -d
反向代理(非必须)
我们这里使用Nginx
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name xxx.xxx.com;
charset utf-8;
access_log off;
ssl_certificate /home/cert/fullchain.cer;
ssl_certificate_key /home/cert/xxx.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
client_max_body_size 1024m;
location / {
proxy_pass http://127.0.0.1:8090;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
listen [::]:80;
server_name xxx.xxx.com;
# 核心代码
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
初始化
通过之前的安装,你已经成功安装了 Halo,在首次访问网站的时候会自动跳转到初始化页面,你需要完成这个步骤才能正常使用 Halo。
表单项说明:
- 站点名称:网站的名称,将会显示在浏览器标签页上。
- 邮箱:初始管理员的邮箱地址。
- 用户名:初始管理员的用户名。
- 密码:初始管理员的密码。
- 确认密码:重复输入密码以验证是否匹配。
输入完成之后点击初始化按钮即可完成初始化,初始化完成之后,将会跳转到登录页面,输入刚才设置的用户名和密码即可登录。
站点设置
通知设置
从 2.10.0 版本开始, Halo 提供了 通知 功能,当有新的评论、留言、回复等事件发生时,Halo 会通过配置的方式通知站长或者相关用户。同时,个人中心配置的电子邮箱也会作为通知的接收邮箱。
邮件通知
- 启用邮件通知器:开启后,当有新的评论、留言、回复等事件发生时,Halo 会通过 邮件 的方式通知站长或者相关用户。
- 用户名:你需要在此处填写你的 邮箱账号。
- 密码:你需要在此处填写你的 邮箱密码 或相关的 授权码,具体请参考你所使用邮箱的相关说明。
- 显示名称:你需要在此处填写你的 邮箱显示名称,该名称将会作为邮件发送者的名称显示。
- SMTP 服务器地址:你需要在此处填写你的 SMTP 服务器地址,具体请参考你所使用邮箱的相关说明。
- 端口号:你需要在此处填写你的 SMTP 服务器端口号,具体请参考你所使用邮箱的相关说明。
- 加密方式:你需要在此处选择你的 SMTP 服务器加密方式,具体请参考你所使用邮箱的相关说明。
常见邮箱服务商的文档如下:
设置位置
勾选启用邮件通知器后,按要求设置即可。
主题设置
安装设置等操作请查看 官方文档
评论区