天天看点

使用Github Pages和Hexo构建个人博客

github pages可以创建免费的静态站点,支持自带主题、支持自制页面等,并且可以使用jekyll或者hexo等静态博客框架进行管理。 独立博客是博客园等博客平台之外的一个良好补充,相比使用虚拟主机或者云服务器搭建站点,静态博客管理和使用简洁,使用github pages搭建博客不失为一个好选择。

使用github很快就可以搭建一个站点,可以分为以下几步:

在github创建对应仓库

配置jekyll或者hexo环境

设置主题,安装评论等插件

创建github pages比较简单,只要在github创建一个仓库就可以,这个仓库命名需要遵循一定规则,其格式必须为:yourusername.github.io。

使用Github Pages和Hexo构建个人博客

现在新建一个repository,名称设置为bingyue.github.io。

github pages支持使用master分支或者gh-pages分支,如果是某个仓库的wiki页面,需要设置文档到gh-pages 分支中,个人站点使用默认的master分支就可以。

把工程clone 到本地,在根目录创建一个index.html

1

2

3

4

5

6

7

<code>&lt;!</code><code>doctype</code> <code>html&gt;</code>

<code>&lt;</code><code>html</code><code>&gt;</code>

<code>&lt;</code><code>body</code><code>&gt;</code>

<code>&lt;</code><code>h1</code><code>&gt;hello world&lt;/</code><code>h1</code><code>&gt;</code>

<code>&lt;</code><code>p</code><code>&gt;i'm hosted with github pages.&lt;/</code><code>p</code><code>&gt;</code>

<code>&lt;/</code><code>body</code><code>&gt;</code>

<code>&lt;/</code><code>html</code><code>&gt;</code>

 

提交新建的页面,push到远程仓库,然后访问你的站点地址就可以预览了。

在repository的设置页面,可以配置域名,更改默认的主题等。

使用Github Pages和Hexo构建个人博客

gitpages支持使用jekyll或者hexo等静态博客框架进行管理,与github pages绑定,可以编辑博文,生成静态博客等。

目前主流的静态博客框架是jekyll和hexo, jekyll基于ruby实现,安装jekyll需要搭建ruby环境,hexo基于node.js实现。 这两个静态程序功能基本类似,两个程序都有博文预览功能,可以在本地启动服务,默认都使用markdown语法,另外jekyll是github推荐的管理程序。

实际应用中,我第一次安装的是jekyll,在mac环境下配置中发现ruby安装繁琐,配置jekyll主题等需要对ruby的基本应用有些了解,比如gemfile/rails等的作用,看了一下论坛的吐槽,如果是windows环境可能会更加棘手。相比之下,node.js在类uinx系统和windows系统下的安装和应用都比较简单,开发同学也会比较熟悉javascript 。

除非对ruby比较熟悉,推荐大家使用hexo进行站点管理。

这里跳过了安装node环境的步骤。

使用下面的命令安装hexo:

<code>sudo</code> <code>npm </code><code>install</code> <code>-g hexo-cli</code>

查看是否安装:

<code>hexo version</code>

初始化工程目录:

<code>hexo init &lt;yourfolder&gt;</code>

一些常用命令:

<code>hexo new </code><code>"postname"</code> <code>#新建文章</code>

<code>hexo new page </code><code>"pagename"</code> <code>#新建页面</code>

<code>hexo generate </code><code>#生成静态页面至public目录</code>

<code>hexo server </code><code>#开启预览访问端口(默认端口4000,'ctrl + c'关闭server)</code>

<code>hexo deploy </code><code>#将.deploy目录部署到github</code>

<code>hexo help </code><code>#查看帮助</code>

  

<code>hexo new </code><code>"第一篇文章"</code>

会提示相应的输出:

接下来编辑这篇文章:

<code>---</code>

<code>title: 第一篇文章</code>

<code>date</code><code>: 2017-03-08 11:28:45</code>

<code>tags:</code>

<code>欢迎来到我的博客!</code>

然后发布博客,进行本地预览:

<code>hexo server</code>

hexo默认会读取根目录的config.yml获得站点信息,另外在themes/landscape中也有一份config.yml文件,配置的是站点的主题和一些个人设置。

新建一个_config.yml,更改title等站点信息,可以参考这份说明:

使用Github Pages和Hexo构建个人博客
使用Github Pages和Hexo构建个人博客

截止目前,我们所做的修改都是在本地,并没有推送到远程仓库,接下来怎么让其他人看到我们发布的博客呢?

需要安装hexo-deployer-git扩展:

<code>npm </code><code>install</code> <code>hexo-deployer-git --save</code>

添加类似如下的部署配置:

<code>deploy:</code>

<code>  </code><code>type</code><code>: git</code>

<code>  </code><code>repo: [email protected]:bingyue</code><code>/bingyue</code><code>.github.io.git</code>

