Halo博客搭建小记

准备工作

  • 阿里云服务器,操作系统为CentOS 7.9.2009 x86_64(Py3.7.9)
  • 宝塔面板
  • Nginx 1.24.0(用于反向代理)
  • 已备案的域名
  • ssl证书(https访问)

参考官方文档,这里使用 Docker Compose 进行部署

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

一、安装Docker和Docker Compose

1、使用宝塔面板Docker

在宝塔面板点击安装

等待安装完成

2、使用ssh远程命令安装Docker Compose

安装Docker-Compose之前,请先安装python-pip

shell 复制代码
yum install python-pip -y

再执行

shell 复制代码
pip install docker-compose

虽然报错了,但是显示还是安装成功了

使用以下命令可以查看安装的版本

shell 复制代码
docker -v
docker-compose -v

二、创建容器组

1、新建文件夹

这里选择在home中新建halo文件夹

shell 复制代码
# 创建文件夹
mkdir /home/halo
# 进入到目录
cd /home/halo

# 也可以直接使用宝塔面板图形化操作

注意:后续操作中,Halo 产生的所有数据都会保存在这个目录,请妥善保存。

2、创建 docker-compose.yaml

在/home/halo中新建docker-compose.yaml文件,文件内容如下(这里选择的是创建 Halo + MySQL 的实例:

yaml 复制代码
version: "3"

services:
  halo:
    image: halohub/halo:2.15
    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: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/

  halodb:
    image: mysql:8.1.0
    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:
      - ./mysql:/var/lib/mysql
      - ./mysqlBackup:/data/mysqlBackup
    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:

下次试试(仅创建 Halo 实例(使用已有外部数据库,MySQL 为例))这种方法。

3、启动 Halo 服务

注意,以下两条命令要在halo目录下执行。

shell 复制代码
docker-compose up -d

实时查看日志(可选):

shell 复制代码
docker-compose logs -f

4、进入 Halo 管理页面

先放行端口

注意:访问前需要再阿里云安全组中放行端口,需要放行的端口就是docker-compose.yaml中外网访问的那个端口,这里为8090.

最好是在阿里云和宝塔面板的安全组中都给放行,不然可能通过http://ip:8090时访问不了。

shell 复制代码
# docker-compose.yaml文件内容

# 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/

再访问Halo 管理页面

进入Halo 管理页面

shell 复制代码
# 浏览器网址栏输入ip+端口号
# 例如:
192.168.1.1:8090

# 注意:因为是用http访问的,如果无法访问时浏览器地址栏中是https,那就把s删掉,
# 例如:
https://192.168.1.1:8090/
删掉s,使用http访问
http://192.168.1.1:8090/

进入之后是这个页面:

接下来就可以按照提示进行初始化了

现在就可以使用halo博客了,但是只能通过ip+端口的方式访问。如果有已备案的域名的话,可以添加反向代理,通过域名访问。

三、反向代理

使用宝塔面板,方便快捷。

依次点击,网站->PHP项目->添加站点,输入域名后点击确定创建站点。

创建好站点后,点击右边的设置,找到反向代理,添加反向代理。

本来反向代理设置好就可以用域名访问了,但是我这里不知道什么原因,需要部署ssl证书之后才能访问

相关推荐
虞泽18 天前
鸢尾博客项目开源
java·spring boot·vue·vue3·博客
明月登楼1 个月前
使用 CDN 后 Apache 的日志记录客户真实 IP
服务器·apache·博客·cdn·客户真实ip地址·独立博客
苹果醋32 个月前
毕业设计_基于SpringBoot+vue的社区博客系统【源码+SQL+教程+可运行】41002
java·毕业设计·博客
明明明h2 个月前
复制他人 CSDN 文章到自己的博客
博客·csdn
寒山李白2 个月前
VuePress搭建文档网站/个人博客(详细配置)主题配置-侧边栏配置
前端·vue.js·vue·博客·vuepress·网站
尸僵打怪兽2 个月前
后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0920)
前端·javascript·vue.js·elementui·axios·博客·后台管理系统
Code成立2 个月前
HTML5精粹练习第1章博客
前端·html·博客·html5
和风coding4 个月前
如何通过阿里云服务器部署hexo博客(超详细)
java·服务器·前端·c++·阿里云·云计算·博客
PeterJXL4 个月前
自建搜索引擎-基于美丽云
搜索引擎·博客·博客搭建·vuepress·美丽云
Gzzz__4 个月前
百度、谷歌、必应收录个人博客网站
博客·hexo·butterfly