Mac上搭建基于GitHub的Hexo博客

原文 : (gonghonglou.com)

这是一篇详细文章来讲述用Mac搭建Hexo博客于Github上的完整历程, 也是踩了无数的坑搭起来的,现在写下些经验来分享,希望能帮大家少踩些坑。

曾买过一款阿里的云虚拟主机,后来才发现不能自己装软件只能上传网站程序,除非另买ECS,对于第一个月的实习工资还没拿到手的我想想还是算了,先用Wordpress搭起来玩玩吧。然而在上传网站程序中几次失败,本就觉得没劲,遂一怒转向Github。好了,废话少说,开始吧。

环境配置

Hexo官网上本就有对Hexo安装及使用的详细介绍,墙裂推荐。这里来讲述自己安装的亲身步骤,或有区别。

1.Node.js

用来生成静态页面。移步Node.js官网,下载v5.5.0 Stable 一路安装即可。

2.Git

用来将本地Hexo内容提交到Github上。Xcode自带Git,这里不再赘述。如果没有Xcode可以参考Hexo官网上的安装方法。

安装Hexo

当Node.js和Git都安装好后就可以正式安装Hexo了,终端执行如下命令:

$ sudo npm install -g hexo

输入管理员密码(Mac登录密码)即开始安装 (sudo:linux系统管理指令-g:全局安装)

注意坑一:Hexo官网上的安装命令是$ npm install -g hexo-cli,安装时不要忘记前面加上sudo,否则会因为权限问题报错。

初始化

终端cd到一个你选定的目录,执行hexo init命令:

$ hexo init blog

blog是你建立的文件夹名称。cd到blog文件夹下,执行如下命令,安装npm:

$ npm install

执行如下命令,开启hexo服务器:

$ hexo s

此时,浏览器中打开网址http://localhost:4000,能看到如下页面:

http://localhost:4000

本地设置好后,接下来开始关联Github。

关联Github

1.创建仓库

登录你的Github帐号,新建仓库,名为用户名.github.io固定写法,如gonghonglou.github.io即下图中1所示:

本地的blog文件夹下内容为:

_config.yml

db.json

node_modules

package.json

scaffolds

source

themes

终端cd到blog文件夹下,vim打开_config.yml,命令如下:

$ vim _config.yml

打开后往下滑到最后,修改成下边的样子:

deploy:

type: git

repository: https://github.com/gonghonglou/gonghonglou.github.io.git

branch: master

你需要将repository后gonghonglou换成你自己的用户名,地址在上图2位置获取。hexo 3.1.1版本后type:值为git。

注意坑二:在配置所有的_config.yml文件时(包括theme中的),在所有的冒号:后边都要加一个空格,否则执行hexo命令会报错,切记 切记

在blog文件夹目录下执行生成静态页面命令:

$ hexo generate    或者:hexo g

此时若出现如下报错:

ERROR Local hexo not found in ~/blog

ERROR Try runing: 'npm install hexo --save'

则执行命令:

npm install hexo --save

若无报错,自行忽略此步骤。

再执行配置命令:

$ hexo deploy          或者:hexo d

注意坑三:若执行命令hexo deploy仍然报错:无法连接git或找不到git,则执行如下命令来安装hexo-deployer-git

$ npm install hexo-deployer-git --save

再次执行hexo generate和hexo deploy命令。

若你未关联Github,则执行hexo deploy命令时终端会提示你输入Github的用户名和密码,即

Username for 'https://github.com':

Password for 'https://github.com':

hexo deploy命令执行成功后,浏览器中打开网址http://gonghonglou.github.io(将gonghonglou换成你的用户名)能看到和打开http://localhost:4000时一样的页面。

为避免每次输入Github用户名和密码的麻烦,可参照第二节方法

2.添加ssh key到Github

1.1.检查SSH keys是否存在Github

执行如下命令,检查SSH keys是否存在。如果有文件id_rsa.pub或id_dsa.pub,则直接进入步骤1.3将SSH key添加到Github中,否则进入下一步生成SSH key。

$ ls -al ~/.ssh

1.2.生成新的ssh key

执行如下命令生成public/private rsa key pair,注意将your_email@example.com换成你自己注册Github的邮箱地址。

$ ssh-keygen -t rsa -C "your_email@example.com"

默认会在相应路径下(~/.ssh/id_rsa.pub)生成id_rsa和id_rsa.pub两个文件。

1.3.将ssh key添加到Github中

Find前往文件夹~/.ssh/id_rsa.pub打开id_rsa.pub文件,里面的信息即为SSH key,将这些信息复制到Github的Add SSH key页面即可。

进入Github --> Settings --> SSH keys --> add SSH key:

Title里任意添一个标题,将复制的内容粘贴到Key里,点击下方Add key绿色按钮即可。

3.发布文章

终端cd到blog文件夹下,执行如下命令新建文章:

hexo new "postName"

名为postName.md的文件会建在目录/blog/source/_posts下。你当然可以用vim来编辑文章。我在用Mou编辑器,支持预览,虽然其预览主题并非我喜欢,如果你有好用的markdown编辑器请推荐给我,感激不尽!

文章编辑完成后,终端cd到blog文件夹下,执行如下命令来发布:

hexo generate          //生成静态页面

hexo deploy            //将文章部署到Github

