hexo的搭建、设置与部分优化

原文链接: Alliot's blog
  hexo是一个“快速、简洁且高效的博客框架”。其最大的特点是在本地直接生成静态文件,将静态文件上传到服务器端,这样服务器端只有静态的文件,给网站的SEO优化带来了极大的便利,同时,网站的安全性也有了很大的提高,由于静态的网页对环境要求非常小,在流量较小的情况下,甚至可以不需要独立的服务器而直接丢于GitHub或虚拟主机上,对个人博主来说,能够有效的节省服务器开支;markdown的支持让写作更加方便快捷;同时,hexo拥有强大的插件系统与优质的主题(Alliot就是因为NexT这个主题才知道的hexo),高度可定制。官网:hexo.io <!--more-->
  文章面向的是不熟悉的新手朋友,所以篇幅较长,不免有些啰嗦,还望各位大佬朋友绕道勿喷。
  ![hexo从搭建到优化详解内容图](https://static.iots.vip/hexo%...
)
注意:
在hexo的配置文件中注释符号为'#',本文为了方便查看(其实是我自己的习惯),在下文中将使用'//'做注释,实际中,为避免发生报错,请使用'#'注释,望悉知。

安装(以windows中为例)

hexo可以安装在PC上,也可以直接安装在网站服务器上,区别在于:安装在PC上,等于在PC上生成静态文件后,再将其静态文件上传至服务器的网站根目录,用户只能在该PC上写作;而安装在服务器上则等于在服务器上生成静态文件(也可以直接监听4000端口实现),用户可以通过shell或者FTP来实现在不同的PC上写作并发布。大家可以自行选择,Alliot推荐前者,原因有三:一是由于文章使用的是markdown语法,在PC上写作,有更多的优秀的编辑器可以选择,如markdownPad、notepad++(可参考notepad++中实现markdown语法高亮与实时预览); 二是hexo提供了快速方便的一键部署功能,只需一条命令就能将网站部署到服务器上;最好的做法是,在PC上生成静态文件,通过git直接将网页部署在免费的GitHub或CodingPages上,省去购买服务器的费用。

安装git

众所周知的原因,某天朝下载需要代理,所以这里以及下文用到的工具,Alliot将其上传到度盘,这里只提供了Windows x64下的安装包,其他环境下的朋友可自行搜索。
(Git-2.11.0.3-64-bit)链接:http://pan.baidu.com/s/1cfa5VC 密码:rng9
安装是一路下一步,不做过多说明。

安装node.js

(node-v6.9.4-x64)链接:http://pan.baidu.com/s/1jIdytQQ 密码:4gsc 同上。

安装hexo

安装完node.js后,会在开始菜单-所有程序中生成一个"nodejs"文件夹,展开将“Node.js command prompt”发送到桌面快捷方式(稍后有用)hexo的搭建、设置与部分优化 双击打开进入命令提示符窗口。
如图,hexo的搭建、设置与部分优化 输入

npm install -g hexo-cli

(这里天朝由于众所周知的原因,下载可能较(非常)为缓慢,建议挂上代理操作。)
出现下图所示,hexo的搭建、设置与部分优化 然后执行

hexo init <folder>        //初始化hexo,<folder>为需要安装到的路径

出现下图所示,hexo的搭建、设置与部分优化 则右键桌面的“Node.js command prompt”快捷方式,属性,将"起始位置"中的路径改为刚才初始化hexo的路径。
双击打开“Node.js command prompt”,执行

npm install

安装完成后的目录结构是这样的:

.
├── _config.yml            //配置文件,包括博客信息、主题设置等。配置文件中默认有注释。
├── package.json        //应用程序(插件等)信息。
├── scaffolds            //模板文件夹,新建文章或页面后,会自动生成一个非空文件,该文件的内容就是这个文件夹下的文件内容。
├── source                //用户资源文件夹,如文章的markdown就应该在_post中修改。
|   ├── _drafts
|   └── _posts
└── themes                //主题资源文件夹,下载安装后的主题文件在这个文件夹中。

部分引用于官方文档:hexo.io/docs/setup.html


使用命令

命令可以通过node.js的命令提示符窗口输入:

新建文章

hexo new "title"

新建会在source/_posts/ 中生成对应的.md文件,编辑该文件即可。默认支持markdown与HTML语言
删除文章,则只需要删除对应的.md文档即可。

