使用Jekyll搭建GitHub Project Pages

本文记录使用Jekyll搭建个人博客并且部署到GitHub。

  1. Windows环境下Ruby, GEM 环境配置
    • 安装rubyinstaller
    • 安装RubyGems 包管理工具

      ruby setup.rb

  2. Jekyll 安装

    gem install jekyll

  3. 项目结构目录

    content-image

    • _drafts 草稿,未发布的文章,在.gitignore中排除该目录。
    • _includes 存放一些公用文件,比如头部、尾部模版。
    • _layouts 输出模版
    • _posts 存放已经完成的文章
    • _site Jekyll 生成的静态网站目录,在.gitignore中排除该目录。
    • assets 存放样式、js脚本、图片等资源文件。
  4. 文章列表展示
<div id="home">
  {\% for category in site.categories \%}
    <div class="category"> \{\{ category | first \}\} (\{\{ category.last.size \}\}) </div>
    <ul class="posts">
    \{\% for post in site.posts \%\}
        \{\% if category.first == post.category \%\}
        <li>
          <span>\{\{ post.date | date: "%d/%m/%Y" \}\}</span> 
          <a href="/articles">\{\{ post.title \}\}</a>
        </li>
        \{\% endif \%\}
    \{\% endfor \%\}
  </ul>
  \{\% endfor \%\}
</div>

高亮部分代码需要添加转义,所以看到的内容多了个\字符。site.categories会查找config文件中定义的分类,或者在每个页面指定的分类集合。

5. 文章分类

site.categories 上述文章列表中已经提到分类。

6. 列表分页

7. 使用评论插件

之前的Coolde博客中使用的是多说评论插件,前段时间收到通知,多说即将要关闭评论服务了,所以在本博中使用的是畅言。使用方式也是在需要出现评论的页面上引入js。不过畅言插件需要使用的域名必须要备案,否则只能试用。

content-image

如上图所示,我在文章详情的模版页中加入畅言提供的js,这样所有详情页面便会有畅言的评论功能了。 8. 使用文章分享插件

文章分享使用的是bShare社会化分享插件,在文章详情页面添加以下js即可。

<a class="bshareDiv" href="http://www.bshare.cn/share">分享按钮</a>
<script type="text/javascript" charset="utf-8" 
        src="http://static.bshare.cn/b/buttonLite.js#uuid=&amp;style=3&amp;fs=4&amp;textcolor=#000&amp;bgcolor=#DDD&amp;text=分享到">
</script>

9. 本地中文路径编码

修改安装目录\Ruby22-x64\lib\ruby\2.2.0\webrick\httpservlet下的filehandler.rb文件
path = req.path_info.dup.force_encoding(Encoding.find("filesystem"))
+ path.force_encoding("UTF-8") # 加入编码
trailing_pathsep?(req.path_info)
break if base == "/"
+ base.force_encoding("UTF-8") #加入編碼
break unless File.directory?(File.expand_path(res.filename + base))

10. 访问统计

访问统计使用的是百度的网站统计,注册后获取js追踪代码,既可在百度统计管理后台看到对应的访客数据。

 <script>
    var _hmt = _hmt || [];
    (function() {
    var hm = document.createElement("script");
    hm.src = "https://hm.baidu.com/hm.js?1a6df2e9fe5e42319ae9746603c45f5f";
    var s = document.getElementsByTagName("script")[0]; 
    s.parentNode.insertBefore(hm, s);
    })();
</script>

将以上代码添加到模版文件的head部位就可以了。

content-image

11. 404页面配置

使用腾讯公益404页面,在项目根目录下添加404.html页面,加入以下代码:

<script type="text/javascript" 
        src="//qzonestyle.gtimg.cn/qzone/hybrid/app/404/search_children.js" 
        charset="utf-8" 
        homePageUrl="/" 
        homePageName="返回继续">
</script>

12. CDN配置

由于GitHub服务器在国外,国内访问有时候会非常慢,选择了几款CDN产品,目前腾讯云有赠送几个月的CDN产品试用,所以就拿腾讯云练手了。

content-image

添加域名后会给你的网站分配一个加速域名,www.coolde.cn.cdn.dnsv1.com,这个域名是加速域名到CDN节点的地址,直接访问无法获取到资源。

content-image

然后将需要加速的域名国内访问解析到上述的加速域名上,国外仍然保持直接访问github服务器。

content-image

设置完成后ping所要加速的域名,如果返回包含spcdntip节点的内容,说明CDN配置成功!

content-image

接下来在CDN配置中设置缓存配置,一般将静态资源比如html,js,css等不经常修改的文件设置稍微长时间的刷新时间,如果有动态内容比如aspx,php,jsp等文件,一般设置较短时间的刷新时间。当然可以根据自身情况,设置对应文件的刷新时长。

content-image

如果修改了长刷新时间较长的文件内容,但又想立即看到更新,便可以使用上述功能进行手动更新,可以更新某一个文件或者某一个目录下所有文件。

以上CDN配置完成后,国内访问基本可以达到秒开的速度,体验还是非常不错的!

如果觉得我的文章对您有用,请随意打赏。

您的支持将是我最大的动力!