创建安装目录

创建一下安装的目录:

1
2
3
4
5
sudo -i

mkdir -p /root/data/docker_data/halo

cd /root/data/docker_data/halo

这边我们直接用 docker 的方式安装。

1
vim docker-compose.yml

英文输入法下,按 i

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
version: "3"

services:
halo:
image: halohub/halo:2.2.0
container_name: halo
restart: on-failure:3
depends_on:
halodb:
condition: service_healthy
networks:
halo_network:
volumes:
- ./:/root/.halo2
ports:
- "8090:8090"
command:
- --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
- --spring.r2dbc.username=root
# MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
- --spring.r2dbc.password=o#DwN&JSa56
- --spring.sql.init.platform=mysql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://localhost:8090/
# 初始化的超级管理员用户名
- --halo.security.initializer.superadminusername=admin
# 初始化的超级管理员密码
- --halo.security.initializer.superadminpassword=P@88w0rd

halodb:
image: mysql:8.0.31
container_name: halodb
restart: on-failure:3
networks:
halo_network:
command:
- --default-authentication-plugin=mysql_native_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --explicit_defaults_for_timestamp=true
volumes:
- ./mysql:/var/lib/mysql
- ./mysqlBackup:/data/mysqlBackup
ports:
- "3306"
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
interval: 3s
retries: 5
start_period: 30s
environment:
# 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
- MYSQL_ROOT_PASSWORD=o#DwN&JSa56
- MYSQL_DATABASE=halo

networks:
halo_network:

注意:docker-compose.yml 里面的--halo.external-url=http://localhost:8090/ ,其中的http://localhost:8090/需要更改为你的域名,如果你打算用的域名是abc.com也就是要改成--halo.external-url=https://abc.com

版本号2.6.0,可以看这边:https://github.com/halo-dev/halo/releases 保证自己是新版本~

接着,千万记得改密码!!!

打开服务器防火墙(非必需)并访问网页

打开防火墙的端口 8090
查看端口是否被占用(以 8090 为例),输入:

1
lsof -i:8090  #查看 8090 端口是否被占用,如果被占用,重新自定义一个端口

如果啥也没出现,表示端口未被占用,我们可以继续下面的操作了~

如果出现:

1
-bash: lsof: command not found

运行:

1
apt install lsof  #安装 lsof

如果端口没有被占用(被占用了就修改一下端口,比如改成 8081,注意 docker 命令行里和防火墙都要改)

最后:

1
2
3
cd /root/data/docker_data/halo    # 来到 dockercompose 文件所在的文件夹下

docker-compose up -d

理论上我们就可以输入 http://ip:8090 访问安装了。
注意:

1、不知道服务器 IP,可以直接在命令行输入:curl ip.sb,会显示当前服务器的 IP。

2、遇到访问不了的情况,请再次检查在宝塔面板的防火墙和服务商的后台防火墙是否打开对应了端口。

5.4 更新 halo

1
2
3
4
5
6
7
8
9
10
11
cd /root/data/docker_data/halo

docker-compose down

cp -r /root/data/docker_data/halo /root/data/docker_data/halo.archive # 万事先备份,以防万一

docker-compose pull

docker-compose up -d # 请不要使用 docker-compose stop 来停止容器,因为这么做需要额外的时间等待容器停止;docker-compose up -d 直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。

docker image prune # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像

提示:

1
2
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N]

输入 y

利用 Docker 搭建的应用,更新非常容易~

5.5 卸载 halo

1
2
3
4
5
6
7
cd /root/data/docker_data/halo

docker-compose down

cd ..

rm -rf /root/data/docker_data/halo # 完全删除映射到本地的数据

可以卸载得很干净。

反向代理

利用 Nginx Proxy Manager

在添加反向代理之前,确保你已经完成了域名解析.
之后,登陆 Nginx Proxy Manager(不会的看这个: 安装 Nginx Proxy Manager

注意:

Nginx Proxy Manager(以下简称 NPM)会用到 80443 端口,所以本机不能占用(比如原来就有 Nginx)

IP 填写:

如果 Nginx Proxy Manager 和 halo 在同一台服务器上,可以在终端输入:

1
ip addr show docker0

查看对应的 Docker 容器内部 IP。
否则直接填 halo 所在的服务器 IP 就行。
然后就可以用域名来安装访问了。

注意:docker-compose.yml 里面的--halo.external-url=http://localhost:8090/ ,其中的http://localhost:8090/需要更改为你的域名,如果你的域名是abc.com也就是要改成--halo.external-url=https://abc.com