至此,Mac上搭建基于Github的Hexo博客就完成了。下面的内容是介绍安装theme,添加评论功能和绑定个人域名,如果有兴趣且还有耐心的话,请继续吧。

安装theme

你可以到Hexo官网主题页去搜寻自己喜欢的theme。这里以hexo-theme-next为例

终端cd到blog目录下执行如下命令:

$ git clone https://github.com/iissnan/hexo-theme-next themes/next

将blog目录下_config.yml里theme的名称landscape修改为next

终端cd到blog目录下执行如下命令(每次部署文章的步骤):

$ hexo clean          //清除缓存文件 (db.json) 和已生成的静态文件 (public)

$ hexo g            //生成缓存和静态文件

$ hexo d            //重新部署到服务器

至于更改theme内容,比如名称,描述,头像等去修改blog/_config.yml文件和blog/themes/next/_config.yml文件中对应的属性名称即可, 不要忘记冒号:后加空格。NexT 使用文档里有极详细的介绍。

绑定个人域名

现在使用的域名是Github提供的二级域名,也可以绑定为自己的个性域名。购买域名,可以到GoDaddy官网,网友亲切称呼为:狗爹,也可以到阿里万网购买。我是在万网买的,可直接在其网站做域名解析。

1.Github端

在/blog/themes/landscape/source目录下新建文件名为:CNAME文件,注意没有后缀名!直接将自己的域名如:gonghonglou.com写入。

终端cd到blog目录下执行如下命令重新部署:

$ hexo clean

$ hexo g
                                                       
$ hexo d

注意坑四:网上许多都是说在Github上直接新建CNAME文件,如果这样的话,在你下一次执行hexo d部署命令后CNAME文件就消失了,因为本地没有此文件嘛。

2.域名解析

如果将域名指向一个域名,实现与被指向域名相同的访问效果,需要增加CNAME记录。登录万网,在你购买的域名后边点击:解析 --> 添加解析

记录类型:CNAME

主机记录:将域名解析为example.com(不带www),填写@或者不填写

记录值:gonghonglou.github.io.  (不要忘记最后的.,gonghonglou改为你自己的用户名),点击保存即可,如下图:

域名解析

此时,点击访问http://gonghonglou.com和访问http://gonghonglou.github.io效果一致,大功告成!

------11.10更新 以下------------------------------------------------

1、解决 deploy 后博客空白问题

昨晚更新了一下 blog 做了个部署,结果blog就挂了,打开gonghonglou.com页面显示一片空白。然而hexo s开启本地服务器localhost:4000访问是没问题的。

上网查了一下,原来是 GitHub Pages 禁止了source/vendors目录的访问。Github 在 11 月 3 日更新了版本。其中包括升级了 Jekyll 到 3.3。Jekyll 为了加快构建速度,忽略vendor和node_modules文件夹。所以部署到 GitHub 后,识别不到本地下的的这个文件夹blog/themes/next/source/vendor,你只需要给这个文件夹换个名字再重新部署一次就 OK 了。nexT在 GitHub 上的 isusses 已经给出了解决方案:#1214

#1214

还有另一种解决方案就是升级nexT主题,cd 到blog/themes/next/下执行命令git pull更新。

然而,有可能升级后多说评论等第三方工具会失效,慎用。

2、将个人博客同时部署到 GitHub 和 Coding

1、首先到Coding上注册并开一个项目,项目名称和用户个性后缀相同(方便二级域名访问博客),拿到项目的 https 地址

2、打开本地blog目录下的_config.yml文件,修改如下

deploy:

type: git

repository:

github: https://github.com/gonghonglou/gonghonglou.github.io.git

coding: https://git.coding.net/gonghonglou/gonghonglou.git

branch: master

3、cd 到本地blog/source目录下执行如下命令新建Staticfile文件

$ touch Staticfile  #名字必须是Staticfile

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

4、执行发布命令hexo g、hexo d

5、个人域名添加两条CNAME解析。将gonghonglou.github.io.解析为 [海外] ,将gonghonglou.coding.me.解析为 [默认]

这样就是为了从国内访问gonghonglou.com就是访问 Coding 上的博客项目,从国外访问gonghonglou.com就是访问 GitHub 上的博客项目。

6、到 Coding 上的博客项目主页,点击Pages服务输入部署分支master立即开启

这样就可以访问自己在 Coding 上的个人博客了gonghonglou.coding.me/gonghonglou如果像这样你的用户后缀名与博客项目名称相同你还可以省略项目名称直接访问gonghonglou.coding.me

7、添加域名绑定,输入个人域名就 OK 了,可能需要耐心等待几分钟,这样在国内访问自己的博客就快得多了。

试了一下在国内访问gonghonglou.com拦不住 要飞起来了😂

------11.10更新 以上------------------------------------------------

后记

以上便是我搭建与佳期的个人博客(gonghonglou.com)的全过程,希望对大家有所帮助,欢迎吐槽~

转载请保留原文地址:http://gonghonglou.com/2016/02/03/firstblog

参考链接

Hexo官网

HEXO

如何生成SSH key

作者:与佳期

链接://www.greatytc.com/p/13e64c9e2295

來源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,817评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,329评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,354评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,498评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,600评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,829评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,979评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,722评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,189评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,519评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,654评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,940评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,762评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,993评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,382评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,543评论 2 349

推荐阅读更多精彩内容