Hexo博客并使用Git Hook自动部署到个人服务器上
Hexo博客并使用Git Hook自动部署到个人服务器上
冰糖呼噜AI摘要
正在生成中……
第一步
安装git:
1 | sudo yum -y install git |
第二步
创建一个 git 用户,用来运行 git 服务:
1 | sudo adduser git |
虽说现在的仓库只有我们自己在使用,新建一个 git 用户显得不是很有必要,但是为了安全起见,还是建议使用单独的 git 用户来专门运行 git 服务
第三步
使用su - git
登录git用户
然后创建证书登录,把自己电脑的公钥,也就是 ~/.ssh/id_rsa.pub
文件里的内容添加到服务器的 /home/git/.ssh/authorized_keys
文件中,如果没有 .ssh/
目录和 authorized_keys
文件需要新建,添加公钥之后可以防止每次 push 都输入密码。
第四步
初始化 Git 仓库,我是将其放在 /home/hexo/blog.git 目录下的:
1 | cd /home/hexo/ |
使用 --bare
参数,Git 就会创建一个裸仓库,裸仓库没有工作区,我们不会在裸仓库上进行操作,它只为共享而存在。
第五步
配置 git hooks,关于 hooks 的详情内容可以参考这里。
我们这里要使用的是 post-receive
的 hook,这个 hook 会在整个 git 操作过程完结以后被运行。
在 blog.git/hooks
目录下新建一个 post-receive
文件:
1 | /home/hexo/blog.git/hooks |
在 post-receive 文件中写入如下内容:
1 |
|
注意 /www/hexo
要换成你自己的部署目录。上面那句 git 命令可以在我们每次 push 完之后,把部署目录更新到博客的最新生成状态。这样便可以完成达到自动部署的目的了。
不要忘记设置这个文件的可执行权限:
1 | chmod +x post-receive |
第六步
改变 blog.git 目录的拥有者为 git 用户:
1 | sudo chown -R git:git blog.git |
改变网站/www/hexo
目录的拥有者为git用户:
1 | sudo chown -R git:git /www/hexo |
第七步
禁用 git 用户的 shell 登录权限。
出于安全考虑,我们要让 git 用户不能通过 shell 登录。可以编辑 /etc/passwd
来实现,在 /etc/passwd
中找到类似下面的一行:
1 | git:x:1000:1000:,,,:/home/git:/bin/bash |
将其改为:
1 | git:x:1000:1000:,,,:/home/git:/usr/bin/git-shell |
这样 git 用户可以通过 ssh 正常使用 git,但是无法登录 sehll。
至此,服务器端的配置就完成了。
本地配置
配置你的 hexo 博客可以自动 deploy 到服务器上,再也不用 ftp 上传了。
修改 hexo 目录下的 _config.yml 文件,找到 [deploy] 条目,并修改为:
1 | deploy: |
本地配置完成。至此,我们的 hexo 自动部署已经全部配置好了。