Halo是一款強(qiáng)大的開(kāi)源建站工具,提供豐富的模板和插件,支持根據(jù)不同需求定制外觀和功能,最大亮點(diǎn)就是建站速度飛快。Halo建站工具目前支持使用Docker、1Panel、Helm和Podman等方式部署。關(guān)于Halo建站工具的安裝流程,下文將由站長(zhǎng)百科詳細(xì)介紹。
一、Halo建站工具價(jià)格
安裝Halo建站工具之前首先需要確定所需版本,如果僅用于內(nèi)容管理、郵箱驗(yàn)證、備份等用途,選擇其免費(fèi)版基本夠用;但是如果需要移動(dòng)端、AI建站以及更多自定義支持外,則需要升級(jí)至Halo專(zhuān)業(yè)版。Halo建站工具專(zhuān)業(yè)版目前推出按月、按年和買(mǎi)斷版。要對(duì)比價(jià)格的話肯定是買(mǎi)斷劃算,如果只是想先體驗(yàn)推薦先試試短期專(zhuān)業(yè)版。
通過(guò)本鏈接購(gòu)買(mǎi)Halo專(zhuān)業(yè)版按年/買(mǎi)斷可享8.8折優(yōu)惠,買(mǎi)斷3個(gè)及以上8折!
Halo建站工具專(zhuān)屬優(yōu)惠鏈接:點(diǎn)擊直達(dá)
二、創(chuàng)建容器組
目前Halo官方維護(hù)的Docker鏡像倉(cāng)庫(kù),可以根據(jù)自己的需求選擇合適的鏡像源:
- registry.fit2cloud.com/halo/halo
- halohub/halo
- ghcr.io/halo-dev/halo
注意:目前Halo 2并未更新Docker的latest 標(biāo)簽鏡像,主要因?yàn)镠alo 2不兼容1.x版本,防止使用者誤操作。我們推薦使用固定版本的標(biāo)簽,比如2.21或者2.21.0。
- registry.fit2cloud.com/halo/halo:2:表示最新的2.x版本,即每次發(fā)布新版本都會(huì)更新此鏡像;
- registry.fit2cloud.com/halo/halo:2.21:表示最新的2.21.x版本,即每次發(fā)布patch版本都會(huì)同時(shí)更新此鏡像;
- registry.fit2cloud.com/halo/halo:2.21.0:表示一個(gè)具體的版本。
以下安裝指引以egistry.fit2cloud.com/halo/halo:2.21為例:
1、在系統(tǒng)任意位置創(chuàng)建一個(gè)文件夾,此文檔以~/halo為例。
mkdir ~/halo && cd ~/halo
注意:后續(xù)操作中,Halo產(chǎn)生的所有數(shù)據(jù)都會(huì)保存在這個(gè)目錄,請(qǐng)妥善保存。
2、創(chuàng)建docker-compose.yaml
此文檔提供幾種場(chǎng)景的Docker Compose配置文件,請(qǐng)根據(jù)需要選擇一種。
注意:為了更加方便的管理配置,所有與Halo相關(guān)的配置都使用Docker容器啟動(dòng)參數(shù)代替,所以無(wú)需創(chuàng)建application.yaml文件。
(1)Halo + PostgreSQL:
~/halo/docker-compose.yaml
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:
– “8090:8090”
healthcheck:
test: [“CMD”, “curl”, “-f”, “http://localhost:8090/actuator/health/readiness”]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
environment:
# JVM 參數(shù),默認(rèn)為 -Xmx256m -Xms256m,可以根據(jù)實(shí)際情況做調(diào)整,置空表示不添加 JVM 參數(shù)
– JVM_OPTS=-Xmx256m -Xms256m
command:
– –spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
– –spring.r2dbc.username=halo
# PostgreSQL 的密碼,請(qǐng)保證與下方 POSTGRES_PASSWORD 的變量值一致。
– –spring.r2dbc.password=openpostgresql
– –spring.sql.init.platform=postgresql
# 外部訪問(wèn)地址,請(qǐng)根據(jù)實(shí)際需要修改
– –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=halonetworks:
halo_network:
此示例的PostgreSQL數(shù)據(jù)庫(kù)容器默認(rèn)沒(méi)有設(shè)置端口映射,如果需要在容器外部訪問(wèn)數(shù)據(jù)庫(kù),可以自行在halodb服務(wù)中添加端口映射,PostgreSQL的端口為5432。
(2)Halo + MySQL:
~/halo/docker-compose.yaml
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:
– “8090:8090”
healthcheck:
test: [“CMD”, “curl”, “-f”, “http://localhost:8090/actuator/health/readiness”]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
environment:
# JVM 參數(shù),默認(rèn)為 -Xmx256m -Xms256m,可以根據(jù)實(shí)際情況做調(diào)整,置空表示不添加 JVM 參數(shù)
– JVM_OPTS=-Xmx256m -Xms256m
command:
– –spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
– –spring.r2dbc.username=root
# MySQL 的密碼,請(qǐng)保證與下方 MYSQL_ROOT_PASSWORD 的變量值一致。
– –spring.r2dbc.password=o#DwN&JSa56
– –spring.sql.init.platform=mysql
# 外部訪問(wèn)地址,請(qǐng)根據(jù)實(shí)際需要修改
– –halo.external-url=http://localhost:8090/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:
# 請(qǐng)修改此密碼,并對(duì)應(yīng)修改上方 Halo 服務(wù)的 SPRING_R2DBC_PASSWORD 變量值
– MYSQL_ROOT_PASSWORD=o#DwN&JSa56
– MYSQL_DATABASE=halonetworks:
halo_network:
此示例的MySQL數(shù)據(jù)庫(kù)容器默認(rèn)沒(méi)有設(shè)置端口映射,如果需要在容器外部訪問(wèn)數(shù)據(jù)庫(kù),可以自行在 halodb 服務(wù)中添加端口映射,MySQL的端口為3306。
(3)Halo + H2:
注意:不推薦在生產(chǎn)環(huán)境使用默認(rèn)的H2數(shù)據(jù)庫(kù),這可能因?yàn)椴僮鞑划?dāng)導(dǎo)致數(shù)據(jù)文件損壞。如果因?yàn)槟承┰颍ㄈ鐑?nèi)存不足以運(yùn)行獨(dú)立數(shù)據(jù)庫(kù))必須要使用,建議按時(shí)備份數(shù)據(jù)。
~/halo/docker-compose.yaml
version: “3”services:
halo:
image: registry.fit2cloud.com/halo/halo:2.21
restart: on-failure:3
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 參數(shù),默認(rèn)為 -Xmx256m -Xms256m,可以根據(jù)實(shí)際情況做調(diào)整,置空表示不添加 JVM 參數(shù)
– JVM_OPTS=-Xmx256m -Xms256m
command:
# 外部訪問(wèn)地址,請(qǐng)根據(jù)實(shí)際需要修改
– –halo.external-url=http://localhost:8090/(4)使用外部數(shù)據(jù)庫(kù):
~/halo/docker-compose.yaml
version: “3”services:
halo:
image: registry.fit2cloud.com/halo/halo:2.21
restart: on-failure:3
network_mode: “host”
volumes:
– ./halo2:/root/.halo2
environment:
# JVM 參數(shù),默認(rèn)為 -Xmx256m -Xms256m,可以根據(jù)實(shí)際情況做調(diào)整,置空表示不添加 JVM 參數(shù)
– JVM_OPTS=-Xmx256m -Xms256m
command:
# 修改為自己已有的 MySQL 配置
– –spring.r2dbc.url=r2dbc:pool:mysql://localhost:3306/halo
– –spring.r2dbc.username=root
– –spring.r2dbc.password=
– –spring.sql.init.platform=mysql
# 外部訪問(wèn)地址,請(qǐng)根據(jù)實(shí)際需要修改
– –halo.external-url=http://localhost:8090/
# 端口號(hào) 默認(rèn)8090
– –server.port=8090
使用外部數(shù)據(jù)庫(kù)時(shí),需要提前手動(dòng)創(chuàng)建好數(shù)據(jù)庫(kù),以MySQL為例:
create database halo character set utf8mb4 collate utf8mb4_bin;
運(yùn)行參數(shù)詳解:
- spring.r2dbc.url:數(shù)據(jù)庫(kù)連接地址,詳細(xì)可查閱下方的 數(shù)據(jù)庫(kù)配置;
- spring.r2dbc.username:數(shù)據(jù)庫(kù)用戶(hù)名;
- spring.r2dbc.password:數(shù)據(jù)庫(kù)密碼;
- spring.sql.init.platform:數(shù)據(jù)庫(kù)平臺(tái)名稱(chēng),支持 postgresql、mysql、mariadb、h2;
- halo.external-url:外部訪問(wèn)鏈接,如果需要在公網(wǎng)訪問(wèn),需要配置為實(shí)際訪問(wèn)地址。
數(shù)據(jù)庫(kù)配置:
鏈接方式 | 鏈接地址格式 | 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} |
mariadb |
H2 Database | r2dbc:h2:file:///${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE |
h2 |
三、啟動(dòng)Halo服務(wù)
docker-compose up -d
實(shí)時(shí)查看日志:
docker-compose logs -f
用瀏覽器訪問(wèn)/console即可進(jìn)入Halo管理頁(yè)面,首次啟動(dòng)會(huì)進(jìn)入初始化頁(yè)面。
注意:如果需要配置域名訪問(wèn),建議先配置好反向代理以及域名解析再進(jìn)行初始化。如果通過(guò) http://ip:端口號(hào) 的形式無(wú)法訪問(wèn),請(qǐng)到服務(wù)器廠商后臺(tái)將運(yùn)行的端口號(hào)添加到安全組,如果服務(wù)器使用了Linux面板,請(qǐng)檢查此Linux面板是否有還有安全組配置,需要同樣將端口號(hào)添加到安全組。
四、更新容器組
1、備份數(shù)據(jù)。
2、更新Halo服務(wù)
修改docker-compose.yaml中配置的鏡像版本。
services:
halo:
image: registry.fit2cloud.com/halo/halo:2.21docker-compose up -d
五、反向代理
可以在下面的反向代理軟件中任選一項(xiàng),我們假設(shè)你已經(jīng)安裝好了其中一項(xiàng),并對(duì)其的基本操作有一定了解。
1、Nginx
upstream halo {
server 127.0.0.1:8090;
}
server {
listen 80;
listen [::]:80;
server_name www.yourdomain.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;
}
}
2、Caddy 2
www.yourdomain.com
encode gzip
reverse_proxy 127.0.0.1:8090
3、Traefik
更新halo容器組的配置
networks 中引入已存在的網(wǎng)絡(luò) traefik(此網(wǎng)絡(luò)需要提前創(chuàng)建);
services.halo.networks 中添加網(wǎng)絡(luò) traefik;
修改外部地址為你的域名;
聲明路由規(guī)則、開(kāi)啟 TLS。
version: “3.8”
networks:
traefik:
external: true
halo:services:
halo:
image: registry.fit2cloud.com/halo/halo:2.21
restart: on-failure:3
volumes:
– ./halo2:/root/.halo2
networks:
– traefik
– halo
command:
# 外部訪問(wèn)地址,請(qǐng)根據(jù)實(shí)際需要修改
– –halo.external-url=https://yourdomain.com
labels:
traefik.enable: “true”
traefik.docker.network: traefik
traefik.http.routers.halo.rule: Host(`yourdomain.com`)
traefik.http.routers.halo.tls: “true”
traefik.http.routers.halo.tls.certresolver: myresolver
traefik.http.services.halo.loadbalancer.server.port: 8090
-
廣告合作
-
QQ群號(hào):4114653