本教程将以CentOS系统为例,其他系统方法相似。

Hexo博客基本架构

Hexo这类基于Markdown的纯静态页面的博客和传统的博客有着很大不同,其动态解析器完全部署在本地,用户撰写博文后,经过一次『编译』,生成html的静态文件,并通过git协议将静态HTML部署到服务器的Web目录下,实现网站的访问

本地初始化Hexo博客

在本地初始化Hexo博客时,需要提前准备好Node.js环境,这里就不再赘述

首先使用npm安装Hexo:

npm install -g hexo-cli

在一个新目录下初始化博客:

hexo init

创建新博文:

hexo new "博文名称"

准备插件:

npm install hexo-deployer-git --save

npm install hexo-server

安装Git并配置仓库

安装Git

首先在服务器上安装Git:

yum install git

配置Git用户

接下来专门添加一个git用户,用于代码部署,同时设置其密码:

adduser git

passwd git

为了避免在每次Git推送时输入密码,我们可以让git用户信任我们计算机的公钥

首先在自己的计算机上生成一个公私钥对,如果使用Linux系统或MacOS系统,则可以直接运行下面的命令实现:

ssh-keygen

随后会在/Users/你的用户名/.ssh/下生成一个公钥文件和私钥文件如下:

image-20200802161346145
image-20200802161346145

将其中的id_rsa.pub文件上传到git用户用户目录(即/home/git)下的.ssh文件夹下面,如果没有可以自己创建,并改名为authorized_keys

最后还需要配置权限:

chmod 600 ~/.ssh/authorized_keys

chmod 700 ~/.ssh

如果配置正确,那么使用下面的命令就可以直接连接到服务器:

image-20200802161529237
image-20200802161529237

初始化Git仓库

接下来在git用户的用户目录下初始化git仓库,首先使用git用户登录SSH

cd ~

git init --bare blog.git

vi ~/blog.git/hooks/post-receive

这里需要给Git配置一个Hook,在打开的文件中输入下面的内容:

git --work-tree=网站Web目录 --git-dir=/home/git/blog.git checkout -f

注意还需要赋予其可执行权限:

chmod +x ~/blog.git/hooks/post-receive

除此之外,要将网站的Web目录的读写权限赋给Git用户,并链接起来:

chmod -R 755 /var/www/hexo

chown -R git:git /var/www/hexo

配置Hexo并上传测试

在刚刚初始化的博客的根目录下编辑_config.yml,并找到deploy作如下配置:

1
2
3
4
5
deploy:
type: git
repo: git@这里改为服务器公网IP:/home/git/blog.git
branch: master
message:

然后运行命令上传:

hexo clean && hexo generate --deploy

image-20200802162454963
image-20200802162454963