应趣

Hi, nice to meet you.

  1. 1. 说明
  2. 2. 选择VPS以及服务器系统
  3. 3. 设置SSH登录
    1. 3.1. 生成本地公钥
    2. 3.2. 上传你的公钥到服务器
    3. 3.3. 设置快捷登录
  4. 4. Hexo自动部署
  5. 5. 此处本应该还要设置git用户的shell登录权限,但是我几经尝试都不行,遂放弃,对安全较为看重的话,麻烦另行尝试
  6. 6. !/bin/sh
  7. 7. 宝塔BT面板确认
  8. 8. 总结

说明

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

文章的主要内容如下:

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

选择VPS以及服务器系统

由于我购买VPS主要用途是用来扶墙,创建博客只是穿上一件好看的衣服,所以选择了便宜的搬瓦工,速度还可以,如果你追求稳定,为了长久的维护博客,建议选择其他可靠的VPS服务器。

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

设置SSH登录

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

生成本地公钥

首先,我们现在本地生成自己的公钥
ssh-keygen -t rsa ‘你的邮箱地址‘

上传你的公钥到服务器

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

  1. 使用 ssh-copy-id-for-OSX 工具将公钥复制到服务器
    brew install ssh-copy-id #本地用brew指令安装ssh-copy-id
    ssh-copy-id 用户名@服务器IP地址 #相应替换为你的服务器用户名和IP
  2. 当VPS服务器用户目录下尚未有.ssh目录时使用此方式
    cat ~/.ssh/id_rsa.pub | ssh [email protected] “mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys”
  3. 通用方式
    scp ~/.ssh/id_rsa.pub [email protected]:~/ #将公钥文件复制至vps服务器
    ssh [email protected] #使用用户名和密码方式登录至vps服务器
    mkdir .ssh #若.ssh目录已存在,可省略此步
    cat id_rsa.pub >> .ssh/authorized_keys #将公钥文件id_rsa.pub文件内容追加到authorized_keys文件

设置快捷登录

当完成以上操作后,我们就可以通过在命令行工具中ssh [email protected]登录我们的服务器。当然,还有更简便的方式,省去记录主机名的麻烦,通过在本地编辑.ssh/config设置我们的服务器信息
sudo vim ~/.ssh/config
添加内容如下:
Host alias #自定义别名
HostName hostname #替换为你的ssh服务器ip或domain
Port port #ssh服务器端口,默认为22
User user #ssh服务器用户名
IdentityFile ~/.ssh/id_rsa #第一个步骤生成的公钥文件对应的私钥文件
这样我们就可以通过ssh alias的命令行直接快速登录我们的VPS服务器

Hexo自动部署

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

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

    此处本应该还要设置git用户的shell登录权限,但是我几经尝试都不行,遂放弃,对安全较为看重的话,麻烦另行尝试

  4. git用户创建完成后,我们需要讲本地的公钥传到git用户的/home/git/.ssh/authorized_keys中,这样我们本地才能在执行hexo d后将你的文件推送到服务器,具体方式可参考前文,最粗暴的做法就是本地复制粘贴到服务器对应文件中,此处可使用BT面板的「文件」进行直观化的操作
  5. 服务器上初始化git仓库
    mkdir /var/repo
    cd /var/repo
    git init –bare blog.git
    cd /var/repo/blog.git/hooks #在blog.git/hooks目录下新建一个 post-receive 钩子
    vim post-receive
  6. post-receive中添加如下内容:

    !/bin/sh

    git –work-tree=/var/www/hexo –git-dir=/var/repo/blog.git checkout -f #
  7. 由于宝塔BT生成的网页路径不在/var下,所以我们要自己生成存放网页的目录
    mkdir /var/www/hexo
    chown -R git:git hexo.git #设置文件的可执行权限和拥有者
    chown -R git:git /www/hexo #设置文件的可执行权限和拥有者
    以下是部分/var下的部分目录
    ├── repo
    │   └── blog.git  #git hook 设置仓库
    ├── run -> /run
    ├── spool
    │   ├── cron
    │   ├── mail -> ../mail
    │   └── rsyslog
    ├── tmp
    └── www
        ├── hexo   #最后存放博客文件的地方
        └── html
    
    同时,你可以使用BT面板,确认Hexo文件的所有者
  8. 在完成上面一系列操作后,我们只需要在我们本地博客的_config.yml中设置好我们的上传仓库即可
    deploy:
    type: git
    repo: [email protected]:/var/repo/blog.git # 此部分修改为你自己的登陆账号和域名,冒号后面为设置的裸仓库的地址, 如果你的域名还没下来,设置你的主机 ip 也是可以的 ,例如 [email protected]:/var/repo/blog.git
    branch: master
    
  9. 至此,我们的Git hook就完成了,hexo g -d后就会上传到我们的博客服务器。

宝塔BT面板确认

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

将「网站目录」修改为/var/www/hexo,点击「保存」

总结

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

本文最后更新于 天前,文中所描述的信息可能已发生改变