Administrator
发布于 2023-07-13 / 21 阅读 / 0 评论 / 0 点赞

Docker搭建Halo博客(image 版本2.7)

适合小白、简洁美观戳中了我的需求,而且我自己一直有想搭建博客的想法,于是尝试部署后发现,Halo 正是我所想要的那种博客平台

个人博客,我想很少会有人把它部署在mac和windows上吧。作为一名NAS用户,用的最多的就是 Docker,所以本教程我主要讲在 Docker 上部署 Halo
好,废话不多说,让我们正式开始安装

Docker部署

1. 首先在你存放 doker 文件的目录里创建 .halo 文件夹

mkdir -p $HOME/docker/.halo $$ cd $HOME/docker/.halo

2. 下载示例配置文件到 .halo 文件夹

wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml

3. 编辑配置文件,配置数据库或者端口等

vim application.yaml

除了halo程序的用户名和密码(这个其实也可以不改,没人在意你那个小网站,自己作好数据备份即可),其他都不用改,直接用。


关于配置文件可以修改一些端口等配置,主要说说下数据源的配置和选择
halo目前支持两种数据库h2和mysql,默认部署时启用的是h2数据库,参见上面文件的配置
如果需要更换数据库为mysql,需要将配置文件的mysql注释取消添加好自己的mysql配置后,再讲h2的配置注释掉。
那么,如何到底如何选择数据库呢?
根据官方文档一些给出一些建议参考
关于h2和mysql的优缺点:

使用 H2 的优劣:
优点:
能更快的完成 Halo 的搭建。
无需单独安装 H2,数据库随着 Halo 的启动而创建。
比 MySQL 更节省资源占用,尤其是你的服务器配置不佳的情况下。
性能方面与 MySQL 基本无异(对于这种小型应用),实测 1000 篇文章的情况下,毫无压力。
不会因为某个配置不对而导致 Halo 无法正常使用,没有乱七八糟的问题。
更符合 Halo 数据架构的特点,所有数据(数据库物理文件,主题文件,上传的附件,日志等)均放在 ~/.halo 文件夹内,所以备份迁移极其方便。
如上所述,目前所有备份相关的功能均针对 H2。MySQL 的备份暂无计划。

缺点:
管理不方便,虽然有在线的控制台,但是并不好用。

使用 MySQL 的优劣:
优点:
管理方便,你可以开启远程连接,在自己电脑即可管理数据库。不过目前halo已经做了一些 开发者功能,似乎也没必要怎么管理。

缺点(仅针对于 Halo):
部署麻烦,还需要单独跑一个 MySQL,不能做到 Halo 开箱即用。
占用内存,尤其是你服务器内存不够的情况下,宛如雪上加霜。当然,服务器强壮的话可无视。
版本太多,当你安装了一个 Halo 不支持的版本(目前支持 5.7+)的时候,可能会无法正常使用,甚至无法正常启动。
配置繁琐,你可能需要配置如字符集这样的东西,对新手来说极不友好。(字符集 utf8mb4 collate utf8mb4_bin)
备份迁移麻烦,你不但需要备份 ~/.halo,还需要导出数据库脚本。
目前暂不支持后台备份 MySQL 数据。(重要)

4. 修改好后,按 Esc 键,输入 :wq 保存

5.搜索halo的docker image

docker search halo

选择最上面那个official的镜像

6.拉取最新的 Halo 镜像

docker pull halohub/halo:2.7

7.创建容器

docker run -it -d \
--name halo2 \
-p 1082:8090 \
-v "$HOME/docker/.halo":/root/.halo2 \
--restart=unless-stopped \
halohub/halo:2.7 \
--halo.security.initializer.superadminusername=admin \
--halo.security.initializer.superadminpassword=123456

-it: 开启输入功能并连接伪终端
-d: 后台运行容器
–name: 为容器指定一个名称
-p: 端口映射,格式为 主机(宿主)端口:容器端口 ,可在 application.yaml 配置。
-v: 工作目录映射。形式为:-v 宿主机路径:/root/.halo,后者不能修改。
--restart: 建议设置为 unless-stopped,在 Docker 启动的时候自动启动 Halo 容器。

出现如下界面,表示容器创建成功

网页登陆设置

1.打开浏览器,输入 http://你的ip:8090/ 登陆

界面如下,成功



评论