halo是一款现代化的开源博客系统,它基于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 nano
域名一枚。
确保服务器安装了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/
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
升级的话,只需要修改为最新版本的版本号,再执行一下这条代码就可以了。比如:
curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
做好准备工作之后,我们现在就正式开始搭建halo。
步骤一:创建工作目录
首先,我们需要在服务器上创建一个工作目录,用于存放我们的配置文件和数据文件。您可以根据您的喜好选择任意位置,例如:
# 创建安装目录
mkdir -p /root/docker_project/halo
cd /root/docker_project/halo
步骤二:创建docker-compose配置文件
接下来,我们需要下载halo的配置文件,并根据我们的需求进行编辑。
nano docker-compose.yml
然后,我们可以使用编辑器来修改配置文件。主要需要修改的部分有,请参考官方文档进行配置。
以下是一个示例配置文件:
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:
步骤三:运行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
( 或者把docker-compose up -d 换成:
docker compose pull && docker compose up -d也行)
它就会去拉取最新的镜像,等待它完成之后,这时其实你就在浏览器里可以使用 http://IP:端口 访问halo博客系统了。
实时查看日志:
docker-compose logs -f
查看docker运行的所有镜像:
docker ps
步骤四:设置反向代理
使用 http://IP:端口的方式来访问并不安全,也不是我们最终想达到的效果,所以我们需要设置反向代理。可以用 nginx或caddy做反向代理。
当你完成所有操作之后,现在你就可以使用自己的域名来访问halo了。
第五步:登录halo后台
使用自己的域名 /console 访问halo后台,第一次进入后台会要求配置账号、密码、邮箱,以及站点标题,根据自己的喜好设置就行。
halo官方提供了在线体验的demo:
环境地址:https://demo.halo.run
后台地址:https://demo.halo.run/console
用户名:demo
密码:P@ssw0rd123..
现在,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的镜像,这里我们也要将这两个镜像一并删除,81d和2d9是镜像的IMAGE ID前三位,请对照上图。
现在,我们就将halo的所有文件都删除了,而且删除得很干净,就跟我们没有安装过halo一样。
使用docker搭建是一种简单快捷的部署方式,适合初学者和小白用户。
我搭建的演示网站: brite.com.mp
不过这个博客程序不支持嵌入iframe codes.
No comments:
Post a Comment