自动部署hexo博客到阿里云服务器

前言

以前博客是托管在GitHub Page,访问速度不太乐观,后来买了台阿里云ECS,把博客迁了过来,做为一个程序员,过多的手动操做简直是对键盘的侮辱,下面介绍如何将博客直接推送到阿里云ECS(CentOS系统),实现自动部署。javascript

环境

  1. 博客网站在服务器上已经搭建好而且能够正常访问;
  2. 服务器上已经安装git;
  3. 本地hexo可以正常运行。

思路

在阿里云服务器上搭建git仓库,本地博客目录下运行hexo g -d生成静态文件,并提交到git仓库,从而触发git hook,最后再执行bash命令将文件拷贝到博客网站目录。java

建立仓库

在阿里云服务器上建立git仓库,注意不要漏掉--bare参数。git

mkdir blog.git && cd blog.git
git init --bare

Hexo配置

修改本地博客目录下的_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,masternpm

npm install hexo-deployer-git --save

自动部署

本地的deploy命令只是把静态文件提交到git仓库,既然有git hooks,那么咱们能够在有文件提交上来时,再将文件拷贝到博客网站目录。
进入到git仓库hooks目录,并建立钩子post-receivevim

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
相关文章
相关标签/搜索