Hexo 部署记录

无意中发现静态博客,然后心里就长了草,还加决心学习一下,多学一些技能总是没有坏处的。然而,部署的过程充满了不顺,尽管各类教程辅助,但教程上说十分钟的事情,自己足足搞了三个晚上才有雏形。真实「难者不会,会者不难」
<!-- more -->

安装node.js

Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js’ package ecosystem, npm, is the largest ecosystem of open source libraries in the world.

执行 brew install node 命令使用 brew 安装 node,提示不能创建 /usr/local/Cellar 目录,原因是没有 /usr/local 的写权限。

$ brew install node

执行 node -v 命令查看安装的 node.js 版本:

$ node -v

安装NPM

NPM(Nodejs Packager Manager),是 Node.js 包管理器。

$ npm -v

NPM 安装 hexo

$ npm install hexo

-g 表示全局安装, npm默认为当前项目安装。

可执行 hexo -v 或 hexo -version 命令来检验安装的 hexo 版本:

hexo init

1)首先要进入要建立博客的文件目录

$ hexo init

2)根据 hexo init 的下一步提示,需要执行 npm install 安装 package.json 里的依赖包。

$ npm install

3)hexo g 可生成demo,hexo server 可开启服务,地址为:http://localhost:4000/blog/

$ hexo g
$ hexo server

部署到coding.net

配置ssh公钥

可通过``` bash
$ cat ~/.ssh/id_rsa.pub

查看当前已经生成的公钥,如果没有可以生成

​``` bash
$ ssh-keygen -t rsa -b 4096 -C "你的邮箱"

后面就直接默认,按回车就好。生成之后,添加

$ ssh-add

之后在coding的项目页面下配置。这里公钥可以配置到项目里面,也可以配置到个人的账户里面。在此博客尝试的时候,发现配置到个人账户下面,项目会连接失败。所以公钥是配置在了项目设置里面。

加入了之后,执行验证:

$ ssh -T git@git.coding.net

出现以下,就表示验证成功了

$ Hello shomyliu You've connected to Coding.net by SSH successfully!

新建项目

在coding.net 里面新建一个仓库,名称自定义

对仓库进行默认初始化,构建master分枝

修改配置文件

新建好了coding的项目之后,修改一下站点的配置文件,_config.yml
如下:

这里要注意 repository 要与 pages 服务的地址完全对应,否则会无法链接

bash
$ Coding Pages 已经运行在 http://用户名.coding.me/项目名

具体配置如下,注意冒号后面是有空格的

deploy:
  type: git
  repository: http://用户名.coding.me/项目名
  branch: master

在source/需要创建一个空白文件

因为 coding.net需要这个文件来作为以静态文件部署的标志。就是说看到这个Staticfile就知道按照静态文件来发布。

$ cd source/
$ touch Staticfile  #名字必须是Staticfile

部署

$ hexo clean #清楚已经生成的内容
$ hexo g #生成项目
$ hexo d #部署到coding 上

此处碰到两个坑:

1> 在hero d被提示没有权限,内容是

hexo permission denied, unlink …… 

经过检查发现是因为之前 hero d 在博客根目录里面生成的 .deploy_git 隐藏文件一直存在,造成错误。如果之前生成有错误,需要重新部署,那需要删除这个隐藏文件。Mac 用户在进到博客根目录之后,可以如下操作:

sudo rm -r -f .deploy_git

删除之后,重新执行部署命令即可

$ hexo clean #清楚已经生成的内容
$ hexo g #生成项目
$ hexo d #部署到coding 上

2> .viminfo 错误,很奇怪不知道如何生成的,也不太清楚到底是怎样解决的。但这个问题反复存在,删除目录重新生成也不行。

error: open(".viminfo"): Permission denied
error: unable to index file .viminfo
fatal: adding files failed
FATAL Something's wrong. Maybe you can find the solution here: http://hexo.io/docs/troubleshooting.html

在根目录下并没有找到 .viminfo 文件,删除不好用。hexo github问答里面有人问到,我选择了一个答案,skip the .viminfo,在Hexo的config里面添加,现在已经看不到这个问题了

exclude:
    - .viminfo

域名解析

域名选择

经过了解,域名一般为国内的万网(被阿里收购)和国外的godaddy。考虑基本都是国内访问,就选择了万网的域名。当然最关键的是 simon000.cc 是个人非常喜欢的域名,在万网比godady便宜太多!

域名配置

在域名管理面板中添加 CNAME 记录指向到 simon000.coding.me. 或者 pages.coding.me。之后在coding的pages服务里面绑定购买的域名,之后即可完成。

这里需要注意,在pages 服务里面会给出pages服务对应的域名,一般形式是 http://用户名.coding.me/项目名, 绑定的域名就会等价于这个名称。在hexo的全局配置文件 _config.yml 里面,会有项目url的配置。尤其要关注root部分,如果如备注所建议的添加了项目名称(示例中的/child/)部分,那么可能会导致绑定域名之后出现 http://用户名.coding.me/项目名/项目名/… 这样的链接,导致出现错误。所以,这里root部分最好设置为根目录(/),不做处理

# URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
url: http://用户名.coding.me/项目名
root: / #建议不要修改
permalink: :year/:month/:day/:title/
permalink_defaults:

---- 20161211更新 ----


搜索和评论

搜索

安装hexo-generator-search,在yourblog/_config.yml中添加如下配置代码。

search:
  path: search.xml
  field: all

评论

评论插件使用多说,需要自行配置yourblog/themes/raytaylorism/_config.yml中的duoshuo_shortname为你自己站点的shortname。其余的配置主题已经添加完成,在此赞一下开发者:寿寿raytaylorlin

---- 20161214更新 ----

参考资料

1)Mac 命令行删除包含文件的文件夹

2)hexo同时托管到coding.net与github

3)基于 Hexo 和 GitHub Pages 搭建博客

4)Hexo deploy doesn't work. #1851

2016-12-10 11:05 30 Hexo
Comments
Write a Comment