本文跳过阿里云创建git仓库、hexo部署到github的步骤,有需要的可以移步下面博客地址查看:
一、服务器相关配置
本文使用hexo在本地生成静态文件,然后将静态文件提交到个人服务器的git仓库,最后用Nginx提供web服务的方式。
1、Nginx配置
Nginx正常配置一个虚拟主机来存放静态文件即可。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37server
{
listen 80;
#listen [::]:80;
server_name blog.qicunshang.com ;
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/blog.qicunshang.com/blog;
#include other.conf;
#error_page 404 /404.html;
# Deny access to PHP files in specific directory
#location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
include enable-php.conf;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /.well-known {
allow all;
}
location ~ /\.
{
deny all;
}
access_log /home/wwwlogs/blog.qicunshang.com.log;
}
需要注意的是:
- git用户的权限;
- 虚拟主机路径,且默认主页是index.html。
2、创建git仓库
1 | #创建仓库目录 |
创建完后可以使用下面命令测试一下仓库地址,克隆成功说明没有问题。1
git clone 仓库地址
3、Git hooks配置
- 新建脚本,使git hooks每次push完成之后,将仓库中的静态文件复制到Nginx对应的虚拟主机中;
1
2#新建脚本
vim post-receive
脚本内容如下:1
2
3
4
5
6
7
8
9
10
11#!/bin/bash -l
#git仓库目录
GIT_REPO=/var/git/blog.git
#临时文件目录
TMP_GIT_CLONE=/var/git/tmp/blog
#虚拟主机目录
PUBLIC_WWW=/home/wwwroot/blog.qicunshang.com
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}/*
cp -rf ${TMP_GIT_CLONE} ${PUBLIC_WWW}
- git用户关于post-receive脚本及内容的权限、虚拟主机的权限:
1
2
3
4
5
6
7#赋予文件、文件夹权限
chmod 777 post-receive
chmod 777 -R /var/git/tmp
chmod 777 -R /home/wwwroot/blog.qicunshang.com
#赋予git用户权限
chown git:git -R /var/git/tmp
chown git:git -R /home/wwwroot/blog.qicunshang.com
二、本机Hexo配置
1 | deploy: |
然后在hexo目录下执行Hexo g -d即可。