程序员一般都喜欢写blog,用来记录一些知识点防止以后忘记,或者方便查阅,这时候一个好的blog网页就派上用场了,本文主要讲解的是用jekyll来,在github pages搭建属于自己的blog。
1.搭建前须知:需要用到的 ruby、rvm、gem。
ruby:一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和RubyLicense。
rvm:用于帮你安装Ruby环境,帮你管理多个Ruby环境,帮你管理你开发的每个Ruby应用使用机器上哪个Ruby环境。Ruby环境不仅仅是Ruby本身,还包括依赖的第三方Ruby插件。都由RVM管理。
gem:Gem是封装起来的Ruby应用程序或代码库。在终端使用的gem命令,是指通过RubyGems管理Gem包。
2.假设你没有部署过任何ruby环境,那么可以安装相关软件:
$ sudo pacman -S ruby
检查是否安装成功 :
$ ruby -v
$ ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
安装成功之后不用再另外单独安装 rubygems 了,在ruby 下,rubygems已经是默认的ruby包管理程序,可以试试查看版本:
$ gem -v
$ 2.6.11
然后使用ruby的包管理程序gem来安装相关软件:
$ gem install rvm
Successfully installed rvm-1.11.3.9
Parsing documentation for rvm-1.11.3.9
Done installing documentation for rvm after 0 seconds
1 gem installed
$ gem install bundle
Successfully installed bundle-0.0.1
Parsing documentation for bundle-0.0.1
Done installing documentation for bundle after 0 seconds
1 gem installed
$ gem install bundler
Successfully installed bundler-1.15.4
Parsing documentation for bundler-1.15.4
Done installing documentation for bundler after 4 seconds
1 gem installed
3.安装jekyll:
试了好多次发现直接用gem install jekyll 会报错。无意间发现arch有个专门的软件包叫ruby-jekyll,我们直接来pacman一下:
$ sudo pacman -S ruby-jekyll
警告:ruby-jekyll-3.4.3-1 已经为最新 -- 重新安装
正在解决依赖关系...
正在查找软件包冲突...
软件包 (1) ruby-jekyll-3.4.3-1
全部安装大小: 0.81 MiB
净更新大小: 0.00 MiB
:: 进行安装吗? [Y/n]
选择Y ,安装完毕之后,在来执行:
$ gem install jekyll
Successfully installed jekyll-3.5.2
Parsing documentation for jekyll-3.5.2
Done installing documentation for jekyll after 1 seconds
1 gem installed
$ jekyll -v
jekyll 3.5.2
大功告成!到此jekyll搭建成功,接下来是github pages,首先你得要有个github帐号。
4.假设你已经有了github帐号,那么现在自己的电脑建立一个本地的git仓库,没有装git的话,可以pacman一下:
$ sudo pacman -S git
警告:git-2.14.1-1 已经为最新 -- 重新安装
正在解决依赖关系...
正在查找软件包冲突...
软件包 (1) git-2.14.1-1
全部安装大小: 33.39 MiB
净更新大小: 0.00 MiB
:: 进行安装吗? [Y/n]
安装完毕之后,可以在用户目录下建立一个文件夹:
$ mkdir my_blog
然后初始化git本地仓库
$ cd my_blog
$ git init
已初始化空的 Git 仓库于 /home/username/my_blog/.git/
然后,创建一个没有父节点的分支gh-pages,所有的code都将被提交到这个分支上。有兴趣可看官网help文档
$ git checkout --orphan gh-pages
5.启用你的jekyll,建立静态本地网页:
创建博客->进入博客->启动本地服务(ctrl+c关闭本地服务)->得到相关文件:
$ cd ..
$ jekyll new my_blog
Running bundle install in /home/username/my_blog...
Bundler: The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
Bundler: Fetching gem metadata from https://rubygems.org/............
Bundler: Fetching version metadata from https://rubygems.org/...
Bundler: Fetching dependency metadata from https://rubygems.org/..
Bundler: Resolving dependencies...
Bundler: Using public_suffix 2.0.5
Bundler: Using bundler 1.15.4
Bundler: Using colorator 1.1.0
Bundler: Using ffi 1.9.18
Bundler: Using forwardable-extended 2.6.0
Bundler: Using rb-fsevent 0.10.2
Bundler: Using kramdown 1.14.0
Bundler: Using liquid 4.0.0
Bundler: Using mercenary 0.3.6
Bundler: Using rouge 1.11.1
Bundler: Using safe_yaml 1.0.4
Bundler: Using addressable 2.5.1
Bundler: Using rb-inotify 0.9.10
Bundler: Using pathutil 0.14.0
Bundler: Using sass-listen 4.0.0
Bundler: Using listen 3.0.8
Bundler: Using sass 3.5.1
Bundler: Using jekyll-watch 1.5.0
Bundler: Using jekyll-sass-converter 1.5.0
Bundler: Using jekyll 3.5.2
Bundler: Using jekyll-feed 0.9.2
Bundler: Using minima 2.1.1
Bundler: Bundle complete! 4 Gemfile dependencies, 22 gems now installed.
Bundler: Use `bundle info [gemname]` to see where a bundled gem is installed.
New jekyll site installed in /home/username/my_blog.
$ cd my_blog
$ jekyll serve
...
...
...
Auto-regeneration: enabled for '/home/username/my_blog'
Server address: http://127.0.0.1:4000/
Server running... press ctrl-c to stop.
$ ls
404.html about.md _config.yml Gemfile Gemfile.lock index.md _posts _site
查看jekyll页面效果:浏览器里输入-> http://localhost:4000
这是本地显示的一种方式,弊端就是你必须得开着本地服务:jekyll serve ,不然会显示链接失败。
6.上传至github,建立动态网页blog
在my_blog文件夹里找到名为_config.yml文件。这是jekyll的设置文件,我们在里面填入如下内容,其他设置都可以用默认选项,具体解释参见官方网页。
baseurl: /my_blog
设置好了,还需要一个模板,在my_blog下创建一个_layouts目录,用于存放模板文件。并进入该目录,创建一个default.html文件,作为Blog的默认模板,文件内容如下。
$ mkdir _layouts
$ vim default.html
$ cat default.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>
Jekyll使用Liquid模板语言,{{ page.title }}表示文章标题,{{ content }}表示文章内容,更多模板变量请参考官方文档。
进入_posts,创建第一篇文章。格式必须为"年-月-日-文章标题.后缀名"的格式。如果网页代码采用html格式,后缀名为html;如果采用markdown格式,后缀名为md。)
$ cat 2017-08-22-hello-world.html
---
layout: default
title: <a href ="http://a.xiumi.us/board/v5/2Cb3c/54255420">你好,世界!</a>
---
<h2>{{ page.title }}</h2>
<p>我的第一篇文章</p>
<p>{{ page.date | date_to_string }}</p>
每篇文章的头部,必须有一个yaml文件头,用来设置一些元数据。它用三根短划线"---",标记开始和结束,里面每一行设置一种元数据。"layout:default",表示该文章的模板使用_layouts目录下的default.html文件;"title: 你好,世界",表示该文章的标题是"你好,世界",如果不设置这个值,默认使用嵌入文件名的标题,即"hello world"。
在yaml文件头后面,就是文章的正式内容,里面可以使用模板变量。{{ page.title }}就是文件头中设置的"你好,世界",{{ page.date }}则是嵌入文件名的日期(也可以在文件头重新定义date变量),"| date_to_string"表示将page.date变量转化成人类可读的格式。
回到我们的根目录:
$ cd my_blog
$ ls
404.html about.md _config.yml Gemfile Gemfile.lock index.md _posts _site
将index.md删掉,建立一个index.html对应我们之前的2017-08-22-hello-world.html :
$ rm -rfi ./index.md
rm:是否删除普通空文件 './index.md'?y
$ vim index.html
$ cat index.html
---
layout: default
title: 我的Blog
---
<h2>{{ page.title }}</h2>
<p>最新文章</p>
<ul>
{% for post in site.posts %}
<li>{{ post.date | date_to_string }} <a href="{ site.baseurl }}{{ post.url }}">{{ post.title}}</a></li>
{% endfor %}
</ul>
7.发布我们的code到github仓库:
$ git add .
$ git commit -m "my first blog"
登录自己的github帐号,创建一个名为hello-world的库。然后将git本地仓库code提交到hello-world的库里。(username:是你的账户名。)
$ git remote add origin https://github.com/username/hello-world.git
$ git push origin gh-pages
上传成功之后,需要等待一会,然后输入http://username.github.io/hello-world/就可以看到Blog已经生成了。(username:是你的账户名。)
效果图「完」
网友评论