利用Octopress在Github搭建一个博客

image

引言

Octopress是利用Jekyll博客引擎开发的一个博客系统,生成的静态页面能够很好的在github page上展现。号称是hacker专属的一个博客系统(A blogging framework for hackers.)

从自己开始使用Octopress搭建博客到正在写博客,中间差不多花了我三个星期,在这三个星期中,我走了很多的弯路,使用Octopress搭建博客的错误我相信我已经遇到80~90%了,所以想写一篇使用Octopress在Github上怎么搭建博客,一来为了与其他人分享,令想利用Octopress搭建博客的人少走一些弯路,另一方面也是自己对这方面的知识一个积累,首先我说一下我的在mac系统环境下搭建的,本文需要读者熟悉一些shell命令,并掌握基本的git操作。

目录

  • 1、搭建环境
  • 2、安装Octopress
  • 3、配置Octopress
  • 4、将博客部署到GitHub上
  • 5、开始写博客

1、搭建环境

Octopress需要Ruby环境,RVM(Ruby Version Manager)负责安装和管理Ruby的环境。所以我们先在终端输入如下命令,来安装RVM:

1、curl -L https://get.rvm.io | bash -s stable --ruby

先查看Ruby的版本号,在终端依次运行如下命令:

ruby -v

如果ruby的版本号大于1.9.3,那么就不用安装了,如果小于1.9.3那就需要安装Ruby

接着是安装Ruby 2.0.0,在终端依次运行如下命令:

1、rvm install 1.9.3
2、rvm use 1.9.3
3、rvm rubygems latest

完成上面的操作之后,运行ruby —v应该可以看到ruby 2.0.0环境已经安装好了。

参考:Installing Ruby With RVM

在安装Octopress时还需要make命令,所以还会用到command_line_tools,所以还需要下载Xcode,打开Xcode,到Xcode->preferences->Downloads,里面有一个command_line_tools点击下载。

2、安装Octopress

在安装Octopress之前,请确保你的电脑上已经安装有git了,在终端输入git —version,如果安装了可以看到电脑中的git版本(一般情况下,mac系统现在都已经自带git了),如果没有显示相关内容,请先安装git。

git安装之后,利用git命令将octopressgithub上clone到本机,如下命令:

1、git clone git://github.com/imathis/octopress.git octopress
2、cd octopress    # If you use RVM, You'll be asked if you trust the .rvmrc file (say yes).

接着安装相关依赖项:

1、gem install bundler
3、bundle install

最后安装默认的Octopress主题。

1、rake install

如果执行rake install报如下错误:You have already activated rake 0.9.6, but your Gemfile requires rake 0.9.2.2. Using bundle exec may solve this.

解决办法:打开Gemfile文件,把gem 'rake', '~> 0.9.0'修改成gem 'rake', '~> 0.9.6'

参考: Octopress Setup

3、配置Octopress

Octopress的作者已经尽量让配置简化了。大多数情况下只需要配置_config.ymlRakefile文件即可。其中Rakefile是跟博客部署相关,一般情况下并不需要修改这个文件,除非使用了rsync

config.yml是博客重要的一个配置文件,在config.yml文件中有三大配置项:Main ConfigsJekyll & Plugins3rd Party Settings

一般,该文件中其中url是必须要填写的,这里的url是在github上创建的一个仓库地址,具体请看第四步中创建的地址。另外再修改一下titlesubtitleauthor,根据需求,在开启一些第三方组件服务。

url: beyondabel.github.io     #网站地址 
title: abel之家               #网站标题 
subtitle: 天行健,君子以自强不息.地势坤,君子以厚德载物.     #网站副标题 
author: abel                      #网站作者,通常显示在页尾和每篇文章的尾部 
simple_search: http://google.com/search   # 搜索引擎 
description:             #网站的描述,出现在HTML页面中的 meta 中的 description

更多内容,请看这里的内容:Configuring Octopress

4、将博客部署到GitHub上

GithubPage service可以免费托管博客,并且还可以自定义域名。

首先需要在GitHub上创建一个仓库,并将仓库名称按照这样的方式进行命名:username.github.comorganization.github.com。等后面配置完毕之后,我们就可以在浏览器中使用页面地址http://username.github.com来访问我们的博客。一般来说,我们希望在将博客的源码放到source分支下,并把生成的内容提交到master分支。

创建好仓库之后,我们需要利用octopress的一个配置rake任务来自动配置上面创建的仓库:可以让我们方便的部署GitHub page。在终端输入如下命令:

1、$ rake setup_github_pages

上面的命令会做一些事情(详细介绍看下面给出的参考链接)。其中最主要的就是创建一个_deploy目录,目录用来存放部署到master分支的内容。期间会要求你输入仓库的url,根据提示,进行输入即可。 完成上面的命令之后,我们就可以生成博客并真正的部署到仓库中了。执行如下命令:

1、rake generate
2、rake deploy

上面的命令首先生成博客文件,并将生成的博客文件拷贝到_deploy/目录下,然后将这些内容添加到git中,并commit和push到仓库的master分支。

现在可以访问http://username.github.io了。注意:有时候可能会有延时,要等几分钟才能打开。 至此,我们的博客已经完成基本的部署。

如果在部署到仓库之前,需要先预览一下博客,可以在终端输入rake preview命令,然后就能在浏览器中进行本地预览访问了:http://127.0.0.1:4000/http://localhost:4000/,效果跟仓库中的一样。 参考:Deploying to Github Pages

如果本地访问时出现了404错误,请关注一下你生成的文件是否直接在public目录下,如果不在,请修改一下config.rb文件,使http_path = "/"。如果访问http://username.github.com上出现了404错误,看一下你的repositories是否有内容,如果有,请你再次确认你的repositories的名称是否是username.github.io,如果不是,那么请用http://username.github.io/[your repositories name],如果还是不行,请关注一下,你的账号是否使用邮箱激活了,如果没有,请先激活,然后删除这个repositories重新再来。

5、开始写博客

Octopress为我们提供了一些task来创建博文和页面。博文必须存储在source/_posts目录下,并且需要按照Jekyll的命名规范对文章进行命名:YYYY-MM-DD-post-title.markdown。文章的名字会被当做url的一部分,而其中的日期用于对博文的区分和排序。

通过Octopress提供的task可以正确的按照命名规范创建一个博文,并且在博文中会附带常用的一些yaml元数据。只需要在终端输入如下命令:

1、rake new_post["title"]

其中title为博文的文件名,创建出来的文件默认是markdown格式。上面的命令会创建出这样一个文件:source/_posts/2013-08-03-title.markdown。打开这个文件,可以看到里面有如下一些内容了(告诉Jekyll博客引擎如何处理博文和页面):

---
layout: post
title: "title"
date: 2013-12-26 16:36
comments: true
categories: 
---

接着我们就可以在这个文件中写我们的博文啦。完成之后,我们可以预览和部署博文。下面是创建并部署博文的一个完整过程:

1、$ rake new_post["New Post"]
2、$ rake generate
3、$ rake deploy

参考:Blogging Basics

到此,我们使用Octopress在Github上博客就搭建好了,这中间如果遇到什么问题,可以给我留言。接下来,我将带给大家如何更换博客样式,如何添加评论。





Comments