利用OCtopress在github上搭建博客
目录
- 安装ruby
- 安装Octpress
- 配置Octopress
- 部署Octopress
- 开始写博客
- 更换主题
- 绑定域名
- 回顾
1、安装Ruby
Octopress需要Ruby环境,那么就来装下Ruby环境。
首先安装RVM,RVM是用来负责安装和管理Ruby的环境
1
|
|
接着安装Ruby
1 2 3 |
|
2、安装Octopress
首先,请确认你的机子已经安装了git。 git 安装之后,利用git命令将octopress从github上clone到本机。
1 2 3 4 5 6 |
|
参考:http://octopress.org/docs/setup/
3、 部署Octopress
3.1、在github上托管我们的blog
具体做法:
在github创建仓库,按照 username.github.io 命名即可(之前是username.github.com,不过由于 Github 一系列原因改成了.io)(注意,这里 username 一定要为你的 github 用户名)
配置好仓库后,我们需要利用Octopress的一个配置rake任务,来自动配置blog。
1
|
|
上面的命令会做一系列操作
- 会创建
_deploy
目录(该目录在 master 下),该目录用来存放部署到master分支的内容(username.github.io 的内容是在master分支下的)。 - 并且source/_post/ 目录是存放你所写的文章源码。
期间会要求输入远程仓库的url。
- 会自动切换到 source 分支,以后就直接在这分支上干活。
- 注意,master 分支不要动,完全可以忽视它了。
3.2、初次部署项目
1 2 |
|
访问属于你的 blog:
1
|
|
此时应该能够访问到你的 blog 了 :)
源码需要单独提交到git
1 2 3 4 |
|
4、配置Octopress
大多数只需要配置config.yml 和 Rakefile文件即可,不过Rakefile文件跟博客部署有关,一般不会去动。 config.yml是博客很重要的一个文件,根据需求开启第三方组件等等。另外,其中的URL需要填写github上的远程仓库地址。
5、开始写博客
新建一篇文章
1
|
|
该操作会在_post目录下生成一个markdown文件,编辑该md文件写文章。
1 2 3 4 5 |
|
6、更换主题
到网上搜索主题,比如我现在使用的主题Slash。
1 2 3 4 |
|
7、绑定域名
比如我有一个 linjunzhu.me
这个域名,那要如何做才能当我访问linjunzhu.github.io
会自动跳转到linjunzhu.me
进行访问呢?
- 在 Github 中的博客仓库中,添加一个
CNAME
文件,里面写明我们所跳转的域名linjunzhu.me
- 使用 DNS 解析服务,将我们的域名指向该地址。
不过,由于 rake generate
和 rake deploy
每次都会重新生成整个master
分支,建议第一步不要直接在 Github 上操作。
而是在 Source 分支下的 source 目录添加CNAME
文件。
这样当运行rake generate
时会将source
目录整个复制到public
目录,运行rake deploy
则会将public
目录整个复制到_deploy
目录。
8、回顾
当成功后,我们访问linjunzhu.github.io
时,会自动跳往linjunzhu.me
,这时 Chrome 会自动缓存起来,以后访问linjunzhu.github.io
都会自动跳往后者(无论有无 CANME)。
因此,当时我CNAME
文件丢失后,访问linjunzhu.github.io
总会自动跳往后者并且显示404
,搞了许久以为是博客搞乱了,其实是 Chrome 的原因。
有人会问,为什么我还需要在分支上创建CNAME
文件,而不能直接用 DNS 解析服务,将域名指向linjunzhu.github.io
不就完事了吗?
因为 Github 做了处理,只有域名是linjunzhu.github.io
才会跳往至博客页面,而访问linjunzhu.me
,域名不符,是不会的,因此才需要第一步创建CNAME
9、Tips
此时你本地的博客仓库会有两个分支
master / source
远程仓库也有两个分支
master / source
注意 master 分支 本地与远程两者并不是对应的。
- 远程的 master 分支对应的是 本地的
_deploy
文件夹 (无关 master/source, _deploy 可以说是一个新的仓库了) - 远程的 source 分支对应的是 本地 source 分支 ( 会 ignore 掉 _deploy 文件夹等)