#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org
晕晕乎乎了两年,准备把停更的 blog 更新一下。但是时过境迁,很多技术方法都已 经成为古董了,之前的blog是在 vps 上用 wordpress 搭建的,我在电脑上写好 emacs-org 格式的文章后,用脚本转换为 html 然后用 wordpress 的 API 发表的。 现在不想太折腾了,简单研究了一番,发现用 Jekyll 和 github 的组合最方便省心。
大体思路为,文章还是在本地用 emacs-org 的格式来写(毕竟我用了10来年已经比较熟悉了), 然后用 pandoc 转换为基本的 markdown,最后写一个小脚本简单处理一下图片, jekyll tag 等问题。
安装 Jekyll
Jekyll 基于 ruby,所以首先要安装 ruby,这里选择使用 rbenv 来安装管理 ruby。
以下操作在我的 mac 上进行:
$ brew install rbenv ruby-build
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ rbenv install -l # 列出所有可安装的版本
$ rbenv install 2.7.1 # 安装最新稳定版本
$ rbenv global 2.7.1 # 设置全局 ruby 版本
# 将 gem 安装的文件列入可执行文件路径中
$ echo 'export PATH="$HOME/.gem/ruby/2.7.0/bin:$PATH"' >> ~/.bash_profile
安装 Jekyll:
$ gem install --user-install bundler jekyll
$ jekyll -v # 检查是否安装成功
jekyll 4.1.1
在 Github 上选择模板
这里选择 leopardpan 的 blog
模板: 在他的 blog
github 上 fork 到自己仓库,注意 仓库名要改为 username.github.io
这种名字。 username
是你的 github 用户名。
克隆仓库
$ git clone git@github.com:mathslinux/mathslinux.github.io.git # 克隆仓库
在本地启动 blog 查看效果, 启动后在 http://127.0.0.1:4000/ 就可以查看调试了。
$ jekyll serve
也可以在 http://username.github.io/ 查看。其中 username 是你的 github
用户名。 之后发表新的 blog 之后 直接 git push
后就是更新了。
修修改改
jekyll 模板中的主要需要修改的文件:
_config.yml
: blog 的全局配置, 包括 blog 名字等等,按照自己的实际情况修改。_includes/footer.html
: 修改里面的版权等信息。- about.md: 关于自己的介绍。
- images: 该目录包含自己的头像,背景,支付宝,微信等的二维码图像等,按需修改。
发表文章
发表文章很简单,只需要以 markdown 的格式写好文章,放到 _posts
目录下即可。 需要注意的是文件名要以 Date-Title.md 这种格式,如
2017-10-06-Free_Up_Space.md
文件内容和 markdown 格式没有区别。但是在文件头,需要添加一些元数据。
---
layout: post
tag: Emacs
date: [2017-01-22 日 16:30]
title: 在 Emacs 内部运行 Shell
---
- layout: post 这行不用变。
- tag: 文章的标签。
- date: 日期。
- title: 文章的标题。
Issues
- 由于国内网络的原因,安装的时候卡在下载ruby过程
可以用科学上网的方式先把包下载到 rbenv 的缓存中, 再执行 rbenv install 操作
$ mkdir -p ~/.rbenv/cache/ && mv ruby-2.7.1.tar.bz2 ~/.rbenv/cache
$ rbenv install 2.7.1
- 如果执行
jekyll serve
出现依赖包的问题
比如出现如下错误
/bundler/spec_set.rb:86:in `block in materialize': Could not find public_suffix-4.0.5 in any of the sources (Bundler::GemNotFound)
进入 blog 主目录,删除 Gem用 bundle 自动安装依赖
$ bundle install