侧边栏壁纸
  • 累计撰写 27 篇文章
  • 累计创建 28 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

教你使用docker搭建一个自己的博客——Halo

煙花巷陌
2023-10-19 / 0 评论 / 0 点赞 / 96 阅读 / 0 字
广告 广告

halo是一款现代化的开源博客/CMS系统,它基于Java Spring Boot构建,支持多种数据库和主题,拥有简洁美观的界面和强大易用的功能。如果您想快速部署一个个人博客或网站,halo是一个不错的选择。

docker-compose是一个用于定义和运行多容器应用程序的工具,它可以让您使用YML文件来配置应用程序的服务,然后使用一个命令来创建和启动所有的服务。使用docker-compose可以让您更方便地管理和扩展您的应用程序。

反向代理是一种服务器,它位于web服务器的前端,接收来自客户端的请求,并将其转发给后端的web服务器。反向代理可以提供负载均衡、缓存、安全、压缩等功能,提高web服务器的性能和安全性。

在本文中,我们将使用docker-compose来搭建一个包含halo和mysql的应用程序,并配置反向代理,实现域名绑定和SSL证书申请。

halo官网:https://www.halo.run/

halo官方文档:https://docs.halo.run/

准备工作:

服务器一台。

# 更新系统,并安装我们所需的工具
apt-get update && apt-get install -y wget vim

域名一枚。如果你没有自己的域名,可以参考我的这两篇申请免费域名的文章。【教你申请pp.ua免费域名】,【eu.org真正永久免费的域名】,【如何使用cloudflare来进行域名解析

搭建好Nginx Proxy Manager。如果你不会搭建,请参考我的这篇文章。【Nginx Proxy Manager —— 抛弃宝塔面板让你更优雅的进行反向代理

确保服务器以及安装了docker和docker-compose

安装docker

Docker 安装文档:https://docs.docker.com/engine/install/

wget -qO- get.docker.com | bash

# 查看docker版本
docker -v

安装docker-compose

docker-compose官方文档:https://docs.docker.com/compose/install/

方法一

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

升级的话,只需要修改为最新版本的版本号,再执行一下这条代码就可以了。比如:

sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

方法二

如果下载不成功,你可以到docker-compose的官方库下载最新版本,然后上传到/usr/local/bin这个路径下。

https://github.com/docker/compose/releases

再给docker-compose分配个权限

sudo chmod +x /usr/local/bin/docker-compose

更新同样可以这样操作,下载最新版本,删除旧版本,再给个权限。

做好准备工作之后,我们现在就正式开始搭建halo。

步骤一:创建工作目录

首先,我们需要在服务器上创建一个工作目录,用于存放我们的配置文件和数据文件。您可以根据您的喜好选择任意位置,例如:

# 创建安装目录
mkdir -p /root/docker_project/halo
cd /root/docker_project/halo

步骤二:创建docker-compose配置文件

接下来,我们需要下载halo的配置文件,并根据我们的需求进行编辑。

vim docker-compose.yml

然后,我们可以使用vim或其他编辑器来修改配置文件。主要需要修改的部分有,请参考官方文档进行配置。

以下是一个示例配置文件:

version: "3"

services:
  halo:
    image: halohub/halo:2.10
    container_name: halo
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - ./:/root/.halo2
    ports:
    # 左边监听端口可以根据自己的喜好修改,默认是8090,我这里习惯用8880,右边保持默认。
      - "8880: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=halo210
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=https://xxx.com/

  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:
      - ./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=halo210
      - MYSQL_DATABASE=halo
      
networks:
  halo_network:

esc 键推出编辑模式之后,输入 :wq 保持并推出。

步骤三:运行docker-compose文件

接下来,我们需要运行docker-compose.yml文件,来安装配置文件里的halo和mysql程序。

首先,查看自定义的8880端口是否被占用

lsof -i:8880

没有返回任何信息说明端口没有被占用,当你看到有一个程序正在这个端口上运行,说明端口以及被占用,这是需要我们在docker-compose文件里修改端口。如果返回我们 -bash: lsof: command not found 说明你没有安装lsof,运行下面的命令安装即可。

apt install lsof

确保没有问题之后,现在我们就可以来运行docker-compose文件了,输入以下命令:

docker-compose up -d

它就会去拉取最新的镜像,等待它完成之后,这时其实你就在浏览器里可以使用 http://IP:端口 访问halo博客系统了。

实时查看日志:

docker-compose logs -f

查看docker运行的所有镜像:

docker ps

步骤四:设置反向代理

使用 http://IP:端口 的方式来访问halo并不安全,也不是我们最终想达到的效果,所以我们需要来设置反向代理。据我观察,网上很多教程推荐使用宝塔面板来设置反向代理,不能说不行,只能说太繁琐,这里我推荐各位使用Nginx Proxy Manager来实现反向代理,如果你没有Nginx Proxy Manager或者不知道怎么使用,你可以参考这篇文章。【Nginx Proxy Manager —— 抛弃宝塔面板让你更优雅的进行反向代理】

当你完成所有操作之后,现在你就可以使用自己的域名来访问halo了。

第五步:登录halo后台

使用自己的域名 /console 访问halo后台,第一次进入后台会让我没配置账号、密码、邮箱,以及站点标题,根据自己的喜好设置就行。

halo官方提供了在线体验的demo:

halo后台

现在,我们halo博客系统就搭建完成了,也意味着你已经有一个自己的个人博客了,你可以在自己的个人博客里做任何自己想做的事情!(一定要合法哦)😄

更新

现在halo的最新版本时2.10,这时肯定就有看官老爷会问:“怎么更新呀?”

别着急,使用docker-compose搭建halo,更新其实非常简单。跟着以下步骤,一步一步操作:

# 第一步:进入halo的docker-compose配置文件所在的文件夹
cd /root/docker_project/halo

# 第二步:停止halo服务
docker-compose down

# 第三步:返回上一级
cd ..

# 第四步:备份
cp -r ./halo/ ./halo.archive

# 第五步:再次进入halo文件夹
cd ./halo/

# 第六步:修改配置文件,将image: halohub/halo:2.10修改为最新版,比如image: halohub/halo:2.11,保存并退出
vim docker-compose.yml

# 第七步:拉取最新版本镜像
docker-compose pull halo

# 第八步:启动镜像
docker-compose up -d

# 第九步:删除不再使用的docker镜像
docker image prune

这时,你的halo版本就是最新版本了,以后升级方法也是一样。

卸载

卸载的方法也非常简单,这就是使用docker来搭建服务的优点,主打的就是一个简单,容易上手。

第一步:移动到halo的docker-compose.yml文件所在的文件目录下

cd /root/docker_project/halo

第二步:停止halo服务

docker-compose down

第三步:返回上一级目录

cd ..

第四步:删除文件夹

rm -rf ./halo/

第五步:查看安装halo时安装的docker镜像文件

docker images

第六步:删除对应的docker镜像文件

docker rmi 81d
docker rmi 2d9

因为我们拉取了halo和mysql的镜像,这里我们也要将这两个镜像一并删除,81d2d9是镜像的IMAGE ID前三位,请对照上图。

现在,我们就将halo的所有文件都删除了,而且删除得很干净,就跟我们没有安装过halo一样。

总结

这是一种简单快捷的部署方式,适合初学者和小白用户。希望本文能对您有所帮助,如果您有任何问题或建议,请随时与我联系。谢谢!😊

0
广告 广告

评论区