通过GitHub Pages建立个人站点总结与体会
通过GitHub Pages建立个人站点总结与体会 ----Git+Github+Jekyll+Markdown
blog
Git
(不会?请参照简易教程学习Git的总结)
首先感谢雨知网站作者博文指点.
Github
两种pages模式
User/Organization Pages 个人或公司站点
1) 使用自己的用户名,每个用户名下面只能建立一个
2) 资源命名必须符合这样的规则username/username.github.com
3) 主干上内容被用来构建和发布页面
Project Pages 项目站点
1) gh-pages分支用于构建和发布
2) 如果user/org pages使用了独立域名,那么托管在账户下的所有project pages将使用相同的域名进行重定向,除非project pages使用了自己的独立域名
3) 如果没有使用独立域名,project pages将通过子路径的形式提供服务username.github.com/projectname
4) 自定义404页面只能在独立域名下使用,否则会使用User Pages 404
5) 创建项目站点步骤:
$ git clone https://github.com/USERNAME/PROJECT.git PROJECT
$ git checkout --orphan gh-pages
$ git rm -rf .
$ git add .
$ git commit -a -m "First pages commit"
$ git push origin gh-pages
可以通过User/Organization Pages建立主站,而通过Project Pages挂载二级应用页面。
1)创建个人站点
2)设置站点主题,进入你的项目-setting
3)更新你的站点
4) 选择主题并发布
简明扼要步骤在github网页上建立项目,本地克隆或建同名称项目,在git bash上操作如下:
切换到项目目录->git init
->git add --all
->git commit -m "xxx"
->git remote add origin git@github.com:yourgithubname/yourdemo
->git push origin master
其中克隆的话只需前后两步.
使用Jekyll搭建博客
Jekyll是一种简单的、适用于博客的、静态网站生成引擎。它使用一个模板目录作为网站布局的基础框架,支持Markdown、Textile等标记语言的解析,提供了模板、变量、插件等功能,最终生成一个完整的静态Web站点。说白了就是,只要安装Jekyll的规范和结构,不用写html,就可以生成网站。jekyll本地环境搭建
需要下载ruby,我下的
Ruby 2.2.2
在下载时勾选环境变量,path中配置那一项,然后在电脑的开始->所有程序->Ruby文件夹->start command prompt命令行终端下输入gem update --system
来升级gem
此处可能会出现: gem update --system的Gem::RemoteFetcher::FetchError错误
方法:索性换成淘宝的镜像。
gem source
查看列表;
gem source -a http://ruby.taobao.org
加入淘宝的源,居然没用https,也就不存在这个问题了;
gem source -r https://rubygems.org/
干掉缺省的源;
gem update --system
(此命令在Ruby文档下完成)
下载最新的DevKit
在刚才的命令行中敲入
cd C:\DevKit
ruby dk.rb init
ruby dk.rb install
继续:gem install Jekyll
并使用命令检验是否安装成功jekyll --version
安装Rdiscount,这个用来解析Markdown标记的包,使用如下命令gem install rdiscount
此时再cd到工程目录,但是在start command prompt是切换不过来的,应到Git bash 中切换到工程目录
再敲击jekyll serve
雨知博客中没有记载的很明确到底这行代码在那个命令端里完成的,所有造成我诸多错误,如下:
此时博客环境已经搭建好了.
再进行博客等的创建:
到想要创建项目的文件夹下(如cd d:xxx),运行命令:jekyll new blog
这样就会创建一个新文件夹d/blog,其结构如下:
1.文件夹_layouts:用于存放模板的文件夹,里面有两个模板,default.html和post.html,或许还有page.html.
2.文件夹_posts:用于存放博客文章的文件夹,里面有一篇markdown格式的文章--2014-01-27-welcome-to-jekyll.markdown,可做自行修改为:
---
layout: mylayout
title: "myblog"
date: 2015-07-18 06:53:46
categories: jekyll update
---
Welcome to my blog
3.文件夹css:存放博客所用css的文件夹(或许还有sass文件,不需要就可以删掉)
4..gitignore:可以删掉,后面会将项目添加到git项目,所以这个不需要了.
5._coinfig.yml:jekyll的配置文件,里面可以定义相当多的配置参数,具体配置参数可以参照其官网.
我的_coinfig.yml配置如下:
# Site settings
title: myblog
email: sumo_dream@sina.com
description: > # this means to ignore newlines until "baseurl:"
Write an awesome description for your new site here. You can edit this
line in _config.yml. It will appear in your document head meta (for
Google search results) and in your feed.xml site description.
baseurl: "" # the subpath of your site, e.g. /blog/
url: "http://ctct.github.com" # the base hostname & protocol for your site
twitter_username: sumo_dream
github_username: sumodream
encoding: utf-8
# Build settings
markdown: kramdown
comments :
provider : disqus
disqus :
short_name : tiansj
6.index.html:项目的首页.
我的首页如下:
---
layout: default
title: myblog
---
<div class="home">
<h1 class="page-heading">Posts</h1>
<ul class="post-list">
{% for post in site.posts %}
<li>
<span class="post-meta">{{ post.date | date: "%b %-d, %Y" }}</span>
<h2>
<a class="post-link" href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a>
</h2>
</li>
{% endfor %}
</ul>
<p class="rss-subscribe">subscribe <a href="{{ "/feed.xml" | prepend: site.baseurl }}">via RSS</a></p>
</div>
根据实际需要,可能还需要创建如下文件或文件夹:
1. _includes:用于存放一些固定的HTML代码段,文件为.html格式,可以在模板中通过liquid标签引入,常用来在各个模板中复用如 导航条、标签栏、侧边栏 之类的在每个页面上都一样不变的内容,需要注意的是,这个代码段也可以是未被编译的,也就是说也可以使用liquid标签放在这些代码段中(会自动生成head.html,header.html,footer.html)
2. image和js等自定义文件夹:用来存放一些需要的资源文件,如图片或者javascript文件,可以任意命名
3.CNAME文件:用来在github上做域名绑定的(貌似目前的域名都是要钱的可在域名网站上购买,使用github便不收取费用,但可能不是你心仪的域名)
添加CNAME文件
在仓库根目录下添加一个CNAME文件,没有后缀名,里面内容为你的域名(如:test.com),不需要添加http/www等前缀。打开cmd,
ping username.github.io记录下IP地址
添加 DNS Service记录
去DNSPod注册个账号,添加域名,设置两个A记录。分别是@和w w w,ip地址填上个步骤获取的IP地址
设置域名的DNS
在相应域名的Csutom DNS里,设置DNS service,添加两条记录f1g1ns1.dnspod.net和f1g1ns2.dnspod.net
漫长的等待
要全球解析生效,得等上一会了,也可以先ping一下自己的设置对不对
- favicon.ico:网站的小图标
大致上jekyll生成html的流程,jekyll首先会读取如下内容进入内存中:
1. _posts及文件夹下的所有文章,将其参数和文章内容组织保存在内存中,所有的文章的内容、参数都在site.posts对象(其他文件夹下的文章不会放入site.posts中)
2. _layouts文件夹下的所有模板
3. _includes文件夹下的所有需要被引入的内容
可以看一下_posts下的jekyll给的例子:
---
layout: post
title: "Welcome to Jekyll!"
date: 2014-01-27 21:57:11
categories: jekyll update
---
You'll find this post in your `_posts` directory - edit this post and re-build (or run with the `-w` switch) to see your changes!
To add new posts, simply add a file in the `_posts` directory that follows the convention: YYYY-MM-DD-name-of-post.ext.
Jekyll also offers powerful support for code snippets:
{% highlight ruby %}
def print_hi(name)
puts "Hi, #{name}"
end
print_hi('Tom')
#=> prints 'Hi, Tom' to STDOUT.
{% endhighlight %}
Check out the [Jekyll docs][jekyll] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll's GitHub repo][jekyll-gh].
[jekyll-gh]: https://github.com/mojombo/jekyll
[jekyll]: http://jekyllrb.com
可以看到在博文的最上方有被两个---包裹起来的一段,这里就定义了文章的一些参数,更多参数在FrontMatter和Variables获取,简单的只需要关注几个就好:
1. title:文章的标题
2. date:文章的日期
3. categories:定义了文章所属的目录,一个list,将会根据这个目录的list来创建目录并将文章html放在生成的目录下,文章分类时候用,这里就不使用了
4. layout:文章所使用的模板名称,也就是_layouts中定义的模板的文件名去掉.html
5. tags:例子中没有,定义了文章的标签,也是一个list,文章分类时候用,这里就不使用了.
将这个写完的文章保存为 “年-月-日-标题.markdown”的名字形式,因为如果不修改permlinks,jekyll会根据文章的标题来创建文件夹,如2014-01-27-hello会创建成/2014/01/27/hello.html。这里就保存成2014-01-27-hello.markdown
ps:文章的文件名不要使用中文,否则会出现bug,因为在url中会escape,而服务器查找却是按照escape后的字符串去查找
,就会出现找不到文章的情况,使用英文代替就好,定义了title变量就无所谓文件名中标题的内容了.
我们可以打开jekyll给的例子default.html看一看模板的结构:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>{{ page.title }}</title>
<meta name="viewport" content="width=device-width">
<!-- syntax highlighting CSS -->
<link rel="stylesheet" href="/css/syntax.css">
<!-- Custom CSS -->
<link rel="stylesheet" href="/css/main.css">
</head>
<body>
<div class="site">
<div class="header">
<h1 class="title"><a href="/">{{ site.name }}</a></h1>
<a class="extra" href="/">home</a>
</div>
{{ content }}
<div class="footer">
<div class="contact">
<p>
Your Name<br />
What You Are<br />
you@example.com
</p>
</div>
<div class="contact">
<p>
<a href="https://github.com/yourusername">github.com/yourusername</a><br />
<a href="https://twitter.com/yourusername">twitter.com/yourusername</a><br />
</p>
</div>
</div>
</div>
</body>
</html>
可以看到,模板和普通的html文件几乎是一样的。jekyll使用的是一个叫liquid的模板引擎创建html文件,这个模板引擎也有详细的文档,现在就只关注其中比较核心的部分,文章的标题和文章的内容.
可以看到模板的有这么两句{{ page.title }}, {{ content }},这两句就分别是文章标题和文章内容的占位符,如果有文章使用了这个模板,如过使用上面写的那篇welcome的文章,标题就是myblog,content就是Welcome to my blog,这里定义一个自己的新模板,保存为mylayout.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
</head>
<body>
{{ page.title }}
{{ page.date }}
{{ content }}
</body>
</html>
第一行是标题,然后是博文时间(在文件名中定义),然后是博文内容
这样一个简单的模板就创建好了.
在博客文件夹下,在命令行中输入jekyll build --trace
就可以将所有文章文件根据其模板进行编译,生成结果,放在根目录下的_site
中,这里我们使用后,会出现如下结果:\blog_site\2015\07\18文件夹下有一个welcome.html,其内容为:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Sumo</title>
</head>
<body>
Welcome to Myblog!
2015-07-18 14:53:46 +0800
<p>Welcome to my blog</p>
</body>
</html>
可以看到,这就是编译完的博文文件,如我们设定的,第一行是标题,然后是文件名定义的时间,然后是博文内容,如果编译错误,将会在命令行中看到一个错误栈,可以方便调试,具体哪里出错了,如果不需要看错误栈,直接使用jekyll build就行了
之后在浏览器打开yourgithubname.github.io(com)进入site主页,或是直接打开yourgithubname.github.io/blog就可以看见index.html的内容中,点击文章的标题就可以跳转到具体的博文了.
Github Page完成了博客的主要功能,写作、发布、修改,这些都是相对静态的东西,就是你自己可以控制的事情,还有一些动态的东西Github Pages无法支持,比如说文章浏览次数、文章的评论等,还有一些个性化的东西,像个性化页头页尾、代码高亮可以把博客整的更漂亮一点,其实这写都可以通过第三方应用来实现,个性化自己的博客。加上Disqus云评论:注册http://disqus.com/
使用Markdown
Markdown的宗旨是实现「易读易写」。可读性,无论如何,都是最重要的。
Markdown 的语法全由一些符号所组成,这些符号经过精挑细选,其作用一目了然。格式撰写的文件可以直接以纯文本发布,并且看起来不会像是由许多标签或是格式指令所构成。(我还是使用的原始化马克飞象,>...<)在谷歌应用里添加的马克飞象,话说目前觉得还是很便利的(尽管没有css样式,好吧,>...<)...
剩下的活就是给个人站点定制样式和特效啦,我也得慢慢琢磨啦......逃:)
通过GitHub Pages建立个人站点总结与体会的更多相关文章
- 通过GitHub Pages建立个人站点(详细步骤)
1 Git简介 2 为什么使用Github Pages 3 创建Github Pages 3.1 安装git工具. 3.2 两种pages模式 3.3 创建步骤 3.4 常用命令 4 使用Jekyll ...
- Github Pages建立个人博客
使用Github Pages可以建立个人博客.官方教程:https://pages.github.com/步骤(以下步骤中假设用户名为username):1.建立一个项目,项目名为username.g ...
- Github Pages 建立过程记录
之前建立过一个測试页面. 如今在折腾CreateJS 试着把离线版的文档传到github pages上面. 第一步:创建Repository 第二步:本地初始化 主要命令:git init 第三步:复 ...
- 利用Github Pages建立仓库“门面”
嘛是Github Pages? Github Pages 是一个静态网站托管服务,用来从你的Github仓库中直接发布 个人.组织或项目的网站页面 Github Pages发布的页面统一使用githu ...
- GitHub Pages建立第一个静态页面
1.创建仓库 创建仓库点击右上角的加号,选择newrepository.然后对仓库信息进行设置.注意箭头标识的几个地方.仓库名必须是http://username.github.io的形式.必须勾选p ...
- GitHub Pages:静态站点托管服务(待补充)
不管是 react 还是 vue 项目路由都必须使用 hash 方式,否则页面打不开,切记!!! 如果使用的是 vue-cli 3 创建项目,那么你要在根目录创建 vue.config.js 文件,并 ...
- Github pages + Minimal-Mistakes + Disqus建立个人博客记录
本文详细记录了利用Github pages建立个人博客的步骤. github pages官方推荐使用Jekyll生成静态网页,jekyll支持各种不同的主题,Minimal-Mistakes是一个功能 ...
- 使用Github Pages建独立博客
http://beiyuu.com/github-pages/ Github很好的将代码和社区联系在了一起,于是发生了很多有趣的事情,世界也因为他美好了一点点.Github作为现在最流行的代码仓库,已 ...
- 如何搭建一个独立博客——简明Github Pages与Hexo教程
摘要:这是一篇很详尽的独立博客搭建教程,里面介绍了域名注册.DNS设置.github和Hexo设置等过程,这是我写得最长的一篇教程.我想将我搭建独立博客的过程在一篇文章中尽可能详细地写出来,希望能给后 ...
随机推荐
- The MESI Protocol
COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION To provide cache cons ...
- System.Linq.Dynamic的使用
项目中经常用到组合条件查询,根据用户配置的查询条件进行搜索,拼接SQL容易造成SQL注入,普通的LINQ可以用表达式树来完成,但也比较麻烦.有个System.Linq.Dynamic用起来比较方便. ...
- Xshell远程连接工具
下载地址:http://rj.baidu.com/soft/detail/15201.html?ald Xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft ...
- Log4J的入门简介学习【转】
原文:http://blog.csdn.net/lengyuhong/article/details/5832799 简介: Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以 ...
- Runtime详解
http://yulingtianxia.com/blog/2014/11/05/objective-c-runtime/
- HTTP参数中Etag的重要性
在研究tornado时,有个Etag比较好奇,从网上查询摘录如下:
- cloudera learning7:Hadoop资源管理
Linux Control Groups(cgroups):在操作系统级别进行资源分配,可通过Cloudera Static Service Pools配置. YARN调度器配置:对运行在YARN上的 ...
- zabbix 自定义探索规则发现服务器上面的kvm虚拟机和对应的网卡
安装完zabbix服务器之后 只有两个探索规则模版,挂载点探索和网卡探索 场景描述:想使用zabbix监控kvm虚拟机的网卡的流量情况, 获取虚拟机和网卡对应关系 虚拟机 S-1 virsh domi ...
- FTP客户端连接时中文乱码问题处理
1.问题场景: 使用FileZilla连接FTP时发现中文字符有乱码,如题: 2. 分析问题: 主要是字符问题引起的:FileZilla是自动检测字符集的,会导致部分中文字符集显示异常: 3.解决方法 ...
- SQL索引添加
EXPLAIN select * from view_agzsaycommont where id >0