Halo1.0博客搭建

简介

Halo [ˈheɪloʊ],意为光环。当然,你也可以当成拼音读(哈喽)。
轻快,简洁,功能强大,使用 Java 开发的博客系统。

使用 Docker 部署 Halo

本篇教程以 CentOS 7.9 为例,其他系统大同小异。

环境要求

推荐的配置:

  • CentOS 7.x
  • 1G 以上内存

服务器配置

更新软件包

请确保服务器的软件包已经是最新的。

1
sudo yum update -y

创建 Halo 用户

推荐创建一个低权限的用户运行 halo

创建一个名为 halo 的用户(名字可以随意)

1
useradd -m halo

给予 sudo 权限

1
usermod -aG wheel halo

为 halo 用户创建密码

1
passwd halo

登录到 halo 用户

1
su - halo

配置 Docker 运行环境

安装Docker必要依赖
1
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加软件源信息
1
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新 yum 缓存
1
sudo yum makecache fast
安装 Docker
1
sudo yum install docker-ce docker-ce-cli containerd.io
启动 Docker 后台服务
1
sudo systemctl start docker
允许当前用户直接运行 docker 命令

需要将当前用户加入 docker 用户组。这样每次运行 docker 命令的时候,就不需要加 sudo

1
sudo usermod -aG docker halo(your_name)

注意:设置成功之后需要重新登录才会生效。

镜像加速
1
2
# 新建 daemon.json 文件
sudo vim /etc/docker/daemon.json

将下面的配置复制进去即可:

1
2
3
4
5
{
"registry-mirrors": ["http://hub-mirror.c.163.com" ,
"https://docker.mirrors.ustc.edu.cn" ,
"https://zxwb55s8.mirror.aliyuncs.com"]
}

注意:修改完配置文件之后需要执行 service docker restart 才可生效。

安装 Halo

自定义配置文件

考虑到部分用户的需要,可能需要自定义比如端口等设置项,我们提供了公共的配置文件,并且该配置文件是完全独立于安装包的。当然,你也可以使用安装包内的默认配置文件,但是安装包内的配置文件是不可修改的。请注意:配置文件的路径为 ~/.halo/application.yaml

1
2
# 下载配置文件到 ~/.halo 目录
curl -o ~/.halo/application.yaml --create-dirs https://dl.halo.run/config/application-template.yaml

修改配置文件

完成上一步操作,我们就可以自己配置 Halo 的运行端口,以及数据库相关的配置了。

1
2
# 使用 Vim 工具修改配置文件
vim ~/.halo/application.yaml

打开之后我们可以看到:

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
server:
port: 8090

# Response data gzip.
compression:
enabled: false
spring:
datasource:

# H2 database configuration.
driver-class-name: org.h2.Driver
url: jdbc:h2:file:~/.halo/db/halo
username: admin
password: 123456

# MySQL database configuration.
# driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
# username: root
# password: 123456

# H2 database console configuration.
h2:
console:
settings:
web-allow-others: false
path: /h2-console
enabled: false

halo:

# Your admin client path is https://your-domain/{admin-path}
admin-path: admin

