Hexo安装与部署指南
1 介绍
Hexo 是一款简洁、高效且功能强大的博客发布工具,支持 Markdown 格式,拥有丰富的插件和主题。我通常使用 Obsidian 编写文档,然后通过 Hexo 的命令行工具生成静态网页并发布到网站。
本文简要介绍了如何在本地使用 Docker 搭建 Hexo 环境,并将 Markdown 格式的内容转换为网页,最终部署到 github.io 作为个人网站。
2 本地环境
2.1 使用镜像
Hexo 依赖于 JavaScript 开发环境,我使用了 Hexo 的 Docker 镜像,该镜像基于轻量且稳定的 Alpine 版本,整个镜像仅有几十兆,并配备了基本的 vi 编辑器。我的宿主机运行的是 Ubuntu 系统,具体操作如下:
1 | docker pull taskbjorn/hexo:alpine-latest |
在镜像外建立数据目录:
1 | $ sudo mkdir /exports/hexo_data -p # 数据存放在 docker 之外 |
第一次启动镜像时,数据会安装到 /home/hexo/.hexo 目录,因此速度较慢。以后再次启动时,速度会提升。正常启动后,可通过 http://localhost:4000 端口访问 hexo 创建的静态网站,生成新内容时自动更新,无需重启服务。
1 | $ docker run -it --rm --name my_hexo_container --privileged=true --network=host -v /exports/hexo_data:/home/hexo/.hexo taskbjorn/hexo:alpine-latest |
以 root 身份进入 Docker,安装常用工具,然后在另一个终端进入:
1 | docker exec -u root -it my_hexo_container sh |
建议保存 docker image:
1 | $ docker commit my_hexo_container taskbjorn/hexo:alpine-250707 |
以默认用户身份进入 Docker 后,可以看到当前用户为
hexo,且项目文件已在当前目录下创建完毕:软件包安装在
node_modules
目录中,source
目录存放 markdown
等源数据,生成的文件位于 public
目录,主要的配置文件为
_config.yml
。
1 | $ docker exec -it my_hexo_container sh |
2.2 配置文件
_config.yml
是最基本的配置文件,至少需要设置其 site
部分:
1 | title: '标题' |
2.3 基本操作
1 | hexo cl # hexo clean 清除缓存 |
2.4 Markdown 规范
通过 markdown 生成的网页,如果不设置文件头,则列表中只能显示文件创建日期:
因此,至少需要设置 title 才能正常显示,一般设置 title, author, date, tags,Obsidian 的 hexo 模板如下:
1 | --- |
3 部署博客到 github.io
3.1 配置 github 免密环境
3.1.1 方法一
1 | git config --global user.email 你的邮箱 |
如果提示找不到 ssh-keygen,可能是 docker 环境中未安装 openssh 工具集,参见上面的安装工具部分。
将 /home/hexo/.ssh/id_rsa.pub 内容加入 github,具体方法是:
https://github.com/settings/keys add ssh key
3.1.2 方法二
也可以把宿主机的 rsa 复制过来,形如:
1 | $ cp 宿主机/.ssh/id_rsa* /home/hexo/.ssh/ |
3.1.3 测试 github 环境
设置好后,查看能否正常使用:
1 | ssh git@github.com # 正常结果形如: You've successfully authenticated |
如遇到 github.com 22 端口连不通
1 | ssh: connect to host github.com port 22: Operation timed out |
尝试 443 端口
1 | $ ssh -T -p 443 git@ssh.github.com |
如果 443 正常,则要设置默认的 github 端口
1 | $ vi /home/hexo/.ssh/config |
为保留 docker 中的内容,建议设置后再 commit 一下:
1 | docker commit my_hexo_container taskbjorn/hexo:alpine-250707 |
3.1.4 配置文件
修改配置文件 _config.yml,设置部署服务
1 | deploy: |
3.1.5 部署
1 | npm install hexo-deployer-git # 安装 hexo 的 git 插件 |
正常执行后,可以看到 public 目录内容被更新到 github.io 主页,内容也不多,只有 demo 时不到 1M。