Hexo+next搭建博客指南
我以前用的博客系统是wordpress,虽然搭起来比较方便,但是权限少,个人觉得wordpress博客系统架构有点混乱。听了@Xieldy和@barriery的建议,开始尝试Hexo系统,发现这个博客系统还基于Flask架构来写的, 我在菊厂实习的时候刚好用flask开发过后台,所以对这个架构比较熟悉。现在来分享一下自己建站的经历(踩的坑)。
我云主机的系统是Ubuntu16.04
- 首先安装nodejs
一开始我使用的apt源安装,但是Ubuntu源中的nodejs时旧版本,用apt源安装会导致hexo命令异常,所以需要在安装后更新nodejs。
1 | sudo apt-get install nodejs |
- 更换成淘宝的镜像,否则非常慢
1 | sudo npm config set registry https://registry.npm.taobao.org |
可以通过
sudo npm config list
查看是否生效安装更新版本的工具N
1 | sudo npm install n -g |
- 更新版本
1 | sudo n stable |
可以看到有 installed:版号,说明更新成功
安装hexo
1 | sudo npm install -g hexo |
- 选一个空目录创建根目录模版
我选择的是/var/www/html/
目录下
1 | sudo hexo init |
- 下载next主题模版
1 | sudo git clone https://github.com/iissnan/hexo-theme-next.git themes/next |
- 在根目录_config.yml文件中启用next主题
1 | theme: next |
PS: 所有配置文件内,每一项配置的冒号后面都要加上空格
- 设置语言
在根目录_config.yml文件中
1 | language: zh-Hans |
- 主题选择
在主题配置文件中,查找scheme, 选择你喜欢的主题对其反注释
1 | # 主题中的主题 |
- 背景设置
在主题配置文件中,查找canvas:
1 | # Canvas-nest |
开启相应的背景,只要把对应的false设置为true,记得把其他都改为false
- 修改内容区域宽度
Next 对内容的宽度的设定如下:
700px,当屏幕宽度 < 1600px
900px,当屏幕宽度 >= 1600px
移动设备下,宽度自适应
在主题目录下的 source/css_variables/custom.styl
文件,新增变量:
1 | // 修改成你期望的宽度 |
此方法不适用于 Pisces Scheme
, Pisces Scheme
编辑themes/next/source/css/_schemes/Picses/_layout.styl
文件,更改以下 css 选项定义值
1 | .header {width: 1150px;} |
- 文章内链接样式美化
在主题目录下,将source/css/_custom/custom.styl
文件修改如下:
1 | // 文章内链接文本样式 |
- 文章内代码美化
行内代码
在主题目录下,将source/css/_custom/custom.styl
文件修改如下:
1 | //行内代码样式 |
区块代码
在主题目录下,修改config.yml文件:
1 | # 样式可选: normal | night | night eighties | night blue | night bright |
- 添加文章结束语
添加模板文件
在主题目录下/layout/_macro
中新建 passage-end-tag.swig
文件,并添加以下内容:
1 | <div> |
导入模板文件
在/layout/_macro/post.swig
文件中,找到:
1 | {#####################} |
在上面代码之前添加:
1 | <div> |
配置
在主题配置文件中添加:
1 | # 文章末尾添加“本文结束”标记 |
增强文章底部版权信息
- 增加文章md文件的头部信息中添加
copyright: true
时,添加版权声明 - 增加文章标题、发布时间、更新时间等信息
- 增加文章md文件的头部信息中添加
在目录next/layout/_macro/
下找到post-copyright.swig
,进行部分修改:
1 | {% if page.copyright %} |
- 自定义文章的默认头部信息
在根目录的/scaffolds/post.md
文件中添加:
1 | --- |
- 文章加密访问(其实可以不用)
打开主题目录下layout/_partials/head.swig
文件,在meta
标签后面插入这样一段代码:
1 | <script> |
然后文章头部信息中添加password:
password: 你设置的密码
如果password后面为空,则表示不用密码。
- 博文置顶
安装hexo-generator-index插件
1 | npm install hexo-generator-index--save |
替换代码
把node_modules/hexo-generator-index/lib/generator.js
内的代码替换为:
1 | ; |
设置top值
在文章头部信息中添加top
值,数值越大文章越靠前:
1 | --- |
- 增强文章底部标签
修改模板/themes/next/layout/_macro/post.swig
,搜索 rel=”tag”>#
,将 #
换成
1 | <i class="fa fa-tag"></i> |
- 修改打赏
在主题配置文件中找到如下行,并作出相应的修改,然后上传你的微信和支付宝二维码到博客根目录下的source/img
文件夹中
1 | # 打赏设置 |
- 字体不闪动设置
修改文件next/source/css/_common/components/post/post-reward.styl
,然后注释其中的函数wechat:hover
和alipay:hover
,如下:
1 | /* 注释文字闪动函数 |
- 添加顶部加载条
在主题配置文件_config.yml
中,找到pace
并修改:
1 | pace: true |
加载条样式有许多,在你找到的位置中可自行更换
- 主页文章添加阴影效果
打开/themes/next/source/css/_custom/custom.styl
,添加:
1 | .post { |
- 给背景添加蜂窝状动画
添加下列代码到你的布局文件中的标签之前(位置/layout/layout.ejs
)
1 | <script type="text/javascript" src="//cdn.bootcss.com/canvas-nest.js/1.0.0/canvas-nest.min.js"></script> |
在引用的同时可以对 Nest
进行相关的配置
color
: 线条颜色, 默认: ‘0,0,0’ ;三个数字分别为(R,G,B),注意用,分割
opacity
: 线条透明度(0~1), 默认: 0.5
count
: 线条的总数量, 默认: 150,(建议修改少点,否者 cpu 占用过高)
zIndex
: 背景的z-index属性,css属性用于控制所在层的位置, 默认: -1
例如
1 | <script type="text/javascript" color="0,0,255" opacity='0.7' zIndex="-2" count="99" src="//cdn.bootcss.com/canvas-nest.js/1.0.0/canvas-nest.min.js"></script> |
- 搜索功能
安装
1 | npm install hexo-generator-searchdb --save |
配置
在主题配置文件下,查找local_search
:
1 | local_search: |
enable
修改为true
在根目录配置文件中,添加以下代码:
1 | search: |
- 页脚美化
隐藏网页底部 powered By Hexo 强力驱动
在主题配置文件_config.yml
中修改:
1 | copyright: false |
- 侧边栏添加访问量等信息
获取不蒜子代码
在不蒜子上获取代码:
1 | <script async src="//dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js"></script> |
添加js文件
在主题目录下,找到/layout/_layout.swig
文件, 在文件的后面,</body>
标签之前,添加上面代码。
安装wordcount
1 | npm install hexo-wordcount --save |
修改布局
在主题目录下,找到/layout/_macro/sidebar.swig
文件,查找/nav
,在</nav>
标签之前,添加下面代码:
1 | <br> |
- 文章标签显示设置
在主题配置文件中,查找post_meta
:
1 | # 文章标签显示设置 |
- 文章阅读量
注册leancloud
统计账号,按照next
官方推荐文档 为NexT
主题添加文章阅读量统计功能,获取AppID
以及AppKey
并在主题的_config.yml
文件中填写:
1 | leancloud_visitors: |
- 添加友言评论
在友言评论中注册,并进入管理来获取你的id。
修改主题配置文件的友言id:
1 | # youyan 评论 |
- 添加jiathis分享按钮
将你的友言Id添加进去:
1 | # jiathis 分享按钮 |
参考资料以及FAQ
ubuntu下搭建LAMP环境
ubuntu创建自签名证书
https://www.howtoing.com/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-18-04
腾讯云安装
let's encrypt
证书https://www.howtoing.com/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-18-04
安装Next主题
http://theme-next.iissnan.com/getting-started.html#install-next-theme
Next github源码包
GitHub+Hexo 搭建个人网站详细教程
hexo使用手册
如何更新npm(它要在themes目录下才能运行,不更新在ubuntu16.04环境下hexo命令会出现异常)
Hexo-NexT搭建个人博客
hexo中获取图片失败问题
hexo + next主题高级配置
hexo常用命令
添加分类与标签
每次在主页上阅读更多的链接总是指向发表时间最早的一篇,解决方法:
蜂窝状动画