<code>  </code><code>branch: master</code>

执行

<code>hexo clean </code>

<code>hexo gegerate</code>

<code>hexo deploy</code>

这时候你再查看,会发现相关的文件已经被push到对应的git分支上。

使用Github Pages和Hexo构建个人博客

以安装next主题为例, 从next的gihub仓库中获取最新版本:

<code>cd</code> <code>your-hexo-site</code>

<code>git clone https:</code><code>//github</code><code>.com</code><code>/iissnan/hexo-theme-next</code> <code>themes</code><code>/next</code>

打开_config.yml做如下修改:

<code># extensions</code>

<code>## plugins: http://hexo.io/plugins/</code>

<code>## themes: http://hexo.io/themes/</code>

<code>theme: next</code>

在_config.yml中添加多说的配置:

<code>duoshuo_shortname: 站点的short_name</code>

这里的short_name可能会让人困惑,这是你注册多说账户时的二级域名,多说二级域名是指你注册多说时,填写的<code>abc.duoshuo.com</code>中的<code>abc</code>部分。 

接下来修改themes\landscape\layout_partial\article.ejs模板,替换下面的文件

<code>&lt;% </code><code>if</code> <code>(!index &amp;&amp; post.comments &amp;&amp; config.disqus_shortname){ %&gt;</code>

<code> </code><code>&lt;section </code><code>id</code><code>=</code><code>"comments"</code><code>&gt;</code>

<code>   </code><code>&lt;div </code><code>id</code><code>=</code><code>"disqus_thread"</code><code>&gt;</code>

<code>     </code><code>&lt;noscript&gt;please </code><code>enable</code> <code>javascript to view the &lt;a href=</code><code>"//disqus.com/?ref_noscript"</code><code>&gt;comments powered by disqus.&lt;</code><code>/a</code><code>&gt;&lt;</code><code>/noscript</code><code>&gt;</code>

<code>   </code><code>&lt;</code><code>/div</code><code>&gt;</code>

<code> </code><code>&lt;</code><code>/section</code><code>&gt;</code>

<code> </code><code>&lt;% } %&gt;</code>

改为

8

9

10

11

12

13

14

15

16

17

18

19

20

<code>&lt;% </code><code>if</code> <code>(!index &amp;&amp; post.comments &amp;&amp; config.duoshuo_shortname){ %&gt;</code>

<code>  </code><code>&lt;section </code><code>id</code><code>=</code><code>"comments"</code><code>&gt;</code>

<code>    </code><code>&lt;!-- 多说评论框 start --&gt;</code>

<code>    </code><code>&lt;div class=</code><code>"ds-thread"</code> <code>data-thread-key=</code><code>"&lt;%= post.layout %&gt;-&lt;%= post.slug %&gt;"</code> <code>data-title=</code><code>"&lt;%= post.title %&gt;"</code> <code>data-url=</code><code>"&lt;%= page.permalink %&gt;"</code><code>&gt;&lt;</code><code>/div</code><code>&gt;</code>

<code>    </code><code>&lt;!-- 多说评论框 end --&gt;</code>

<code>    </code><code>&lt;!-- 多说公共js代码 start (一个网页只需插入一次) --&gt;</code>

<code>    </code><code>&lt;script </code><code>type</code><code>=</code><code>"text/javascript"</code><code>&gt;</code>

<code>    </code><code>var duoshuoquery = {short_name:</code><code>'&lt;%= config.duoshuo_shortname %&gt;'</code><code>};</code>

<code>      </code><code>(</code><code>function</code><code>() {</code>

<code>        </code><code>var ds = document.createelement(</code><code>'script'</code><code>);</code>

<code>        </code><code>ds.</code><code>type</code> <code>= </code><code>'text/javascript'</code><code>;ds.async = </code><code>true</code><code>;</code>

<code>        </code><code>ds.src = (document.location.protocol == </code><code>'https:'</code> <code>? </code><code>'https:'</code> <code>: </code><code>'http:'</code><code>) + </code><code>'//static.duoshuo.com/embed.js'</code><code>;</code>

<code>        </code><code>ds.charset = </code><code>'utf-8'</code><code>;</code>

<code>        </code><code>(document.getelementsbytagname(</code><code>'head'</code><code>)[0]</code>

<code>         </code><code>|| document.getelementsbytagname(</code><code>'body'</code><code>)[0]).appendchild(ds);</code>

<code>      </code><code>})();</code>

<code>      </code><code>&lt;</code><code>/script</code><code>&gt;</code>

<code>    </code><code>&lt;!-- 多说公共js代码 end --&gt;</code>

<code>  </code><code>&lt;</code><code>/section</code><code>&gt;</code>

<code>  </code><code>&lt;% } %&gt;</code>

重新发布站点,点开一篇文章看到评论框已经加载成功。

继续阅读