以前博客是托管在GitHub Page,访问速度不太乐观,后来买了台阿里云ECS,把博客迁了过来,做为一个程序员,过多的手动操做简直是对键盘的侮辱,下面介绍如何将博客直接推送到阿里云ECS(CentOS系统),实现自动部署。javascript
在阿里云服务器上搭建git仓库,本地博客目录下运行hexo g -d
生成静态文件,并提交到git仓库,从而触发git hook,最后再执行bash命令将文件拷贝到博客网站目录。java
在阿里云服务器上建立git仓库,注意不要漏掉--bare
参数。git
mkdir blog.git && cd blog.git git init --bare
修改本地博客目录下的_config.yml
配置,其中xx.xxx.xx.xxx
是你的服务器ip地址,/www/blog.git
是你上一步建立的git仓库路径,master
是分支。程序员
deploy: type: git message: update repo: root@xx.xxx.xx.xxx:/www/blog.git,master
此插件的做用是执行deploy时,将hexo生成的静态文件提交到_config.yml
配置中的deploy.repo
地址,即 root@xx.xxx.xx.xxx:/www/blog.git,master
。npm
npm install hexo-deployer-git --save
本地的deploy命令只是把静态文件提交到git仓库,既然有git hooks,那么咱们能够在有文件提交上来时,再将文件拷贝到博客网站目录。
进入到git仓库hooks目录,并建立钩子post-receive
。vim
cd /www/blog.git/hooks touch post-receive vim post-receive
而后输入下面脚本:bash
#!/bin/bash -l GIT_REPO=/www/blog.git TMP_GIT_CLONE=/www/tmp/blog PUBLIC_WWW=/www/blog rm -rf ${TMP_GIT_CLONE} git clone $GIT_REPO $TMP_GIT_CLONE rm -rf ${PUBLIC_WWW}/* cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}
其中/www/blog.git
为仓库路径,/www/blog
为你的博客网站路径,/www/tmp/blog
是临时目录,git会先将文件拉到临时目录,而后再将全部文件拷贝到博客网站目录/www/blog
。服务器
更改目录权限:hexo
chmod +x post-receive chmod 777 -R /www/blog
完成上述步骤以后,就能够测试一下了,在本地博客目录下运行hexo g -d
,此时可能还须要输入服务器密码,最后输出如下结果说明部署成功:post
... INFO Deploy done: git
原文连接: http://www.tammeny.com