KEJUN BLOG
KeJun
Jun 4, 2017
阅读本文需要 4 分钟

jekyll 官方提供了教程,写的还是蛮清楚的,但我觉得还是有必要记录一下。

希望看到此文的同学能够一起讨论更高效的自动化部署。

感谢Mysaku提供的机器测试。

下面命令中:

  • root@server$ 前缀表示服务器的root用户;
  • git@server$ 前缀表示服务器的git用户;
  • localhost$ 前缀表示本地用户;
  • 无前缀表示文本。

配置用户

新建一个git用户

root@server$ adduser git

用户授权

授与无需密码操作的权限

root@server$ sudo vim /etc/sudoers

添加 git ALL=(ALL:ALL) ALL

然后使用 :wq! 强制保存并退出。

授予操作 nginx 放网页的地方的权限

root@server$ cd /var/www
root@server$ mkdir jekyll
root@server$ chown git:git -R /var/www/jekyll

配置Hooks

root@server$ su git
git@server$ cd ~
git@server$ mkdir jekyll.git
git@server$ cd jekyll.git/
git@server$ git --bare init
git@server$ vim hooks/post-receive

复制下面的内容粘贴并保存:

#!/bin/bash
GIT_REPO=$HOME/jekyll.git
TMP_GIT_CLONE=$HOME/tmp/myrepo
PUBLIC_WWW=/var/www/jekyll

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

最后授予执行权限

git@server$ chmod +x hooks/post-receive

安装Jekyll

推荐使用git用户安装jekyll。

如何安装 jekyll ?详见此文章

添加SSh

接下来上传本地机器的SSH公钥到服务器。

首先打开你本地机器git bash 输入:

localhost$ ssh-keygen -t rsa
localhost$ vim ~/.ssh/id_rsa.pub
"*yy

"*yy 为vim的复制命令。

继续返回到服务器(git用户)。

git@server$ cd ~
git@server$ mkdir .ssh && cd .ssh
git@server$ touch authorized_keys
git@server$ vim authorized_keys

粘贴刚刚复制的公钥。

现在,在本地机器 使用 ssh git@yourvpsip 已经可以成功登陆啦~

如果你vps的端口不是22,那么在本地机器

localhost$ vim ~/.ssh/config

输入,并调整为你vps的信息:

Host #VPS IP
HostName #VPS IP
User git
Port #SSH Port
IdentityFile ~/.ssh/id_rsa

关联本地仓库

在你本地机器的博客仓库中添加一个远程仓库:

localhost$ git remote add www git@yourvpsip:~/jekyll.git

现在,每次发布新文章只要push即可~

localhost$ git push www master

nginx & apache

记得配置http哟~