本教程信息过时,建议查看更新版教程,在本站搜索即可
Introduction
hexo
比 typecho
的区别主要在于没有后端.
其实 hugo
也没有后端, 而 hugo
和 hexo
都是非常受欢迎的博客架构, 相比 typecho
和 halo
有更多的星星.
它不需要数据库, 所有文章都保存在本地文件系统中. 称之为静态博客
或许博客的原始形态就应该如此: 没有网页后台, 需要在服务器上更新文章, 在服务器上对网站的样式进行修改.
可能是因为我首先接触了
typecho
和wordpress
先入为主了吧
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
主题, 感觉很不错.