Hexo Deployment | Hexo 部署过程

About | 关于

这篇博客将简单介绍如何将 Hexo 部署到服务器上(我使用的是腾讯云服务器),并且可以通过 git 对网站进行同步和更新。主要参考链接:

Huang Jianxian’s Blog | Huang Jianxian 的博客

Table of Contents | 目录

SSH 配置

为了使本地可以跟远程的 github 建立联系,需要在本地配置 SSH 密钥。

  1. 检查 SSH Key 是否已经存在:

    1
    ls -al ~/.ssh

    如果key存在,会有 id_rsa.pub 文件,可以直接将 SSH key 复制。
    SSH 密钥路径: /Users/(your user name)/.ssh/id_rsa.pub

  2. 如果之前没有生成过 SSH Key, 可以先设置 git 用户名字和邮箱,再生成 SSH Key

    1
    2
    3
    git config --global user.name 'your_name'
    git config --global user.email 'your_email'
    ssh-keygen -t rsa -C 'your_email'

服务器部署

部署 Hexo 选择的是腾讯云的云服务器,操作系统:CentOS 8.2。通过服务器的控制台可以远程连接到服务器终端。

git 配置

切换到root账号:

1
sudo su root

配置 git:

1
2
3
4
5
6
7
8
# check whether git is installed: git --version
# install git
yum install git
# add git user
adduser git
# add user permissions
chmod 740 /etc/sudoers
vim /etc/sudoers

然后找到以下内容的地方,并添加:

1
2
3
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
git ALL=(ALL) ALL ## add this line

保存退出文件后,改回权限:

1
chmod 400 /etc/sudoers

设置 git 账户密码:

1
sudo passwd git

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

1
2
3
su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys

在文件里输入复制好的 id_rsa.pub 里的 SSH Key, 然后保存退出。

接着,输入一下命令,赋予权限:

1
2
chmod 600 /home/git/.ssh/authorized_keys
chmod 700 /home/git/.ssh

在本地 git 终端中测试是否能远程连接并登录服务器端的 git:

1
$ ssh -v git@your_server_ip

创建仓库目录及相关配置

在服务器端创建项目目录,并赋予权限。注意:项目目录路径可以自定义,以下创建的项目目录在 /www/ 文件夹下,

1
2
3
mkdir /www/repo
chown -R git:git /www/repo
chmod -R 755 /www/repo

接下来创建 hexo 作为网站根目录,并赋予权限:

1
2
3
mkdir /www/hexo
chown -R git:git /www/hexo
chmod -R 755 /www/hexo

接下来创建一个空白的 git 仓库:

1
2
cd /www/repo
git init --bare hexo.git

创建一个新的 git 钩子,用于自动部署:

1
vim /www/repo/hexo.git/hooks/post-receive

进入编辑模式,然后将下面那两行代码粘贴进去。

1
2
#!/bin/bash
git --work-tree=/www/hexo --git-dir=/www/repo/hexo.git checkout -f

保存退出,并修改权限:

1
2
chown -R git:git /www/repo/hexo.git/hooks/post-receive
chmod +x /www/repo/hexo.git/hooks/post-receive

到这里 git 仓库已经搭建完毕了。

配置 Nginx

用宝塔面板配置 Nginx,先安装宝塔面板:

1
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh

然后在宝塔商城里安装免费版的 Nginx 即可。

建站

在宝塔面板添加站点,并将网站的根目录设置为我们的项目路径 /www/hexo/

Root

重启宝塔:

1
service bt restart

修改 Hexo 配置 & 实现部署

在本地打开 Hexo 项目的 config.yml 文件,修改以下配置:

1
2
3
4
deploy:
type: git
repo: git@your_url:/www/hexo.git
branch: master

在服务器终端:

1
2
chown -R git:git /www/repo/
chown -R git:git /www/hexo/

回到本地,部署 Hexo:

1
hexo d -g

到这里 Hexo 部署到服务器就完成了!