Patrick

使用 Git 管理发布博客

自己的服务器,是否可以任性的使用root掌控雷电?
多个用户之间你来我往,是否需要root来呼风唤雨?
如何用最简单的方式发布自己的博文?
欢迎收看今天走进Jekyll之Git钩子发布。

使用 Git 管理发布博客

之前我们成功在远程服务器上部署了 Jekyll,现在,我们需要专注在写作上。

文章写完之后,需要简单快速的发布到服务器上,如何做到这一点,Jekyll的文档中给出了很多答案,我们选择其中一种:使用 Git 钩子。

接下来我们实战一下。

第一步:安装 Git

在 root 下执行

yum install git

使用这种方法安装的 Git 版本不是最新版,需要最新版请使用其他方法

第二步:创建账户(推荐)

你可以使用 root 来管理 Git, 也可以单独开一个用户用来管理自己的仓库。
这里我们创建一个新用户,在新用户下创建所有仓库。

adduser demo
passwd demo

新用户有一个问题,就是无法直接访问其他用户,这里有几种解决办法,可以把 demo 增加到 wheel 组中,让它拥有 sudo 命令, 也可以把其他用户组权限进行修改,让 demo 用户可以访问操作。

获取 sudo 命令权限, 在 root 下执行:

gpasswd -a demo wheel

我个人还是觉得使用不同用户来做不同的事情。

第三步:创建仓库

我们在 demo 下执行:

cd ~
mkdir repos && cd repos 
mkdir jekyll.git && cd jekyll.git
git init --bare

接下来我们直接使用 command + n 打开一个新终端,执行:

git clone demo@your-server-ip:repos/jekyll.git

如果成功拉取,说明git已经准备就绪了。

第四部:设置钩子

我们已经可以将文件推送到服务器,接下来,配置钩子
钩子简单来讲就是在git收到一条push之后,执行一个脚本。

钩子的设置很简单,Jekyll 官方给出了一种:

GIT_REPO=$HOME/myrepo.git
TMP_GIT_CLONE=$HOME/tmp/myrepo
PUBLIC_WWW=/var/www/myrepo

git clone $GIT_REPO $TMP_GIT_CLONE
bundle exec jekyll build -s $TMP_GIT_CLONE -d $PUBLIC_WWW
rm -Rf $TMP_GIT_CLONE
exit

这种方法在本地是有一个完整的 Jekyll 目录,就像 Github 上一样。
我只想在仓库中存储 _posts 里的 markdown 文件,所以实现与上面略有区别。
我只需要把仓库中的文件都同步到 Jekyll 下的 _posts 里,然后执行 jekyll build 就可以了。

到此,我们只需要在本地写完文章后,通过简单的 push 就可以完成博客的发布了。