启动服务器

要能够在本地预览自己的博客,需要本地启动服务器。这里应先安装hexo server模块(hexo 3.0后版本,server变成了独立的模块) 在命令提示符窗口执行:

npm install hexo-server --save

安装完毕后执行:

hexo s

浏览器输入: http://localhost:4000 (IE浏览器必须需要http前缀才可打开) 即可实时预览(注意是实时,修改文章与修改配置,保存后刷新网页都能看到效果)。Ctrl+C关闭服务器。

生成静态文件

hexo g

这里生成静态文件在根目录的public下,将此目录内的文件上传到服务器网站根目录即可。

清理

hexo clean

清理缓存与public目录,推荐每次执行hexo s之前都执行一次hexo clean,避免出现一些奇怪的问题(主页未同步等)。

部署发布

hexo提供了一键部署功能,通过简单的配置能够一键部署到网站服务器上。
开始之前需要修改根目录下的_config.xml配置文件,这里只举例git:
使用git部署需要先安装hexo-deployer-git插件,执行:

npm install hexo-deployer-git --save

然后修改配置文件_config.xml中的

deploy:
  type: git                //部署类型  
  repo: (Repository地址)
  branch: (分支名称)
  message: (自定义提交信息,默认为Site updated: {{ now('YYYY-MM-DD HH:mm:ss') }})

这里以Coding中操作为例:
{% cq %} Coding Pages 是一个免费的静态网页托管和演示服务,您可以使用 Coding Pages 托管博客、项目官网等静态网页{% endcq %}
(正准备写然后没想到好友 Lu尼玛 同学已经写出来了:点这里,大家可以参考他的做法)


配置基本信息

在根目录下的_config.xml中修改。(注意区别于themes下主题的_config.xml文件)

网站信息

参数描述
title网站标题
subtitle网站副标题
description网站描述
author作者名
language网站语言
timezone网站使用的时区
url网站url
root网站根目录

前3个参数主要用于SEO优化。 这里将Alliot's blog 的这部分配置信息列出如下,各位朋友可以参照本博客来修改:

#配置文件中注释符号为'#',这里为了方便查看,使用'//'做注释,实际中,请使用'#'注释,望悉知。  
# Site   
title: Alliot's blog            //注意Alliot's blog前有一个空格,不能省略,否则在检查时会出错。之后的配置文件同此,均应该加空格。
subtitle: Maker & Developer
description: IOTS.VIP is a blog in order to record my learning and growth
author: Alliot                    //作者信息在大部分主题中一般显示在网站底部与文章标题下方。
language: zh-Hans                //中文,汉字
timezone: Asia/Shanghai            //时区:亚洲,上海
# URL
url: https://www.iots.vip        //如果你的网站是放于二级目录,类似于www.iots.vip/blog则请将URL设置为https://www.iots.vip/blog 同时root设置为/blog/
root: /

主题设置

Alliot's blog 博客用的是“NexT”,具体使用方法可以参照主题官网 ,(官方文档已经很清楚、详细,这里就不多说),各位朋友可以按需求配置。
下面是我的主题配置文件(安全起见,已省略部分内容),可以直接拿过去用。点击下载

搜索功能

推荐使用Local Search作为站内搜索,搜索速度快,同时比较简洁,启用方法如下:

1、安装插件

安装hexo-generator-searchdb插件
  打开Node.js command prompt,在站点的根目录下执行以下命令:

npm install hexo-generator-searchdb --save

2、更改配置文件

更改站点配置文件,新增如下内容于任意位置:

search:
  path: search.xml
  field: post
  format: html
  limit: 10000

更改NexT主题配置文件,开启Local Search作为站内搜索:

# Local search
local_search:
  enable: true

社会化评论

待添加...(之前多说死了,网易云跟贴出来了,然后接着网易云跟贴也死了,国内好用一点的剩下畅言,不知道何时GG,so,暂时不更教程,大家可以使用国外的DISQUS,不过国内用户无法正常使用,有需要的朋友方法参考主题官网)


部分Markdown语法注意点

在hexo中,一些Markdown语法与我们平时所用的有些不同。
这里列举几个常见的:

