开篇先引阮一峰一句话,Blogger的三大阶段
第一阶段,刚接触Blog,觉得很新鲜,试着选择一个免费空间来写。
第二阶段,发现免费空间限制太多,就自己购买域名和空间,搭建独立博客。
第三阶段,觉得独立博客的管理太麻烦,最好在保留控制权的前提下,让别人来管,自己只负责写文章。
几多年前我也写过博客,像是新浪博客百度空间一类的,各种杀马特的主题,再加以固定的模式和烦人的广告,感觉十分不爽。近来在GitHub上搭建博客已经成为了一种潮流。一方面GitHub提供托管,方便实施;另一方面,自己对博客的整个流程具有绝对的掌控。今天把流程放在个人博客上,希望对大家有所帮助。
大名鼎鼎的WordPress就不用介绍了,官网上说它:
在性能上易于操作、易于浏览;在外观上优雅大方、风格清新、色彩诱人。
实际用了一下,大致如此。在SAE上的布置也是很简洁愉快的,下面单步说明。
前置条件:SAE
App Engine是在云计算时代衍生出的云平台,是部署在数据中心上的虚拟化服务,相比于传统的物理服务器,其优势很明显:
总的来说,云平台高大上。本来也想用GAE,但由于众所周知的GFW,想想就算连着也不会流畅,还是放弃了。打个广告:
Google Cloud Platform 新手包,注册即送500$
提供虚拟机的SSH,自己电脑能顺利连上的话,做个workplace还是不错的
SAE优势在于国内,中文。注册都不用,绑定新浪账号就行。
搭建WordPress直接用SAE自己的应用仓库就好。 记得把MySQL,memCache服务都初始化一下。 搭建完成,点到刚刚建好的云应用地址,设置管理员账号密码。
确实很简洁,符合我的预期。插件支持良好,SAE也很有亲和力。但唯一让我不爽的还是所见即所得的编辑模式。因为在这种模式下,做不到writing without mouse,老拿鼠标排版算是个什么玩意。我要Markdown!
于是我开始了在WordPress上寻找Markdown的解决方案,找到了好几个第三方的插件,但都支持不良好。唯一可行的途径是,StackEdit上编辑要先导出html,再用插件发布到WordPress,格式不佳还需要调整。
总之WordPress内化了自己的排版方式,全过程就像是用Markdown生成个WORD一样。感觉十分极其别扭,换!
不过我给俱乐部搭了一个博客,WordPress对于html良好的兼容让ctrl c/v十分顺滑,welcome letter直接复制粘贴,格式完美,点个赞~
欢迎访问北航Toastmaster!
终于到今天主题了,以上三位兄弟强强联合,才叫优雅!
Jekyll: 一个轻量级,静态化的博客发布系统,有中文网站
GitHub: 红得发紫的分布式版本管理系统,有着程序员的Facebook的美誉
Markdown:轻量级标记语言,让用户协作专注于内容而不是排版,即是我推崇的writing without mouse
Jekyll一大特点是模块化,用户的模板,博客页面的设置都形成了各自的模块。发布博客时,只需要关心发布的内容即可。
Markdown的特点也是关注内容,排版只需要简单的标记,摆脱了一边用键盘写,一边用鼠标聚焦光标+排版的尴尬,类比VIM 和 Visual Studio的区别。
Git的介入,把个人博看看成一个项目,用户也可以checkout各种分支,多弄几个版本之间来回切换,当然不嫌折腾的话。虽然有点杀鸡用牛刀的意思,毕竟博客不同于代码,不用覆写不用调试,但这种新(dou)奇(bi)的思路还是值得鼓励哒!Anyway, 用Github可以大大提升逼格,因为像我这样的代码渣Github上连个仓库都木有╮(╯▽╰)╭
常用的两款编辑器:
Jekyll的作用简而言之,就是把本地写好的Markdown文件,按设置好的模板转换成HTML,并能开个服务挂在到Localhost上去。
1.安装Jekyll
gem install jekyll
ubuntu下可能会出现ruby库太老的情况,需要卸载了重新装,参考在ubuntu 12.04 上安装ruby
2.速度搞起
jekyll new my-fisrt-site
cd my-first-site
jekyll serve
3.去http://localhost:4000看看
好的你第一个博客就这么搭建好了,就这么简单。
下面我们来熟悉一下目录结构
.
├── about.md #关于页面
├── _config.yml #全局设置
├── css #样式集合
│ └── main.scss
├── feed.xml #RSS订阅
├── _includes #常用页面库
│ ├── footer.html
│ ├── header.html
│ └── head.html
├── index.html #主页
├── _layouts #常用模板
│ ├── default.html
│ ├── page.html
│ └── post.html
├── _posts #发表的博客在这里
│ └── 2014-09-03-welcome-to-jekyll.markdown
└── _sass #还是样式
├── _base.scss
├── _layout.scss
└── _syntax-highlighting.scss
Jekyll处理完毕后会生成_site的目录,这个目录下的文件就是你的静态页面了。
为满足diversity的需求,通常每位Blogger都要换N多主体。开始我们的换主题之旅吧。
首先在Jekyll的WIKI页面上可以找到茫茫多的主题。其中不少是中文的,按自己喜好,每个博客都附有git仓库地址,去fork他们的库就好。
这里说说fork和clone的区别。fork就像linux那个经典的系统调用一样,完完全全地把仓库给照搬过来。起先乍一看,fork和clone不一个意思么,一度被搞得很晕。参考StackOverflow上的一个回答:Git fork is git clone?
区别在于贡献给原作者的方式:
关于这些区别以后再讨论吧。clone别人的仓库也有两种方式:
1.简单粗暴型——在自己仓库的文件夹里把别人的拷过来 首先把自己的项目拷过来,然后把不想要的文件都git delete掉,没错就是这么暴力! 然后我们去clone别人的东东,然后拷过来,再add commit push,大功告成
git clone https://github.com/poole/lanyon #clone下来可以先jekyll serve一下本地看看
cp -rf ./* ../your-repo-name/
cd ../your-repo-name
git add *
git commit -m "anything"
git push origin master
2.优雅型——clone别人的仓库,镜像改成自己的
git clone https://github.com/poole/lanyon
cd lanyon
git push --mirror your-repo-address
cd ..
rm -rf lanyon
git clone your-repo-address
好像也有点晕。没事就是把别人的clone下来,然后镜像推到自己的仓库,再把本地别人的给删了,再把自己的clone回来。
起先为了逼格起见是想用GitHub来着,可读到文档说,把本地文章提交到GitHub服务器上,大约经过10分钟就可以访问了。。。呵呵
而且GitHub服务器毕竟在国外,心理延迟总觉得很长,要是改天再遇到个刷票门事件。。。呵呵
于是换中国特色的GitHub吧,找了找果然有,GitCafe
跟着这个WIKI建立一个Pages吧,这里需要说明一下,GitPages是一个特殊的git项目,相当于把本地Jekyll好的静态页面托管给了gitcafe,可以通过XXX.gitcafe.com访问到你的页面。一个账户就一个页面哦,因为项目名和你用户名同名。其实就是GitHub想给每个用户给一个免费的个人空间啦~
免费域名推荐.tk,因为免费,注册申请吧。 绑定也很简单,绑定的时候看WIKI页面就好。
修改一下文件:
起初我会觉得这个事情很复杂,因为是在为一个静态页面添加一个动态的评论工具。看到教程傻眼了,原来这么easy,就是引用一段js代码,突然理解了抢票门事件。
起初的打算是,要不放git页面上吧,直接引用本地文件得了。但联想到管理图片还要建一堆文件夹,更何况以后万一我的.md被人各种copy,图片丢了岂不很丢人。
本来想用谷歌+的,由于众所周知的原因放弃了。找个中国特色的吧
果然还是有啊,七牛云存储,体验很赞的说! 注册登录建立自己的库,加图片就好,每个图片都有外链的,而且访问速度超快!
步骤如下:
Jekyll自带高亮工具Pygments,在_config.yml中设置启用
pygments: true
Pygments是用python写的代码高亮样式的生成工具,安装:
easy_install pygments
通过下面的命令可以查看当前支持的样式:
>>> from pygments.styles import STYLE_MAP
>>> STYLE_MAP.keys()
['monokai', 'manni', 'rrt', 'perldoc', 'borland', 'colorful', 'default', 'murphy', 'vs', 'trac', 'tango', 'fruity', 'autumn', 'bw', 'emacs', 'vim', 'pastie', 'friendly', 'native']
选择一种样式,放在你的css目录下
pygmentize -S native -f html > pygments.css
“native”是样式名,“html”是formatter,css是生成的代码高亮样式。
写文章时,用如下格式来代码高亮:
<div class="highlight"><pre><code class="language-python" data-lang="python"><span class="o">//</span><span class="n">code</span> <span class="n">here</span></code></pre></div>
走过路过发现一枚插件,可以把小图标放上去,终于明白StackEdit里那些图标是怎么来的了。 来源于Bootstrap旗下的font-awesome。
Bootstrap 是Twitter推出的一个用于前端开发的开源工具包,简洁、直观、强悍的前端开发框架,让web开发更迅速、简单
Font Awesome 是一套完美的图标字体,主要目的是和Bootstrap 搭配使用
原谅我是个CSS渣,才知道这帮人是用的bootstrap生成的样式。
添加Font Awesome:将font_awesome.rb放到 _plugins/下即可。这样用:
#\{\% icon fa-user fa-lg \%\}
#
这里本来要放一堆漂亮的小图标的,奈何GitCafe上Jekyll 版本2.2.0不知道font-awesome的插件,本地生成是没问题的,以后有空再调试吧。
GitCafe个人主页的出错信息会email给用户,之前一直不知道在哪里看。