部署hexo到阿里云服务器

[TOC]

先搞明白Hexo博客从搭建到自动发布的架构,才能更好的理解我们每一步进行的操作。不然只跟着步骤过了一遍,却不知道为什么这么做。

hexo deploy

搭建流程

第一步: 安装node.js以及本地Hexo初始化
第二步: 服务器环境搭建,包括安装 Gitapache配置 、创建 git 用户
第三步: 使用Git自动化部署发布博客

本地环境

服务器

安装git

  • 安装git
1
yum install git
  • 检查版本
1
git --version
  • 创建git用户
1
adduser git
  • 配置权限
1
2
chmod 740 /etc/sudoers
vim /etc/sudoers

​找到以下内容

1
2
## Allow root to run any commands anywhere
root ALL=(ALL) ALL

​在下面添加:

1
git     ALL=(ALL)       ALL

保存退出后改回权限:chmod 400 /etc/sudoers

然后给新加的用户git设置权限,编辑/etc/passwd将:git:x:1003:1003:,,,:/home/git:/bin/bash 改成:git:x:1003:1003:,,,:/home/git:/usr/bin/git-shell 这样git就只能使用git-shell而不能使用bash。

  • git服务器打开RSA认证
    vim /etc/ssh/sshd_config
    在sshd_config中开启以下几项:

    1
    2
    3
    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys
  • 随后设置Git用户的密码

1
2
#需要root权限
sudo passwd git

配置ssh

切换至git用户,创建 ~/.ssh 文件夹和 ~/.ssh/authorized_keys 文件,并赋予相应的权限

1
2
3
4
5
6
su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys
#然后将电脑中执行 cat ~/.ssh/id_rsa.pub | pbcopy ,将公钥复制粘贴到authorized_keys
chmod 600 ~/.ssh/authorzied_keys
chmod 700 ~/.ssh
  • 然后就可以执行ssh 命令测试是否可以免密登录ssh -v git@SERVER 至此,Git用户添加完成

创建仓库

执行命令:sudo git init --bare hexo.git

使用–bare 参数,Git 就会创建一个裸仓库,裸仓库没有工作区,我们不会在裸仓库上进行操作,它只为共享而存在。

改变 hexo.git 目录的拥有者为git用户:sudo chown -R git:git hexo.git

配置钩子

目录说明

/opt/GitRepos/hexo.git = git仓库所在目录
/opt/StaticWeb/hexo = 静态网站存放目录

实际执行时将对应目录替换成您自己的目录

/opt/GitRepos/hexo.git/hooks 目录下新建一个 post-receive 文件,在文件中写入如下内容:

1
2
cd /opt/GitRepos/hexo.git/hooks
vim post-receive

写入以下内容

1
2
#!/bin/bash
git --work-tree=/opt/StaticWeb/hexo --git-dir=/opt/GitRepos/hexo.git checkout -f

post-receive 执行权限

1
chmod +x post-receive

post-receive 的 git 命令可以在我们每次 push 完之后,把部署目录更新到博客的最新生成状态。这样便可以完成达到自动部署的目的了。