利用Docker搭建Hexo
利用Docker部署Hexo
安装镜像
由于Hexo未提供官方Docker镜像,去docker hub找一个别人搭建好的。
执行拉取指令即可
1 | $ docker pull spurin/hexo |
查看一下镜像
1 | $ docker images |
启动容器
1 | $ docker run --name=st.hexo -e HEXO_SERVER_PORT=4000 -e GIT_USER="st" -e GIT_EMAIL="st.email@domain.com" -v /blog/domain.com:/app -p 4000:4000 spurin/hexo |
由于要从github拉取镜像,可能由于网络问题导致容器启动失败,请提前解决好网络问题。
运行docker ps
查看镜像状态,或者ip:4000
进行访问。
安装主题
我这里用的NexT主题
首先进入容器并进入hexo所在文件夹(按上面步骤配置即app
目录),然后直接拉取
1 | $ git clone https://github.com/iissnan/hexo-theme-next themes/next |
等待安装完毕…
打开hexo目录下_config.yml
设置主题,由于镜像内通常都没有vim
,可以装一个,但是前面容器设置了挂载,在主机对应文件夹操作更方便。
找到 theme
字段,并将其值更改为 next
,保存退出。
每次对hexo改动后最好清除缓存重新加载配置文件
1 | hexo clean |
但是因为采取docker方式部署,直接重启容器更加方便。重启一下容器,刷新网页发现显示:
1 | {%- extends "_layout.swig" -%} {%- import '_macro/post.swig' as post_template -%} {%- import '_macro/archive.swig' as archive_template -%} {%- block title -%} {{ config.title }} {%- endblock -%} {%- block content -%} {%- set mode = theme.mode.toLowerCase() -%} |
进入容器安装swig
1 | $ docker exec -it st.hexo bash |
重启容器刷新网页显示正常。
可视化编写
通过hexo-admin
插件实现网页端发布与管理
1 | $ npm install --save hexo-admin |
在配置文件中设置管理员账号密码(密码为MD5后的)可以在网页端设置自动生成该段配置然后复制至_config.yml
1 | # hexo-admin authentification |
重启。
新建页面
标签页
新建一个标签页面,并在index.md
写入:
1 | --- |
目录页
新建一个目录页面,并在index.md
写入:
1 | --- |
最后在主题的配置文件中添加对应信息,这里/
和||
间没有空格,否则点进相应页面显示Cannot GET /%20
。其他页面类似。
1 | menu: |
重启hexo
服务后主页成功显示。
发布文章
在hexo-admin页面利用Post
新建并编写一篇文章,在发布旁边设置标签与分类。
主题升级
分别在hexo和next的package.json
中的查看当前版本
1 | Hexo v5.4.1 |
将Next升级至最新版,根据官方检查是否满足升级需求。
NexT对Hexo版本需求对照表
Version | Hexo 3.0.0-beta.4 or earlier | Hexo 3.0.0-rc.1 ~ 3.9 | Hexo 4.0 ~ 4.2.1 | Hexo 5.0 or later |
---|---|---|---|---|
NexT v0.4.5.1 or earlier | ✅ | ✅ | ❌ Icon (2) | ❌ Icon (2) |
NexT v0.4.5.2 ~ v7.4.1 | ⚠️ Data Files (1) | ✅ | ❌ Icon (2) | ❌ Icon (2) |
NexT v7.4.2 ~ v8.1.0 | ⚠️ Data Files (1) | ✅ | ✅ | ✅ |
NexT v8.2.0 or later | ⚠️ Nunjucks (3) | ⚠️ Nunjucks (3) | ⚠️ Nunjucks (3) | ✅ |
(1): Hexo 3.0.0-beta.4 or earlier does not support Data Files.
(2): Icons may not be displayed normally.
(3): Nunjucks renderer plugin required.
NexT 仓库
NexT不同版本对应不同仓库:
Years | Version | Repository |
---|---|---|
2014 ~ 2017 | v5 | https://github.com/iissnan/hexo-theme-next |
2018 ~ 2019 | v6 ~ v7 | https://github.com/theme-next/hexo-theme-next |
2020 | v8 | https://github.com/next-theme/hexo-theme-next |
进行升级
推荐升级到v8
版本,对应 Theme-Next 。
重要变更
- 简体中文参数
从v6.0.3
开始,zh-Hans
更改为zh-CN
: https://github.com/theme-next/hexo-theme-next/releases/tag/v6.0.3 ,并且需要在Hexo的配置文件中设置language
。 - 从
v8.0.0
开始,next/source/lib
下所有目录均移至 @next-theme/plugins. 查看第三方插件安装方式: Adding Plugins.
升级
将v5.1.4
升级至v8
- 备份配置文件:
1.1._config.yml
1.2. CSS文件next/source/css/_custom/*
与next/source/css/_variables/*
目录.
1.3. 布局文件next/layout/_custom/*
.
1.4. 其他. - 将旧的主题文件夹改个名并从
theme
文件夹移走,例如mv next-old/ /blog/domain.com/next-old
. - 安装新版本 installation instructions. 随后执行
hexo clean
和hexo s
后刷新网页查看升级是否成功。
Hexov5
以后直接使用npm
安装,由于是docker部署的需要进入容器再执行指令。
1 | $ docker exec -it st.hexo bash |
根据npm
安装的需要到node_modules/hexo-theme-next/_config.yml
下修改参数配置。
将新版的配置文件复制一份到根目录方便修改
1 | # Installed through npm |
新版本配置文件参数设置与旧版不同,需要重新设置。