Hexo搭建,Wordpress迁移和Github部署(更新第三方插件)

之前DO上搭过一个Wordpress的Blog。用了一个学期,速度慢和经常出现数据库连接错误非常头疼。于是一直想换一个方案。
正好看到几位学长用Hexo,顿时眼前一亮:决定就是你了!经过一个星期的折腾,搭建了这个Blog,迁移了之前Wordpress上的文章,并把Blog丢到了Github上。过程还是比较曲折,所以记录一下。

附一首彩彩的歌~

Hexo安装和建站

根据官网文档,Hexo安装非常方便,首先安装node.js和git,之后

1
npm install -g hexo-cli

就完成了安装。

之后新建一个hexo的文件夹,cd进去

1
2
hexo init
npm install

这里的#npm install一定要有,如果忘记的话虽然能看到各种文件,但运行server就会出现各种各样奇怪的错误,不要问我为什么知道……
这时候文件已经生成好,可以编辑_config.yml了。注意yml文件的格式是:每一个配置选项的冒号后面都要有一个空格。如果漏掉空格的话运行的时候也是各种报错……
时区填了Asia/Shanghai。

配置完成后运行:

1
hexo server -p 80

使用浏览器打开就可以在看到效果了(如果不指定端口的话,默认端口是4000)

Hexo主题和评论、分享

Hexo主题非常丰富,比较了几个高人气主题,最终选择了NexT主题。
常用配置直接对照NexT在Github上的wiki页面就可以完成。有一点独特的是,简体中文在这个主题里叫zh-Hans,而不是常用的zh-CN。

评论功能使用的多说,虽然主题自带多说功能,但需要先在多说申请一个账号,再添加网站信息。之后就可以在多说的后台管理自己网站内的评论。如果之前使用了tags等页面,这里需要把那些页面里增加一句comment: false防止这些页面被评论。
如果在评论里勾选分享,多说会产生一个分享链接,这个链接的网址来自站点的_config.yml中,所以里面的网址一定要填好……
关于分享,NexT自带了jiathis,直接在配置里开启即可。也可以参考jiathis官网对图标大小、顺序等进行修改。

在之后突然发现NexT主题还有一个叫Mist的Scheme,简洁好看。果断在_config.yml里找到这一行配置上。
其实主题里还有各种各样有趣的东西可以配置,比如Google的统计和站内搜索等,等到过段时间可以考虑依次添加。

Wordpress迁移到Hexo

DO的VPS上的WP之前各种数据库错误。终于一次忍无可忍后使用WP自带的导出工具生成了一个xml下到了本地,关掉了apache2。结果上周上去的时候发现MySQL错误已经不能用之前的方法解决了,尝试了一下修复还没有解决。只能感慨这个备份做的及时。

不过既然有了xml,恢复就非常方便了。

1
2
npm install hexo-migrator-wordpress --save
hexo migrate wordpress mybak.xml

恢复效果很好,不过因为结构不同,WP中的页面和评论是不能回复了。虽说页面可以直接删掉,评论没了还是有点可惜的。
所以只好在这里感谢lytzezyy的评论。ありがとうございます!

Hexo部署到Github Pages上

使用Github Pages的好处是可以使用Github提供的各种网页访问功能,还可以使用Github客户端修改页面、上传文件;局限是空间只有300M。不过毕竟图片可以使用图床(很多人推荐七牛),大文件可以放在VPS上走ftp,所以把页面放在Github上还是可以接受的。
嗯,如果哪天拍照或者画画技能点开心了再研究图床的问题。

在Github上新建一个名称为github用户名.github.io的项目。之后在hexo的配置文件里修改deploy信息

1
2
3
4
deploy:
type: git
repository: git@github.com:github用户名/github用户名.github.io.git
branch: master

之后就可以使用hexo deploy一键部署。

如果是第一次使用,可能会提示没有密钥。参考Github上的教程生成密钥并上传公钥到Github上,就可以愉快的使用了。

