如何在github上搭建个人博客

 我来答
就烦条0o
2016-07-17 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46487
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
一、为什么在GitHub上托管个人博客

为什么在GitHub上托管博客,这个问题可以分两步来问:

首先,为什么 可以 在GitHub上托管博客?

GitHub是一个基于git的版本托管服务网站,上面聚集着几乎全世界的程序大牛,还有着大量的牛逼开源项目。而项目一旦成长壮大,一个简单的名称和一段描述很可能就无法满足作者与读者的需要。此时,GitHub Pages 就应运而生,它允许用户用更具描述性的自定义页面代替源码列表。同时,用户也可以利用其作为个人或组织主页,将 静态 网页托管其上。

那么,在有着WordPress等等大量的开源博客系统的情况下,为什么选择在GitHub上托管博客呢?

对程序猿来说无比亲切,光是看起来感觉就很牛逼的"Git驱动式博客开发与发布流程"。

超级容易,5分钟包学包会的发布方式。

静态页面,建立简单,几乎没有安全性隐患,当然这也是缺点之一,静态页面无法做到太过复杂的交互设计和网站结构。不过作为一个简单的个人博客,也不太会有这样的需求

免费而可靠

更加详细的内容可以参见这里 todo: Jekyll + GitHub Pages 的优点与缺点

话不多说,现在就来试试看。

<p id="002"></p>

二、10分钟快速搭建一个博客原型

首先确认:

拥有一个GitHub账号

已经安装 Git ,(在Windows下,个人推荐直接安装 GitExtensions ,有中文界面,并且集成了git + putty + kDiff ,比较省心一点啦)

1.建立一个项目

先在GitHub创建一个项目,名字随意,尽量全部小写字母,避免随后会碰到的URL冲突问题

本地运行Git,随意选个目录,将刚才创建的项目clone下来
<!-- lang: bash -->
cd /d/
git clone https://github.com/narcotics726/blogdemo.git
cd blogdemo

<br/>
<br/>

2.建立配置文件_config.yml

注意:之后建立的所有文档务必使用UTF-8 无 BOM 的编码保存

在项目的根目录下新建文件 _config.yml ,填写 baseurl: /blogdemo , blogdemo是你的项目名称,这一行内容规定了整个网站的根路径,稍后会详细解释这样做的意义。
<br/>
<br/>

3.建立主页

在根目录下新建文件 index.html , 内容像这样:
<!-- lang: html -->

---
title: Hello, My Blog
---

{{ page.title }}

先不用急着奇怪为什么一个html文件会出现"{}"这样的标签,这里使用的是 Liquid 模板语言 ,{{ page.title }} 表示“本页面的标题”,更详细的介绍我们以后再讲,不妨这样理解:
<!-- lang: python -->

#--- begin of page's head
title = "Hello, My Blog"
#--- end of page's head

print(page.title)

OK,那么博客主页设计完毕!(别吵...我答应过你要10分钟内搭建完成的...先弄个毛胚房意思意思,美化啊功能啊什么的晚点再说)
<br/>
<br/>

4.发布到GitHub

回到git bash, 检查一下 git status ,确认 _config.yml 与 index.html 无误后 add,commit,保持使用Git的良好习惯,记得添加提交描述

然后推送到GitHub,这里注意,因为我们使用的是GitHub Pages中的 Project Pages, GitHub仅会将分支 gh-pages 下的内容进行自动生成操作, 所以本地的 master 分支应推送到远端的 gh-pages 分支
<!-- lang: bash -->

git push origin master:gh-pages

稍微等待一下,最多10分钟(通常不用那么久啦),访问 yourname.github.com/blogdemo
,(其中 yourname
是你的GitHub帐户名,blogdemo则是你的项目名)就会看见你的博客主页(确实很丑...而且完全不像一个博客的样子,不过别急,慢慢来比较
快~)

另外,如果不幸发现你的中文页面出现了乱码的情况,别着急,还是该死的UTF-8问题,后面我们会一劳永逸的解决他的,暂时先手动调整一下浏览器的编码。

<br/>
<br/>

5.在_posts内撰写文章,并在首页加入文章列表

在这段时间里,我们继续为你的博客添砖加瓦,让他拥有最基本的文章阅读功能,另外不断F5页面的同时也可以关注一下自己在GitHub注册时所用的邮箱,如果之前推送的内容有误的话,GitHub将以邮件形式提醒你生成失败。

回到项目根目录, mkdir _posts 新建一个目录,看名字也知道啦,这里存放你所有的文章。

进入_posts目录,新建一篇文章。注意默认的文件名格式是 year-month-day-postTitle 这样。比如 2013-03-23-my_first_article.md,尽量避免空格或者其他乱七八糟的字符,这个文件名将作为URL的生成依据。文件名的格式可以通过修改 _config.yml 中的 permalink 属性而改变,默认值为 date ,也就是我们刚刚创建的文件的样子,具体的规则可以看这里,后面我们也会讲到。

