0x00 说明

该篇文章主要介绍如何利用宝塔BT面板,将Hexo生成的博客自动化部署到你的服务器上。由于一开始没有完整的教程供我参考,在整合了多篇文章后,我将整个流程尽可能简化,也给自己留一个备份,以供之后参考。

文章的主要内容如下:

  1. 选择Linux系统
  2. 设置SSH登录
  3. Hexo自动部署
  4. 宝塔面板部署

0x01 选择VPS以及服务器系统

由于我还是一枚学生,买不起高性能的服务器,于是就买个轻量云学生机玩玩,如果你追求稳定资金充裕,为了长久的维护博客,建议选择其他可靠的服务器。

系统方面我安装的是CentOS 7.3,当然你也可以选择使用Ubuntu/Debian系统,随个人爱好。

0x02 设置SSH登录

完成如下的设置,你可以直接使用你的命令行工具通过SSH来登录你的服务器(建议在代理下使用SSH),而且不需要每次都输入账号密码,如果没有相关需求的同学可以直接跳过这部分。

生成本地公钥

首先,我们现在本地生成自己的公钥

1
2
cd ~/.ssh
ssh-keygen -t rsa -C "your_email@example.com"

dqmHjO-cM33Cq

上传你的公钥到服务器

然后,将你的公钥/.ssh/id_rsa.pub复制到服务器上对应用户的/.ssh/authorized_keys即可,这里来说一般有以下三种:

  1. 如果本地使用macOS,则可以使用 ssh-copy-id-for-OSX 工具将公钥复制到服务器

    1
    2
    brew install ssh-copy-id 		    #本地用brew指令安装ssh-copy-id
    ssh-copy-id username@hostname #相应替换为你的服务器用户名和IP
  2. 当服务器用户目录下尚未有.ssh目录时使用此方式

    1
    cat ~/.ssh/id\_rsa.pub | ssh root@47.100.76.113 "mkdir .ssh; cat > .ssh/authorized\_keys"
  3. 通用方式

    1
    2
    3
    4
    scp ~/.ssh/id\_rsa.pub username@hostname:~/  #将公钥文件复制至vps服务器
    ssh username@hostname #使用用户名和密码方式登录至vps服务器
    mkdir .ssh #若.ssh目录已存在,可省略此步
    cat id\_rsa.pub > .ssh/authorized\_keys #将公钥文件id_rsa.pub内容追加到authorized_keys文件

    注意:其中USERNAME是服务端的用户名称,HOSTNAME是服务器的访问地址。

设置快捷登录

当完成以上操作后,我们就可以通过在命令行工具中ssh user@hostname登录我们的服务器。当然,还有更简便的方式,省去记录主机名的麻烦,通过在本地编辑.ssh/config设置我们的服务器信息

1
sudo vim ~/.ssh/config

添加内容如下:

1
2
3
4
5
Host aliyun									#自定义别名
HostName HostName #替换为你的ssh服务器ip或domain
Port port #ssh服务器端口,默认为22
User user #ssh服务器用户名
IdentityFile ~/.ssh/id_rsa #第一个步骤生成的公钥文件对应的私钥文件

这样我们就可以通过ssh aliyun的命令行直接快速登录我们的服务器,如果提示"#?\233??\215?为?\240?\232\204ssh?\234\215?\212??\231?ip?\210\226domain",请删除上面的中文注释,再次重试。

0x03 Hexo自动部署

Hexo官方论坛提供了多种方式来实现自动部署,该教程使用了git-hook的方式进行部署

  1. 首先,你需要在服务器安装git
    apt-get install git
  2. 然后,本地安装部署工具(这个大家都会安装,用来git推送文件)
    npm install hexo-deployer-git --save
  3. 接下来,我们要继续在服务器上操作,我们要在上面安装一个git的裸仓库,这个仓库里不会存放任何文件,只是一个我们用来接收文件的中转站,当git接收到文件后将其直接存放到我们的指定的文件夹里面。

配置Git

接着,我们在/www/wwwroot文件夹下新建hexo文件夹,在hexo文件夹内新建myblog文件夹。

1
2
3
4
5
6
cd /www/wwwroot
mkdir hexo
cd hexo
mkdir myblog
git init --bare hexoBlog.git
vim hexoBlog.git/hooks/post-receive

然后编辑post-receive文件,加入如下两条代码:

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

保存即可,接着转到已经登录的实例控制台,即xshell或者腾讯云控制台执行如下代码:

1
chmod +x /www/wwwroot/hexo/hexoBlog.git/hooks/post-receive

至此,git基本已经配置完成!

0x04 宝塔面板配置

宝塔面板在「添加站点」输入域名后默认的的网站目录是/www/wwwroot/domain,这与我们的Hexo博客存放地址不符,因此我们需要修改一下

image-81NEU8

将「网站目录」修改为/www/wwwroot/hexo/myblog,PHP版本选择纯静态,点击「保存」

0x05 本地Hexo配置

找到本地Hexo站点配置文件_config.yml,进行如下更改:

1
2
3
4
5
6
7
deploy:
type: git
repo:
aliyun: root@ip:/www/wwwroot/hexo/hexoBlog.git
#如果你更改了ssh端口的话,需要改成:
aliyun: ssh://root@ip:端口号/www/wwwroot/hexo/hexoBlog.git
branch: master

0x06 总结

至此,利用宝塔BT面板将Hexo博客部署到云服务器上就完成了,enjoy~