# memory or level
cache: memory
  1. 如果需要自定义端口,修改 server 节点下的 port 即可。
  2. 默认使用的是 H2 Database 数据库,这是一种嵌入式的数据库,使用起来非常方便。需要注意的是,默认的用户名和密码为 admin123456,这个是自定义的,最好将其修改,并妥善保存。
  3. 如果需要使用 MySQL 数据库,需要将 H2 Database 的所有相关配置都注释掉,并取消 MySQL 的相关配置。另外,MySQL 的默认数据库名为 halodb,请自行配置 MySQL 并创建数据库,以及修改配置文件中的用户名和密码。
  4. h2 节点为 H2 Database 的控制台配置,默认是关闭的,如需使用请将 h2.console.settings.web-allow-othersh2.console.enabled 设置为 true。控制台地址即为 域名/h2-console。注意:非紧急情况,不建议开启该配置。
  5. server.compression.enabledGzip 功能配置,如有需要请设置为 true,需要注意的是,如果你使用 Nginx 或者 Caddy 进行反向代理的话,默认是有开启 Gzip 的,所以这里可以保持默认。
  6. halo.admin-path 为后台管理的根路径,默认为 admin,如果你害怕别人猜出来默认的 admin(就算猜出来,对方什么都做不了),请自行设置。仅支持一级,且前后不带 /
  7. halo.cache 为系统缓存形式的配置,可选 memorylevel,默认为 memory,将数据缓存到内存,使用该方式的话,重启应用会导致缓存清空。如果选择 level,则会将数据缓存到磁盘,重启不会清空缓存。如不知道如何选择,建议默认。

拉取最新 Halo 镜像

1
sudo docker pull ruibaby/halo

创建容器并运行

1
docker run --rm -it -d --name halo -p 8090:8090  -v ~/.halo:/root/.halo ruibaby/halo
  1. –rm:停止之后自动删除容器。
  2. –name:容器名。
  3. -p:占用端口,前者为宿主机端口,后者为 Halo 的运行端口,可在 application.yaml 配置。
  4. -v:目录映射,一般不要修改。

完成以上操作即可通过 ip:端口 访问了。不过在此之前,最好先完成后续操作,我们还需要让域名也可以访问到 Halo,请继续往下看。

更新 Halo 版本

1
2
3
4
5
6
7
8
# 停止容器
sudo docker stop halo

# 拉取最新的 Halo 镜像
sudo docker pull ruibaby/halo

# 创建容器
docker run --rm -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo ruibaby/halo

配置域名访问

预备条件

1、请确保域名已经成功解析到服务器 IP,可以通过ping域名看是否成功。

2、请检查服务器的 80 和 443 端口是否开放。

3、请开放宿主机端口,我上面的是8090。

使用 Caddy 进行反向代理

Caddy 是一款使用 Go 语言开发的 Web 服务器。其配置更为简洁,并可以自动申请及配置 SSL 证书(推荐)。

也可以用Nginx反向代理,具体可以参考

安装 Caddy

1
2
# 安装 Caddy 软件包
yum install caddy -y

配置 Caddy

1
2
# 下载 Halo 官方的 Caddy 配置模板
curl -o /etc/caddy/conf.d/Caddyfile.conf --create-dirs https://dl.halo.run/config/Caddyfile

下载完成之后,我们还需要对其进行修改。

1
2
# 使用 vim 编辑 Caddyfile
vim /etc/caddy/conf.d/Caddyfile.conf

打开之后我们可以看到

1
2
3
4
5
6
7
https://www.simple.com {
gzip
tls xxxx@xxx.xx
proxy / localhost:port {
transparent
}
}
  1. 请把 https://www.simple.com 改为自己的域名。
  2. tls 后面的 xxxx@xxx.xx 改为自己的邮箱地址,这是用于自动申请 SSL 证书用的。需要注意的是,不需要你自己配置 SSL 证书,而且会自动帮你续签。
  3. localhost:port 请将 port 修改为 Halo 的运行端口,默认为 8090。

比如我的

1
2
3
4
5
6
7
felicx.xyz {
gzip
tls xxx@xxx.com
proxy / localhost:8090 {
transparent
}
}

修改完成之后启动 Caddy 服务即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 开启自启 Caddy 服务
systemctl enable caddy

# 启动 Caddy
service caddy start

# 停止运行 Caddy
service caddy stop

# 重启 Caddy
service caddy restart

# 查看 Caddy 运行状态
service caddy status

到这一步你就能通过域名访问了,这是我的博客


©2018 - Felicx 使用 Stellar 创建
总访问 113701 次 | 本页访问 326
共发表 83 篇Blog · 总计 127.5k 字