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:
- 环境地址:https://demo.halo.run
- 后台地址:https://demo.halo.run/console
- 用户名:
demo
- 密码:
P@ssw0rd123..
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的镜像,这里我们也要将这两个镜像一并删除,81d
和2d9
是镜像的IMAGE ID前三位,请对照上图。
现在,我们就将halo的所有文件都删除了,而且删除得很干净,就跟我们没有安装过halo一样。
总结
这是一种简单快捷的部署方式,适合初学者和小白用户。希望本文能对您有所帮助,如果您有任何问题或建议,请随时与我联系。谢谢!😊
评论区