Hexo使用常见问题及解决办法

前言

接触Hexo已经有不短的时间,期间自己也踩过很多坑,将自己及小白们遇到的问题整理一二,以供参考。

经常会被问到一些问题,也算是对高频问题的一次整理吧。

本教程是针对小白,理论上所有hexo相关版本都适用。

如果你对什么是命令,怎么运行命令,什么是MarkDown,仓库去哪搞,什么是编辑器等等一无所知,建议去看下计算机基础和hexo官方基础文档,先搜索些基础教程去搞懂先,至少你知道基础前hexo并不适合你,这样的教程本站暂时没功夫写

Hexo基础

安装Hexo

安装过程请参考官方文档:https://hexo.io/zh-cn/docs/ ,照文档将需要的nodejs和Git依赖安装完成后,再在 gitbash 中运行 npm install -g hexo-cli 命令就完成了环境安装

Hexo命令

这些命令都不是必须的,但用了的话能事半功倍。

  1. hexo s:启动一个服务,便于本地预览,预览地址运行完命令的时候就给了提示,默认是http://localhost:4000 ,请按照提示去访问
  2. hexo g:将MarkDown渲染生成HTML静态页,仓库版渲染方案不需要该命令
  3. hexo d:将生成的静态页发布到配置的远程仓库中,仓库版渲染方案不需要该命令
  4. hexo n post post-name:新建一篇文章,文章MarkDown文件会在 source/_post 目录下
  5. hexo n page page-name:新建页面,会在 source 目录下生成对应的页面文件夹

运行命令前,请先将命令工作路径切换到网站目录下,最简单的方法就是先打开网站目录,然后在该目录下 点鼠标右键》Gitbash ,然后再执行命令

Hexo配置文件

  1. 网站配置:在hexo网站目录下,有一个 _config.yml ,这就是网站的配置,主要配置网站标题,作者,url等
  2. 主题配置:每个主题目录下都有一个 _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等第三方评论系统,参考教程:

  1. 博客评论从多说迁移到Disqus
  2. 无备案网站使用畅言评论方法

怎么实现首页只显示文章摘要

这个需要主题模板支持,大部分的主题都是支持摘要显示的,支持的方法也大同小异,具体请参考主题文档。

通用方法

通用方法是在文章内容中添加 <!--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 中网站时区配置是否一致。

转载请务必保留本文链接和注明内容来源,并自负版权等法律责任。
一网盟 » Hexo使用常见问题及解决办法

发表回复

分享是种美德,好人一生平安

立即查看 了解详情