缘由:博主近期手痒,想搞个BBS自己玩,于是翻遍开源,最终选择有了Halo

废话不多说,现在开始教程

前提准备:根据Halo要求,需要有以下硬性条件

  1. 服务器一台(购买链接

  2. 数据库一台

  3. 域名(含SSL)一个

一、购买ECS

近期阿里云搞新老用户福利,2核2G3M带宽,40G硬盘服务器,一年99元,并可以以99元连续续费3年

活动地址如下:https://www.aliyun.com/daily-act/ecs/activity_selection?scm=20140722.M_10071131.P_149.MO_2274-ID_10071131-MID_10071131-CID_30876-ST_9607-V_1&source=5176.11533457&userCode=pv68crmc

系统的选择:推荐 Ubuntu 或者阿里云的 Alibaba Cloud Linux ,版本嘛,选最新的就行

  1. 修改hostname(可以不改,我个人觉得阿里云自带的hostname太长)

[root@127basdnas213~]# vi /etc/hostname 

# 删除hostname原有的配置,改成自己喜欢的名字 

# wq 保全 

# 更新配置或重启 

[root@127basdnas213~]# source /etc/hostname 

[root@127basdnas213~]# reboot 

  1. 更新组件

[root@south ~]# yum update -y 

二、搭建Docker和Docker-Compose

  1. 安装 docker

# step 1: 安装必要的一些系统工具
[root@south ~]# sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# Step 2: 添加软件源信息
[root@south ~]# sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# Step 3
[root@south ~]# sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

# Step 4: 更新并安装Docker-CE
[root@south ~]# sudo yum makecache 
[root@south ~]# sudo yum -y install docker-ce

# Step 4: 开启Docker服务
[root@south ~]# sudo service docker start

# 注意:
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
# [root@south ~]# vim /etc/yum.repos.d/docker-ce.repo
#   将[docker-ce-test]下方的enabled=0修改为enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# [root@south ~]# yum list docker-ce.x86_64 --showduplicates | sort -r
#   Loading mirror speeds from cached hostfile
#   Loaded plugins: branch, fastestmirror, langpacks
#   docker-ce.x86_64               3:24.0.7-1.el8                  docker-ce-stable 
#   docker-ce.x86_64               3:24.0.7-1.el8                  @docker-ce-stable
#   docker-ce.x86_64               3:24.0.6-1.el8                  docker-ce-stable 
#   docker-ce.x86_64               3:24.0.5-1.el8                  docker-ce-stable 
#   docker-ce.x86_64               3:24.0.4-1.el8                  docker-ce-stable 
#   docker-ce.x86_64               3:24.0.3-1.el8                  docker-ce-stable 
#   docker-ce.x86_64               3:24.0.2-1.el8                  docker-ce-stable 
#   docker-ce.x86_64               3:24.0.1-1.el8                  docker-ce-stable 
#   docker-ce.x86_64               3:24.0.0-1.el8                  docker-ce-stable 
#   docker-ce.x86_64               3:23.0.6-1.el8                  docker-ce-stable 
#   docker-ce.x86_64               3:23.0.5-1.el8                  docker-ce-stab
#   Available Packages
# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
# [root@south ~]# sudo yum -y install docker-ce-[VERSION]

安装校验

[root@south ~]# docker version
Client: Docker Engine - Community
 Version:           24.0.7
 API version:       1.43
 Go version:        go1.20.10
 Git commit:        afdd53b
 Built:             Thu Oct 26 09:09:18 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          24.0.7
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.10
  Git commit:       311b9ff
  Built:            Thu Oct 26 09:08:20 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.26
  GitCommit:        3dd1e886e55dd695541fdcd67420c2888645a495
 runc:
  Version:          1.1.10
  GitCommit:        v1.1.10-0-g18a0cb0
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

  1. 安装docker-compose

式一:服务器使用curl从GitHub下载对应版本,并安装

# 下载docker-compose
[root@south ~]# sudo curl -L "https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 赋予执行权限
[root@south ~]# sudo chmod +x /usr/local/bin/docker-compose

# 建立软链接
[root@south ~]# sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 测试
[root@south ~]# docker-compose --version

方式二:本地从GitHub下载对应版本:https://github.com/docker/compose/releases/tag/v2.21.0,并上传到服务器的目录(可以在root目录下,也可以在其他目录)

查看服务器对应的版本

[root@south ~]# uname -s
Linux
[root@south ~]# uname -m
x86_64

本服务器使用的是v2.21.0版本的:docker-compose-linux-x86_64

[root@south ~]# mv docker-compose-linux-x86_64  /usr/local/bin/docker-compose

# 赋予执行权限
[root@south ~]# sudo chmod +x /usr/local/bin/docker-compose

# 建立软链接
[root@south ~]# sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 测试
[root@south ~]# docker-compose --version

三、Docker镜像仓库

仓库地址:https://hub.docker.com/

四、安装Halo(数据库采用Mysql)

  1. 在系统根目录下面建立一个文件夹

[root@south ~]# mkdir /software

[root@south ~]# mkdir /software/halo

[root@south ~]# mkdir /software/halo/data
  1. 给文件夹赋予权限

[root@south ~]# chmod -R 777 /software/halo

[root@south ~]# chmod -R 777 /software/halo/data
  1. 在目录:/software/halo,下新增一个docker-compose.yaml

[root@south halo]# vim docker-compose.yaml
# 新增一下内容
version: "3"
services:
  halo:
    image: halohub/halo:2.11
    container_name: halo
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
	# 持久化数据目录
    volumes:
      - /software/halo/data:/root/.halo2
    ports:
      - "80:8090"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://112.124.14.174/actuator/health/readiness"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s
    command:
      - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
      - --spring.r2dbc.username=root
      # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=vivioning
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://112.124.14.174

  halodb:
    image: mysql:8.1.0
    container_name: halodb
    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:
      - /software/mysql/data:/var/lib/mysql
      - /software/mysql/backup:/data/mysqlBackup
    ports:
      - "3306: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=vivioning
      - MYSQL_DATABASE=halo

networks:
  halo_network:

运行&测试

[root@south halo]# docker-compose up -d

查看日志

[root@south halo]# docker-compose logs -f halo

不为明天而烦恼,不为昨天而叹息,只为今天更美好