安装 Halo 及配置反向代理|Install Halo
安装 Halo 及反代配置
0.前语
最近 Kevin 在安装博客程序时选用了 Halo , 并在群中提到 Halo 的一些特性. 在此之前虽然也看见过一些关于 Halo 的文章但没详细了解过, 他说过之后去了解了下, 原来可以 Docker 一键部署.
0.1 Halo 的搭建环境
- 0.1.1 系统环境:
Docker
或Java(JDK)
- 0.1.2 数据库:
H2 Database
或MySQL
这里演示在 Docker & MySQL 下的安装过程
1.拉取 Halo 镜像
- 目前最新的镜像 tag 是 1.4.7 故拉取 1.4.7
docker pull halohub/halo:1.4.7
2.创建Halo
工作文件夹&编辑 Halo
配置信息
- 2.1 创建
Halo
工作文件夹 mkdir -p /www/wwwroot/halo_ora && cd /www/wwwroot/halo_ora
- 2.2 编辑
Halo
配置信息- 2.2.1 下载基础配置文件至
Halo
工作文件夹内. curl -o application.yaml https://dl.halo.run/config/application-template.yaml
本来是用 wget 的, 结果在提交时被 WAF 拦截了, 故切换为 curl .- 配置文件样例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43server:
# 服务端口, 这里指的是容器内的端口不用改.
port: 8090
# 启用 gzip 压缩, 如果使用 nginx 或 apache 可以不开启.
compression:
enabled: false
spring:
datasource:
# H2 和 MySQL 二选一, 不用的注释掉或者直接删除即可.
# H2 数据库配置信息.
# driver-class-name: org.h2.Driver
# H2 数据库文件在容器内的位置
# url: jdbc:h2:file:~/.halo/db/halo
# username: admin
# password: 123456
# MySQL 数据库配置信息.
# MySQL 驱动不用更改
driver-class-name: com.mysql.cj.jdbc.Driver
# 后面会将 MySQL 容器链接到 Halo 容器故而直接写 db 了, 如果不是可以直接写 MySQL 的地址.
# halodb 是数据库名称, 注意数据库版本应为 5.7+ , 字符集与排序规则分别为 utf8mb4 和 utf8mb4_bin , 存储类型为 InnoDB
# 若时区与所在时区不同, 可以更改.
url: jdbc:mysql://db:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
# 数据库的用户名与密码
username: root
password: 123456
# H2 数据库控制台配置信息.
h2:
console:
settings:
web-allow-others: false
# 控制台位置
path: /h2-console
# 是否启用
enabled: false
halo:
# 管理客户端位置, 如为 admin, 则管理地址为 http://example.com/admin
admin-path: admin
# 缓存类型, memory 为内存, level 为本地缓存
cache: memory
- 2.2.1 下载基础配置文件至
3.启动Halo
容器
docker run -it -d --name halo -p 127.0.0.1:8090:8090 -v /www/wwwroot/halo_ora:/root/.halo --restart=unless-stopped halohub/halo:1.4.7
- 注: 这里监听的是本地回环地址的 8090 端口, 大家可自行更改. 如直接对外服务, 可删除本地回环地址.
- 创建文件夹 & 编辑 Halo 配置 以及启动容器
4.配置 Nginx
或 Caddy
反向代理
4.1
Nginx
配置样例:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16upstream halo {
server 127.0.0.1:8090;
}
server {
listen 80;
listen [::]:80;
server_name www.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;
}
}4.2
Caddy 1.x
配置样例1
2
3
4
5
6
7https://www.youdomain.com {
gzip
tls your@email.com
proxy / 127.0.0.1:8090 {
transparent
}
}4.3
Caddy 2.x
配置样例1
2
3
4
5www.youdomain.com
encode gzip
reverse_proxy 127.0.0.1:80904.4
Nginx
在宝塔中的配置样例- 路径: 站点
设置
->反向代理
->添加代理
- 路径: 站点
5. 安装完成
- 5.1 按照自己的信息填进去就行了
6. 结束语
- 作为一个博客程序, 很轻量且安装步骤非常简短, 这点要给开发者大大的赞!
- 响应速度非常快, 在查看部分加载流程之后发现大量使用了
CDN
服务, 对我来说这点要比隔壁的WordPress
要轻便很多, 许多静态资源直接引用就行了而不必引入到项目目录中. - 最让我喜欢的还是支持
MarkDown
编辑, 文章直接在本地编辑好发布就行了而不必再到后台中调整布局. 作为一个WordPress
十年老用户, 有的时候真的是恨铁不成钢. - 这两天经过优化之后, 除了动态内容之外, 一些静态资源我全部放置到了
CDN
上, 对于一台在美西的服务器来说, 能做的优化, 真的挺少的了. - 优化和后台配置我可能过两天再更文章, 也可能偷个懒不更, 看大家的是否有这个需要了.
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ora's Zone!
评论