1.概述
Halo 是一款强大易用的开源建站工具,从个人博客、知识库,到企业官网、在线商城,Halo 都能轻松实现,一站式满足多样化建站需求。
2.搭建流程
halo支持多种部署方式(docker-compose,docker,1panel等)以及多种镜像版本,这里采用的是docker-compose部署方式+社区版(免费)进行博客搭建
2.1 安装docker docker-compose
- Docker 安装文档:https://docs.docker.com/engine/install/
- Docker Compose 安装文档:https://docs.docker.com/compose/install/
2.2 创建Halo容器
在系统任意位置创建一个文件夹,此文档以 ~/halo 为例
mkdir ~/halo && cd ~/halo
创建 docker-compose.yaml(采用Halo+PostgreSQL)
version: "3"
services:
halo:
image: registry.fit2cloud.com/halo/halo-pro:2.23
restart: on-failure:3
depends_on:
halodb:
condition: service_healthy
networks:
halo_network:
volumes:
- ./halo2:/root/.halo2
ports:
- "8090:8090"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8090/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:postgresql://halodb/halo
- --spring.r2dbc.username=halo
# PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
- --spring.r2dbc.password=openpostgresql
- --spring.sql.init.platform=postgresql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://localhost:8090/
halodb:
image: postgres:15.4
restart: on-failure:3
networks:
halo_network:
volumes:
- ./db:/var/lib/postgresql/data
healthcheck:
test: [ "CMD", "pg_isready" ]
interval: 10s
timeout: 5s
retries: 5
environment:
- POSTGRES_PASSWORD=openpostgresql
- POSTGRES_USER=halo
- POSTGRES_DB=halo
- PGUSER=halo
networks:
halo_network:
启动Halo服务
docker compose up -d
2.3 nginx反向代理
Halo镜像起来后已经可以通过服务器ip+port的方式访问(默认8090端口),但是一般情况下个人博客都希望通过域名进行访问,这里就需要配置nginx的反代,将ip+端口的访问模式代理到域名+端口。参考文章:https://developer.aliyun.com/article/1244799
这里以腾讯云服务器+宝塔为例:
安装nginx
点击“设置”,可以在“配置修改”处找到nginx的conf文件目录
cd到该目录下创建halo.conf配置文件,内容可以参考下面
upstream halo {
server 127.0.0.1:8090;
}
server {
listen 80;
listen [::]:80;
server_name blog.example.com;
client_max_body_size 1024m;
location / {
proxy_pass http://halo;
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_name处就填写自己想代理到的域名,例如blog.example.com、www.example.com 添加完成后
# 检查配置是否有误
sudo nginx -t
# 重载 Nginx 配置
sudo nginx -s reload
访问conf中配置的域名+端口就可以进入到halo的初始化界面
修改外部访问地址,否则可能会出现只能访问http://域名+端口/console路由的问题

3.https配置
3.1 ssl证书申请
一般云厂商可以申请免费的ssl证书,这里以腾讯云为例
申请完后证书下发了就可以上传到服务器/nginx/cert目录下
评论