Hexo使用常见问题及解决办法
前言
接触Hexo已经有不短的时间,期间自己也踩过很多坑,将自己及小白们遇到的问题整理一二,以供参考。
经常会被问到一些问题,也算是对高频问题的一次整理吧。
本教程是针对小白,理论上所有hexo相关版本都适用。
如果你对什么是命令,怎么运行命令,什么是MarkDown,仓库去哪搞,什么是编辑器等等一无所知,建议去看下计算机基础和hexo官方基础文档,先搜索些基础教程去搞懂先,至少你知道基础前hexo并不适合你,这样的教程本站暂时没功夫写
Hexo基础
安装Hexo
安装过程请参考官方文档:https://hexo.io/zh-cn/docs/ ,照文档将需要的nodejs和Git依赖安装完成后,再在 gitbash 中运行 npm install -g hexo-cli
命令就完成了环境安装
Hexo命令
这些命令都不是必须的,但用了的话能事半功倍。
hexo s
:启动一个服务,便于本地预览,预览地址运行完命令的时候就给了提示,默认是http://localhost:4000 ,请按照提示去访问hexo g
:将MarkDown渲染生成HTML静态页,仓库版渲染方案不需要该命令hexo d
:将生成的静态页发布到配置的远程仓库中,仓库版渲染方案不需要该命令hexo n post post-name
:新建一篇文章,文章MarkDown文件会在source/_post
目录下hexo n page page-name
:新建页面,会在source
目录下生成对应的页面文件夹
运行命令前,请先将命令工作路径切换到网站目录下,最简单的方法就是先打开网站目录,然后在该目录下 点鼠标右键》Gitbash
,然后再执行命令
Hexo配置文件
- 网站配置:在hexo网站目录下,有一个
_config.yml
,这就是网站的配置,主要配置网站标题,作者,url等 - 主题配置:每个主题目录下都有一个
_config.yml
,主要控制主题显示的内容,功能,样式等,每个主题对应的配置内容都不一样,所以需要根据主题文档去修改配置。在新版的hexo中,hexo使用配置优先级为:根目录下的_config.主题名.yml
》主题目录下的_config.yml
,所以只需要修改根目录下的_config.主题名.yml
就可以了,如果主题有更新,再从主题目录中将最新的内容同步过来
Hexo设置相关
Hexo都可以设置些什么
Hexo的配置都在Hexo目录下的 _config.yml
中。用文本编辑器打开该文件后,可看到很多相关设置字段,按照字段说明进行修改或者填充对应的值即可。
怎么修改主题
修改主题的工作可大可小,暂且理解为更换主题,这个操作在Hexo的 _config.yml
中修改 theme:
后面的值为你要换的主题名保存即可。
最新版的hexo都建议将主题目录下的
_config.yml
复制到与网站配置文件同级目录,命名为_config.主题名.yml
,hexo使用配置优先级为:根目录下的_config.主题名.yml
》主题目录下的_config.yml
所以只需要修改根目录下的_config.主题名.yml
就可以了,如果主题有更新,再从主题目录中将最新的内容同步过来,主题更新就不会受影响了
再者,对主题的个性化定制修改就要求有技术功底了,一般主题的说明文档中都会提到怎么设置,但进一步修改就要自己去琢磨主题代码了,有能力的自行设计。
关于菜单怎么来
和标签等菜单类似,在 source
目录新建个 about
目录,然后在里面创建个 index.md
页面文件『以上这些步骤其实只需要用一条命令就完成了: hexo new page about
』,填上正确的 front-matter
头,然后其他的就跟写普通文章一样了。
---
title: 关于本站
layout: page
comments: true # false表示不允许评论
---
这里开始写关于介绍...
Hexo部署相关
文章发布不成功
hexo g
正常生成了HTML静态页文件,本地测试也正常,但外网访问不对,没有更新。
如果是 hexo d
命令之后就结束了,没有任何后续反应,很可能是Hexo的配置不完整,导致发布不成功,检查Hexo目录下的 _config.yml
中部署仓库相关配置是不是不存在了。
部署仓库配置正常情况下应该是这样子的:
deploy:
type: git
repo: https://github.com/xxx/xxx.github.io.git
branch: master
message: Hexo update
如果配置没错,发布也提示 git done
,那请稍安勿躁,服务器上还没有更新,稍后再试即可。
为什么用自定义域名无法访问
GitHub,coding等都提供了绑定自定义域名的功能,在 Hexo\source
目录下建个无后缀文本 CNAME
,在里面填上自己的域名就可以了,不需要带协议。
做完以上只是在网站文件托管商那做了绑定,还需要你到域名dns解析商那【比如阿里云或者dnspod等】,将你的域名做个 cname
解析到GitHub等提供给你的二级域名上。
部署到GitHub时提示Fatal:the remote and hung up
等错误
这个可能是网络问题,稍后再试,或者架个梯子再试。
如果已经有梯子,看下是不是使用的PAC规则而 GitHub.com
不在PAC文件里,切换到全局模式或者添加 GitHub.com
规则,相关规则可自行求助搜索引擎:添加PAC自定义规则,其他方法请自行研究。
Hexo博客能不能部署到自己的VPS上
能,如果不考虑成本,且自己的VPS稳定可靠的话还是建议部署到自己的VPS,自己的机器一般都比GitHub,codingpage等提供的空间大,对域名绑定操作也更灵活。如果你的域名有备案或者打算备案,建议买腾讯云或者阿里云的云服务器。
而且GitHub绑定自定义域名后不支持 https
,coding则需要在网站底部放置 host by coding
,否则要先跳广告页才到你的博客。
部署到自己的VPS我曾经写过完整教程,可见:Hexo博客Git-VPS部署完整记录
SSH方式发布失败
Permissions 0644 \'xxx/.ssh/id_rsa\' are too open
SSH认证是很方便的,设置好后免去设置密码的烦恼,但有时候会发布不成功,日志会如上面的提示。 这是因为Linux系统安全机制造成的,一般是上传的SSH密钥权限太开放了,所以只需要将秘钥文件设置合适的权限即可:
# chmod 400 ~/.ssh/id_rsa.pub
网站内容相关
怎么找好看的博客主题
萝卜白菜各有所爱,自己喜欢的主题才是好看的。可以到Hexo主题官网去翻,哪个顺眼就挑哪个。
注意事项: 在官网主题页找主题时,点击略缩图是跳转到演示网站,点击下面的主题标题则跳转到对应的主题代码托管仓库,找到主题文档安装文档说明就可以换上你认为好看的主题了。
博客打开空白或显示404
Hexo只是个渲染服务,并不会智能检测内容上的错误。所以在渲染前你需要新建至少一篇文章,并按Hexo的格式要求填充相关内容,再经过Hexo才能解析出正常有内容的HTML页面。
如果发布提示 git done
,那请稍安勿躁,服务器上还没有更新,稍后再试即可。
要删除一篇文章怎么搞
Hexo站点所有的源文件都在 Hexo\source
目录下,其中 _posts
目录下放的是文章的MarkDown源文件,将你不需要的文章 .md
源文件删除掉,然后渲染发布。 如果无变化或者一些莫名其妙的残留,将里面不要的文件删除后 hexo clean
清理一遍再渲染发布就可以了。
怎么修改博客头像
头像一般是主题的功能,不同的主题有不同的设置及修改方法,一般在主题目录下的 _config.yml
里设置。请找到主题说明文档,然后按照主题说明一步步操作。
改配置,页面模板等文件,最好不要用Windows系统自带的那个记事本,非得用记事本那推荐用:Notepad2-mod_Windows自带记事本的绝佳替代
标签菜单点进去提示404错误
和上面的首页打开404类似,默认是没有的,需要自己创建入口页。在 source
目录新建个 tags
目录,然后在里面创建个 index.md
文件,该文件只需要 front-matter
头就可以了,其他的都不需要。
---
title:
type: 'tags'
layout: 'page' #这个值其实要按照主题文档来,有些主题取的这个值,所以填什么要照主题文档
comments: true
date: 2017-02-24 17:37:05
updated: 2017-02-24 17:37:05
---
以上步骤直接用hexo命令完成创建也是可以的: hexo new page tags
,其他菜单以此类推就可以,目录与Hexo配置文件 _config.yml
中对应,类型参考Hexo官方文档。
# Directory
source_dir: source #网站跟目录
public_dir: c:\Hexopublic #渲染发布文件夹
tag_dir: tags #标签目录
archive_dir: archives #存档目录
category_dir: categories #分类目录
GoodHexo怎么添加评论系统
Hexo本来就是将MarkDown解析成HTML,纯静态无数据库,所以是不带评论登录等功能的。
如果需要,可以使用畅言,disqus,gitalk等第三方评论系统,参考教程:
怎么实现首页只显示文章摘要
这个需要主题模板支持,大部分的主题都是支持摘要显示的,支持的方法也大同小异,具体请参考主题文档。
通用方法
通用方法是在文章内容中添加 <!--more-->
注释,渲染的时候会自动将该注释前内容当做文章摘要处理。
front-matter
定义摘要
上面通用方法不适用于想把中间某段当做摘要概况的情况,此时你就可以在 front-matter
中定义一段文章摘要取代 <!--more-->
注释的方法,详见:Hexo中MarkDown文档头规范。
文章中要怎么使用图片
这属于MarkDown的基础知识,基本语法可以参考这里。 图片路径引用包括两种方法:
- 图床引用
- 自己存储
自己存储
在GoodHexo的目录结构 中,source
是网站的根目录,所以如果要把图片放在自己的网站存储空间内,那么你可以在 source
目录下建个目录如 images
,然后把图片放在这个目录,文章中插入:![](/images/xx.png)
即表示该图片位置为 域名/images/xx.png
:
域名/
:网站根目录,本地环境对应则是source
目录,外网则如 https://yiwangmeng.com/images/
:文件路径,本地环境对应则是source/images/
目录xx.png
:图片文件名
以下按文章文件夹存储方法对新手来说极不友好,慎用
有些人喜欢按每篇文章文件夹独立存储资源,Hexo配置文件 _config.yml
中设置 post_asset_folder: true
开启独立文件夹存储,执行命令 $ hexo new post_name
,在 source/_posts
中会生成文章 post_name.md
和同名文件夹 post_name
,将图片资源放在 post_name
中,文章就可以使用相对路径引用 _posts/post_name/image.jpg
了:
![](image.jpg)
上述是markdown的引用方式,图片只能在文章中显示,但无法在首页中正常显示。如果希望图片在文章和首页中同时显示,可以使用标签插件语法:
{% asset_img image.jpg This is an image %}
图床引用
所谓图床就是一个专门用来存图片的地方,然后在任意地方引用图片的访问地址,如把图片传到微博,然后得到微博上该图片的地址,在需要插入图片的地方使用绝对路径引用即可: ![](https://wx1.sinaimg.cn/mw690/xx.jpg)
别人给你存储图片往往表示不可控,所以久了就会出现图片不在了,原先图片承载了啥内容也不知道,本站的原则是能不用图片就尽量不用图片。
hexo d
时刷 zone.offset
提示大概是这样子的:
zone.offset has been deprecated in favor of zone.utcOffset
请检查系统时区设置和hexo配置文件 _config.yml
中网站时区配置是否一致。