如果你发现了我刚才创建的文件后缀名是 .md ,熟悉GitHub或者StackOverFlow的朋友应该知道Markdown 格式,推荐使用GitHub托管博客的原因之一也正是如此,我们可以在大部分时候避开恼人的HTML,转而使用更加直观的Markdown语法。如果不熟悉也没关系,可以参见这份Markdown 语法说明,应该说是相当易学,并且在熟悉之后非常易用的。

回到主题,打开刚才创建的文件,输入如下内容:
<!-- lang: html -->

---
title: 我的第一篇文章
---

# {{ page.title }}

## 目录
+ [第一部分](#partI)
+ [第二部分](#partII)
+ [第三部分](#partIII)

----------------------------------

## 第一部分 <p id="partI"></p>
这里是第一部分的内容

----------------------------------

## 第二部分 <p id="partII"></p>
这里是第二部分的内容

----------------------------------

## 第三部分 <p id="partIII"></p>
这里是第三部分的内容

{{ page.date|date_to_string }}

这段内容中使用了最常用的几种Markdown语法,比如使用 # ,## 表示 HTML 中的 <h1></h1> , <h2></h2>。使用[text](link)创建超链接,使用 连续多个 - 创建水平线(注意:不包括最上端包围title所使用的横线,那里表示一个页面的“头属性”),等等。更多详细的语法可以在之前提到的页面查询,这里不再赘述,总之,这是一种更加贴近真实写作的语法,推荐大家尝试。

啊对了,最后面的那个 {{ page.date|date_to_string }} 是指显示本页的日期属性,并且转换为可读的字符串形式。同样也是Liquid语法。

OK,那么第一篇文章也写好了,再把最新的repo推送到github,稍等片刻,就可以...等下,忘记给文章加上入口的链接了。

Sorry啦,重新打开我们的 index.html 文件,添加内容,变成下面这样:
<!-- lang: html -->

---
title: My Blog
---

{{ page.title }}

{% for post in site.posts %}

{{ post.date|date_to_string }} <a href='{{ site.baseurl }}{{ post.url }}'>{{ post.title }}</a>

{% endfor %}

唔...都是Liquid的内容,简单解释一下,Liquid标记最主要分为两种,一种是直接输出变量内容,像这样:

{{ page.title }}

另一种则是逻辑命令形式的,像这样:

{% for x in y %} ... {% endfor %}

而刚才写进主页的内容,就是遍历所有post文件,然后逐一显示在页面上,这里需要注意的一点就是在创建文章的超链接时,除了 post.url 之外,也要注意在前面加上site.url
,原因前面也有提到过,我们正在创建的是 Project Pages
类型的网站,其最终生成的网址根目录是:username.github.com/projectname,而 post.url
生成的超链接仅仅会自动加上 username.github.com/ 这样的前缀。

现在检查一下更改的所有内容,确认不要犯下愚蠢的错误,比如把 "." 打成 "。"或者单词拼错之类的,提交并推送!

当当!如果一切顺利,就能看到你的首页外加文章列表闪亮登场。

<br/>
<br/>

6.增加模板套装_layouts

文章进行到这里,或许开头承诺的10分钟已经超过不少了...很抱歉我欺骗了你,不过至少我们进展很快~接下来——如果你仍有兴趣的话,让我们为网站增加一些统一性的风格设置。

回到项目根目录,新建文件夹 _layouts,顾名思义,“布局”是也。在 _layouts 中新建一个最基本的布局文件,姑且命名为default.html好了:
<!-- lang: html -->

<!DOCTYPE html>

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>{{ page.title }}</title>
</head>
<body>

{{ content }}

</body>
</html>

诺,首先解决了UTF-8的编码问题,随后指定了正文内容的位置,当然在这里只是一个最简单的内容,在body内仅有一个 {{ content }} 标签,你可以根据自己的喜好对页面进行任何改动,只要记得保留这个内容标签在你想要的位置就好。

然后我们修改index.html和刚写完的那篇文章,只要在头属性上加一句就好:
<!-- lang: html -->

---
title: xxoo
layout: default.html
---

我们当然还可以把这个结构变得更灵活一些,比如继续新增两个模板分别叫做l_post.html与
l_index.html,他们首先引用default.html,但在其基础上做出一定的修改。然后首页使用l_index模板,而所有的post文件
则使用l_post模板,等等等等,请随意发挥。但始终记得加上 {{ content }} 标签

再次推送到服务端,查看效果。

至少这一点我没骗你,要发布最新的更改实在是太简单了,只需要一次push而已。

那么,基本的项目结构如下:
.
|-- _config.yml
|-- _includes
|-- _layouts
| |-- default.html
| `-- post.html
|-- _posts
| |-- 2007-10-29-why-every-programmer-should-play-nethack.textile
| `-- 2009-04-26-barcamp-boston-4-roundup.textile
|-- _site
`-- index.html

这幅图来自于:Yes We Jekyll,原谅我的懒惰,我实在不擅长排版...
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式