浏览器访问github用户名.github.io可以看到效果。这里刷新需要一定时间,中间还可能出现404,是正常现象。而且Github的404页面还可以根据教程自己定制,感觉有空可以玩一下~

DNS修改

如果之前有申请过域名,还需要修改域名解析。将A解析修改为CNAME,解析到刚刚的github用户名.github.io上。
但是这时候直接去访问域名,会导致错误。这是因为没有在网站里添加CNAME文件。在站点目录新建一个文档,输入域名,保存为CNAME并commit。等待Github缓存刷新后即可正常访问。

博客管理

使用hexo n postname新建md文件,编辑好后hexo g -dhexo d -g就可以生成并部署。

Appendence

然而写道这里才意识到自己走了一点弯路,因为一开始我选择的是把Hexo部署到VPS上,之前各种设置也是直接在VPS上修改和测试的,也就是经历了“本地——VPS——Github”这样一个弯子。然而实际上可以直接在本地修改文件,然后“本地——Github”发布了。

于是又在Github上开了一个项目存放hexo文件夹,没想到又绕了一个弯路:
我先从VPS上push上去(才不会说顺便又学了git add, git commit, git push和各种花式cp ˊ_>ˋ),再clone到本地。
然后在Mac的Terminal下npm install hexo --no-optional
这里首先不能用hexo-cli,其次不能用-g。
之后用hexo server测试,没有页面生成,提示
WARN No layout: index.html
检查发现themes文件夹里hexo-theme-next居然是空的,不知道为什么。
最后实在不想改了,直接把VPS上的hexo打了个包传搞过来了23333。但是还是需要npm install hexo --no-optional,不过之后在本地跑的时候问题已经全部解决了。
测试了一下hexo g -d,一开始还是404,发现是部署完成后CNAME会被删除,于是新建一个CNAME放在source文件夹里。再次测试,毫无压力。
没有问题后就可以删除VPS端的hexo文件夹了。这样每次只需要在本地修改,generate deploy就可以实现Blog的更新了。
当然Source这个工程也最好经常更新一下,问题是.deploy_git和theme里面一个文件仍不能正确commit,大概是和git有关?总之似乎不管那俩也能用,所以先不管了qwq。

维护

写作:

1
hexo new

删除:直接删除source/下的相应文件夹即可
而且还可以先hexo server看看效果,确定没问题了再部署,着实好用~

至此,Hexo Blog部署工作基本完成。

更新:Sitemap,Google analytics和Swifttype

Sitemap

先在本地安装sitemap

1
npm install hexo-generator-sitemap --save

之后在根目录的_config.yml中添加

1
2
3
4
5
plugins:
- hexo-generator-sitemap
sitemap:
path: sitemap.xml

之后就可以在”主页/sitemap.xml”看到网站的sitemap了。
然后去Google的页面,提交自己网站的sitemap。

这一步前需要先在Google网站管理员中心验证网站,由于我先在网页中添加了Google Analytics,所以直接使用了Google Analytics的验证。
添加完成后,等待一段时间就可以看到网站的分析结果了。还可以根据Google提出的建议进行设置和修改。

(顺带一提自己还提交到了百度和360,用的是CNAME验证(划掉

Google analytics

使用的the next主题对第三方库支持非常友好,只要现在Google analytics中申请,然后在主题的_config.yml中把Google analytics提供的ID(形式:UA-什么什么)复制到google_analytics那一行就可以了。不需要添加任何额外的代码。

Swifttype

现在Swifttype网站更新了2.0,之前网上很多教程都不能使用了。实际上新版本更加好用。
首先在Swifttype申请账号,再申请一个ENGINE。点installation,代码里有一段_st('install','xxxxxx','2.0.0'); 。中间就是这个引擎的key。
同样the next主题自带了Swifttype的支持。在主题配置文件中的swiftype_key一行把上述key添加进去,就可以看到右上角出现了搜索框。具体搜索结果的呈现方式等可以在Swifttype中配置。

最后,既然配置文件中设计到了Key,就把Github上源文件仓库设置成private吧~