A. 准备

京东云轻量云主机 2 核 2G 3M 1 年费用 58 元

域名三年费用 76 元

SSL 单域名证书 1 年 30 元(我是哈 per,其实可不用)

A.1. 服务器的选择

其他地区服务器:如果有朋友直接该类服务器进行搭建的话,那自然是方便的,像网络什么的都不用担心。如果是学生的话可以考虑申请 Github student package. 申请完后使用 Azure100 刀或者是 Ocean digital200 刀代金券可以使用,总的来说还是很划算的。但是 Github student package 并不好申请,我之前折腾了一个星期,被拒绝了三四次,才成功 (┬┬﹏┬┬)。

中国大陆地区服务器:我对比了好几个云服务厂商的,现在这个时期已经过去了之前的一个优惠时期了,看腾讯云阿里云的云服务器其实都不便宜。(阿里云有一个99 元/年2G2 核云服务器,可以续三年,这个优惠还可以)目前来说,就我搜到的国内的云服务优惠好像就京东云比较香了 本来我看京东云网站里有好几款,也很眼馋,第一想法是想买下面这类型的:

  • 轻量云主机 2 核 4G 5M 1 年 165 元
  • 轻量云主机 2 核 4G 5M 3 年 618 元

请原谅一个拥有仓鼠囤积症的人~,只不过最终由于囊中羞涩再加上第一次买云服务器心里没有底,所以就想着先入 58 元/年的 2G2 核轻量云服务器试一试。

A.2. 其他

Ubuntu20.04LTS 系统 (如果是京东云的, 你可以考虑用 CentOS 可能会更方便不容易出网络问题) Xshell(用于远程控制云服务器, 我觉得这个会方便一些, 京东云本身提供 Web Terminal登录VNC登录, 但是因为是网页 Tab 上我总觉得用着不顺, 如果嫌麻烦, 可以不装~)

E. 搭建 Halo 博客过程

参考官方文档使用 Docker Compose 部署 | Halo 文档

  1. 在系统任意位置创建一个文件夹,此文档以 ~/halo 为例。
1
mkdir ~/halo &&  cd ~/halo 
  1. 在用 docker-compose 拉取之前需要先创建一个 docker-compose. yaml 文件 官网提供了三种实例
    1. 创建 Halo + PostgreSQL 的实例
    2. 创建 Halo + MySQL 的实例
    3. 仅创建 Halo 实例(使用默认的 H2 数据库)官方不推荐在生产环境使用默认的 H2 数据库

本文采用第一种 Halo + PostgreSQL 路径: ~/halo/docker-compose.yaml

1
nano ~/halo/docker-compose.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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
version: "3"
services:
  halo:
    image: registry.fit2cloud.com/halo/halo:2.17
    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          
    command:
      - --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
      - --spring.r2dbc.username=halo
      #
      #
      #这里要修改哦
      # PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=openpostgresql  #password密码改一下,不要跟官方一样,其他什么都行,不然潜在危险
      - --spring.sql.init.platform=postgresql
      # 外部访问地址,请根据实际需要修改,根据你购买主机赠送你的ip地址进行修改
      # 比如我的是116.X.X.241,我下面这句话就改成- --halo.external-url=http://116.X.X.241:8090/
      - --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  #这里改成和上面spring.r2dbc.password一样的
      - POSTGRES_USER=halo
      - POSTGRES_DB=halo
      - PGUSER=halo
networks:
  halo_network:

官方文档出有写出具体的参数解释

参数名描述
spring.r2dbc.url数据库连接地址,详细可查阅下方的 数据库配置
spring.r2dbc.username数据库用户名
spring.r2dbc.password数据库密码
spring.sql.init.platform数据库平台名称,支持 postgresqlmysqlh2
halo.external-url外部访问链接,如果需要在公网访问,需要配置为实际访问地址
数据库配置:
链接方式链接地址格式
———–————————————————————
PostgreSQLr2dbc:pool:postgresql://{HOST}:{PORT}/{DATABASE}
MySQLr2dbc:pool:mysql://{HOST}:{PORT}/{DATABASE}
MariaDBr2dbc:pool:mariadb://{HOST}:{PORT}/{DATABASE}
H2 Databaser2dbc:h2:file:///${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE
3. 启动 Halo 服务
1
docker-compose up -d

这里我再次出现了网络问题, 阿里云镜像换源后也没有用, 虽然官方文档在一开始就说, 这个源是从他们自建的镜像库走的,

Responsive Image

image-20240729010125869

可是我死活下载不下来, 这里感谢 1panel 的镜像源, 大家不要恶意使用, 自从 6 月各大镜像源被关以后, 想找个好用的镜像源真难/(ㄒoㄒ)/~~, 感谢 1panel

跟之前同样的操作

1
sudo nano /etc/docker/daemon.json

daemon.json 文件中换成以下内容

1
2
3
{
  "registry-mirrors": ["https://docker.1panel.live"]
}

如果有朋友换完之后还是不行, 我能想到的只有利用阿里云的镜像仓库服务了, 可以自建一个镜像仓库去下载你上传好的 docker 镜像 到这里为止, 博客就大功告成了, 输入 http://{你的ip}:8090/console 就可以访问博客的后台了, 对了! 很重要的一点不能忘记, 在京东云对应服务器的页面把防火墙的 8090 端口打开, 否则访问不了.Responsive Image

image-20240729010930265
进入后台, 先注册一个管理员账号, 就可以编辑博客主题, 上传文章了. 输入 http://{你的ip}:8090/ 即为博客页面.