1.插入代码语法中的第二个```后面不要加空格  

2.引用语法中使用>,结束使用2个空格加回车  

3.首行缩进可以使用 中文全角下的两个空格  
  
4.使用* 标注后 需要换行。

5.表格前需要换行  

6.{% cq %} (前有一个空格)居中标签 {% endcq %}

部分优化

Nginx开启Gzip压缩

Nginx的部分优化见此文:链接

取消Google字体库加载

主题调用了Google字体库,天朝的GFW下,会导致字体库加载极其缓慢甚至无法加载。这就导致博客在加载时会有很长的等待时间(F12选择network可以查看加载时间)
解决方法: 修改主题配置文件_config.xml中的font字段。将true改为false。(网上有朋友使用360的公共库,我试了觉得还是不够快。。这里索性改为false反而更快了)
CDN等设置能明显加速博客的打开速度,同时能够抵御一些小型攻击,由于操作简单这里就不过多赘述,需要注意的是,在同时开启了SSL(Nginx开启SSL与重定向优化)的时候,应该将回源设置为HTTPS回源方式。

SEO优化设置

虽说写博客不是为了搜索排名来写,但是,一定的搜索引擎流量或许能够让博客被更多的人知晓,也就有可能认识到与你志同道合的朋友~ 这里记录一些简单的SEO做法

1、添加robots.txt

robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。robots.txt文件告诉蜘蛛程序在服务器上什么文件是可以被查看的。
这里推荐我这种写法(当然,hexo的版本不同可能文件目录有所不同)

# welcome to : www.iots.vip 
User-agent: *
Allow: /
Allow: /archives/

Disallow: /js/
Disallow: /css/
Disallow: /fonts/
Disallow: /vendors/
Disallow: /lib/
Sitemap: https://www.iots.vip/sitemap.xml

这里会出现一些安全隐患(其实是360网站检测提示robots.txt可能泄露站点目录结构,实际上并无大碍),可以参考此文解决。

2、安装sitemap插件

sitemap在SEO过程中有着十分重要的地位,同时也能限制蜘蛛对某些特定目录的爬取。 具体概念不多赘述。 hexo有很方便的自动生成sitemap的插件,打开Node.js command prompt,在站点的根目录下执行以下命令:

npm install hexo-generator-sitemap --save                #sitemap.xml 提交谷歌搜素引擎
npm install hexo-generator-baidu-sitemap --save            #baidusitemap.xml 提交百度搜索引擎

然后在站点配置文件_config.xml 中添加:

# 自动生成sitemap
sitemap:
path: sitemap.xml
baidusitemap:
path: baidusitemap.xml

3、安装nofollow插件

减少出站链接能够有效防止权重分散,hexo有很方便的自动为出站链接添加nofollow的插件。
这里@liuzhichao 感谢其开源的hexo-autonofollow插件,打开Node.js command prompt,在站点的根目录下执行以下命令:

npm install hexo-autonofollow --save

该插件会将博客中的出站链接自动加上nofollow属性,例外请在站点配置文件_config.xml中添加如下字段

nofollow:
    enable: true
    exclude:
    - www.iots.vip
    - 友链地址

这样,例外的链接将不会被加上nofollow属性。
插件自动添加的属性为'external nofollow noopener noreferrer' 一般来说标准的nofollow属性只需要external nofollow即可,noopener noreferrer估计是新闻上说的钓鱼漏洞的补救方法,不过这条属性会影响站长工具的友链检测,大家如果需要去掉这一条属性,可以在/hexo根目录/node_moduleshexo-autonofollowlib中修改filter.js中

rel: 'external nofollow noopener noreferrer'

将'noopener noreferrer'去掉,重新hexo g即可。

文章密码

2017年11月11日更新: 原文点此 这里搬运过来做备份 (这种方式是不安全的,详情请点击hexo文章密码访问的"破解"方法)

第一步

找到themes->next->layout->_partials->head.swig文件。添加如下代码(推荐加在所有的<meta>标签之后):

<script>
    (function(){
        if('{{ page.password }}'){
            if (prompt('请输入文章密码','') !== '{{ page.password }}'){
                alert('密码错误!');
                history.back();
            }
        }
    })();
</script>

第二步

写博文的时候顶部的页面变量添加"password: 密码"即可,如:

---
title: '2017-01-01'
permalink: post/111111111.html
tags:
  - 心思随笔
date: 2017-01-01 00:00:00
password: 123

相关推荐