本教程信息过时,建议查看更新版教程,在本站搜索即可

Introduction

hexotypecho的区别主要在于没有后端.

其实 hugo也没有后端, 而 hugohexo都是非常受欢迎的博客架构, 相比 typechohalo有更多的星星.

它不需要数据库, 所有文章都保存在本地文件系统中. 称之为静态博客

或许博客的原始形态就应该如此: 没有网页后台, 需要在服务器上更新文章, 在服务器上对网站的样式进行修改.

可能是因为我首先接触了 typechowordpress先入为主了吧

Deployment

那必然是选择 docker来部署 hexo博客了.

实际上官方好像并没有提供镜像, 不过你仍然可以在docker hub搜索到关于 hexo的镜像. 其中spurin/hexo比较受欢迎, 因为它自带管理员网页.

不过由于已有的 hexo镜像都不支持 arm64架构, 所以我选择自己构建镜像.

选择arm64的机器是因为配置高、价格低. 服务器商为 hetzner

Dockerfile

使用 Dockerfile构建镜像. 阅读官方文档可以知道本地环境需要 node.js, 故我们选择从 arm64v8/node构建镜像.

FROM arm64v8/node:latest
# timezone
ENV TZ Asia/Shanghai

# new dir
RUN mkdir /usr/blog

# work dir set
WORKDIR /usr/blog

# update and install git
RUN apt-get update 
RUN apt-get install git -y

# install hexo via npm
RUN npm install -g hexo-cli 

# install wordcount
RUN npm i --save hexo-wordcount

# install plugin for butterfly
# https://butterfly.js.org/posts/21cfbf15/#%E5%AE%89%E8%A3%9D%E6%8F%92%E4%BB%B6
RUN npm install hexo-renderer-pug hexo-renderer-stylus --save

# install mathjax
# https://butterfly.js.org/posts/ceeb73f/#Math-%E6%95%B8%E5%AD%B8
RUN npm uninstall hexo-renderer-marked --save
RUN npm install hexo-renderer-kramed --save

EXPOSE 4000

其中部分是配合 hexo博客本身的参数, 还有一部分是为了后面使用butterfly主题而做的环境配置.

说实话我觉得其中最重要的部分是设置时区, 真的是踩了大坑.

构建镜像:

cd /root/data/docker_data/hexo
# 进入目录
docker build . --tag hexo:my
# 构建镜像. 名称可自定义, 此处指定为hexo:my

docker run

有的时候觉得 docker run更加直观一些, 实际上与 docker compose的作用是一样的.

docker run -itd \
-p 4002:4000 \
-v /root/data/docker_data/hexo/blog:/usr/blog \
-w /usr/blog \
--name hexo \
hexo:my
# 端口可自定义. 由于4000被ward占用了就改成4002

有一个比较神奇的点就是需要自行进入容器执行 hexo init, 写在 Dockerfile并不生效.

docker exec -it hexo /bin/bash
hexo init .

我们之前设置了 WORKDIR, 所以进入容器后在 /usr/blog下面, 直接执行初始化命令即可.

migrate

指服务器之间的迁移, 并非从其他博客系统迁移

执行完 hexo init .之后, 直接删除并替换:

cd /root/data/docker_data/hexo
rm blog/* -rf
mv blog.bak/* blog
# 删除映射文件夹中的init内容
# 粘贴旧数据

theme

个人采用的是 butterfly主题, 感觉很不错.

image-20230430103757286

最后修改:2024 年 01 月 20 日
如果觉得我的文章对你有用,请随意赞赏