美文网首页Linux
在Arch下通过jekyll搭建github pages个人博客

在Arch下通过jekyll搭建github pages个人博客

作者: 南方老F | 来源:发表于2017-08-23 21:30 被阅读0次

    程序员一般都喜欢写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

    Screenshot_20170823_204147.png
    这是本地显示的一种方式,弊端就是你必须得开着本地服务: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:是你的账户名。)

    效果图

    「完」

    相关文章

      网友评论

        本文标题:在Arch下通过jekyll搭建github pages个人博客

        本文链接:https://www.haomeiwen.com/subject/rfjjdxtx.html