Halo Blog 折腾记录

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 通过 Halo 开源建站工具部署一个属于自己的博客!本文记录了 Halo 2.0 版本的建站过程,方便大家在使用 Docker Compose 部署 Halo 时进行参考。如有版本更新会看心情进行内容修改。

部署 Docker

Docker 安装可以参考 Docker 官网安装指导,本次以 CentOS 为例
Docker 安装文档: https://docs.docker.com/engine/install/centos/

使用脚本安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

Docker 配置开机自启

# 开机自启
sudo systemctl enable docker.service

# 启动 Docker
sudo systemctl start docker.service

非 root 用户使用 Docker

当然,不这样做可以在执行 Docker 指令前加 sudo
# 通过将用户添加到 docker 用户组可以将 sudo 去掉

# 创建组
sudo groupadd docker

# 将用户添加到 docker 用户组
sudo usermod -aG docker $USER

# 更新用户组,或注销并重新登陆
newgrp docker

配置镜像加速器

以下两种任选其一即可,因本次使用为腾讯云服务器,所以使用第二种:
阿里云容器镜像服务
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
腾讯云软件源加速服务
https://cloud.tencent.com/document/product/213/8623
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
   "registry-mirrors": [
       "https://mirror.ccs.tencentyun.com"
  ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

使用 Docker Compose 部署 Halo

创建容器组

下载容器镜像

因 Halo 2.0 不兼容 1. x 版本,Halo 2.0 未更新 Docker 的 latest 标签镜像,所以为防止误操作,在使用 Halo 镜像时需要指定固定版本的标签

例如:halohub/halo:2.2.0
MySQL :mysql:8.0.32

docker pull halohub/halo:2.2.0

docker pull mysql:8.0.32

创建 Halo 的根目录

mkdir ~/halo && cd ~/halo

创建 Halo+MySQL 的实例

为了更加方便的管理配置,所有与 Halo 相关的配置都使用 Docker 环境变量代替,所以无需创建 application. yaml 文件
~/halo/docker-compose.yaml
version: "3"

services:
  halo:
    image: halohub/halo:2.3.0
    container_name: halo
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - ./:/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/
      # 初始化的超级管理员用户名
      - --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: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:

启动 Halo 服务

docker-compose up -d     # -d 表示后台运行

docker compose up -d     # 如果你用的是 docker-compose-plugin 的话,用这条命令

实时查看日志

# 如有问题使用下面命令查看日志
docker compose logs -f

更新容器组

停止运行中的容器组

cd ~/halo && docker-compose down

备份数据(重要)

# `halo.archive` 仅为示例,不一定要根据此文档命名
cp -r ~/halo ~/halo.archive

更新 Halo 服务

修改  docker-compose.yaml 中配置的镜像版本
services:
  halo:
    image: halohub/halo:2.3.0
    container_name: halo
docker-compose pull
docker-compose up -d
# 或着 ↓
docker compose up -d 

配合 Nginx Proxy Manager 使用反向代理

简介

顾名思义,Nginx Proxy Manager 就是一个 Nginx 的代理管理器,它最大的特点是简单方便。
即使是没有 Nginx 基础的小伙伴,也能轻松地用它来完成反向代理的操作,而且因为自带面板,操作极其简单,非常适合配合 Docker 搭建的应用使用。
Nginx Proxy Manager 后台还可以一键申请 SSL 证书,并且会自动续期,方便省心。
下面我们就来介绍如何用 Nginx Proxy Manger 来配合 Halo,实现反向代理和 HTTPS 访问。

安装 Nginx Proxy Manager

创建一个目录来存放 NPM 的 docker-compose.yml 文件

mkdir ~/nginxproxymanager && cd ~/nginxproxymanager   # 创建一个 npm 的文件夹; 进入该文件夹

vim docker-compose.yml

粘贴填入下面的内容

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'   # 中文版 chishin/nginx-proxy-manager-zh:latest
    container_name: npm
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

注:安装了 NPM 之后,就不需要再安装 Nginx 了,否则会端口冲突(不建议修改 NPM 的 80、443 端口)

启动 NPM

docker-compose up -d     # -d 表示后台运行

docker compose up -d     # 如果你用的是 docker-compose-plugin 的话,用这条命令

配置 Halo 的反向代理

不出意外,此时已经可以通过 http://<url>:81 访问 NPM 的网页端了
不清楚自己当前服务器的 IP 地址,可以通过 curl ip.sb 命令查询,需要注意防火墙端口是否对应打开

默认的管理员用户:

Email:    admin@example.com
Password: changeme

第一次登陆会提示更改用户名和密码,建议修改一个复杂一点的密码。
至此,我们已经完成了 Nginx Proxy Manager 的搭建,之后就可以用它给我们的 Halo 或者其他 Web 应用做反向代理了。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
网络协议 Windows
解决GitHub Pages制作的个人博客无法访问的问题
最近一段时间应该有很多小伙伴发现自己辛苦做的个人博客无法访问了吧。
|
5月前
|
JavaScript 资源调度 Linux
Linux系统之部署Blog-Index导航页
【6月更文挑战第3天】Linux系统之部署Blog-Index导航页
80 4
|
6月前
|
安全 Apache 数据库
如何在Win系统从零开始搭建Z-blog网站,并将本地博客发布到公网可访问
如何在Win系统从零开始搭建Z-blog网站,并将本地博客发布到公网可访问
100 0
|
6月前
Hue安装错误集锦 系统自带的镜像源搞了好久不行,换成sohu的
Hue安装错误集锦 系统自带的镜像源搞了好久不行,换成sohu的
48 0
|
数据安全/隐私保护 Windows
sqli-lab 通过笔记(实时更新)
sqli-lab 通过笔记(实时更新)
28 0
|
开发工具 git Ruby
|
JSON 小程序 IDE
|
资源调度 JavaScript 前端开发
|
程序员 开发工具 git
搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门
喜欢写Blog的人,会经历三个阶段。   第一阶段,刚接触Blog,觉得很新鲜,试着选择一个免费空间来写。   第二阶段,发现免费空间限制太多,就自己购买域名和空间,搭建独立博客。   第三阶段,觉得独立博客的管理太麻烦,最好在保留控制权的前提下,让别人来管,自己只负责写文章。
3457 0