hexo博客一键式部署到服务器

hexo博客部署到服务器可以使用git和rsync方法,本文首先接受git方式。通过hexo d命令将public目录推送到git服务器,并触发部署代码到网站目录。

搭建git服务器

git服务器可以选择gitlab或者gogs, 本文选择gogs。
gogs安装链接

安装完gogs服务器后,配置好git网站git.example.com,并创建博客文件仓库,例如blog_public。

设置hexo的git同步方式

在hexo的_config.yml文件中, 配置如下的git部署信息,其中repo字段可以在gogs网页上创建仓库后的页面找到。配置完以后,在本地运行hexo d会将public目录推送到git服务器。

1
2
3
4
5
deploy:
type: git
repo: <ssh_name>@git.gitserver:<account>/blog_public.git
branch: master
message: update blog

创建服务器git仓库

为了在服务器上访问blog_public仓库的文件,还需要在服务器的网站目录添加git本地仓库,用来存储生成的网站文件。这个文件夹同时也是网站的目录,通过配置nginx,完成对该目录的访问。

1
2
3
4
mkdir /var/www/blog_public
cd /var/www/blog_public
git init
git clone ~/repos/test.git

使用githook实现自动部署

进入到/gogs-repositories//blog_public.git/hooks文件夹,使用vi post-receive创建一个脚本,当你在本地仓库执行git push后就会触发post-receive(关于Git Hok)。
post-receive的内容

1
2
3
4
5
6
7
8
9
10
#!/usr/bin/env bash

unset GIT_DIR
NowPath=`pwd`
#部署路径为网站服务器设置的文件目录
DeployPath="/var/www/blog_public"
cd $DeployPath
git pull origin master
cd $NowPath
exit 0

之后在本地使用git deploy命令触发提交后,会自动以上脚本,实现自动部署。