搭配宝塔 BT 面板,将 Hexo 博客部署在 VPS 上
本文最后更新于:2022年7月6日 晚上
说明
该篇文章主要介绍如何利用宝塔BT面板,将Hexo生成的博客自动化部署到你的服务器上。由于一开始没有完整的教程供我参考,在整合了多篇文章后,我将整个流程尽可能简化,也给自己留一个备份,以供之后参考。
文章的主要内容如下:
- 选择Linux系统
- 设置SSH登录
- Hexo自动部署
- 宝塔面板部署
选择VPS以及服务器系统
由于我购买VPS主要用途是用来扶墙,创建博客只是穿上一件好看的衣服,所以选择了便宜的搬瓦工,速度还可以,如果你追求稳定,为了长久的维护博客,建议选择其他可靠的VPS服务器。
系统方面我安装的是Ubuntu 20.04,当然你也可以选择使用Debian系统,随个人爱好。
设置SSH登录
完成如下的设置,你可以直接使用你的命令行工具通过SSH来登录你的服务器(建议在代理下使用SSH),而且不需要每次都输入账号密码,如果没有相关需求的同学可以直接跳过这部分。
生成本地公钥
首先,我们现在本地生成自己的公钥ssh-keygen -t rsa '你的邮箱地址‘
上传你的公钥到服务器
然后,将你的公钥/.ssh/id_rsa.pub
复制到服务器上对应用户的/.ssh/authorized_keys
即可,这里来说一般有以下三种:
使用 ssh-copy-id-for-OSX 工具将公钥复制到服务器
brew install ssh-copy-id #本地用brew指令安装ssh-copy-id
ssh-copy-id 用户名@服务器IP地址 #相应替换为你的服务器用户名和IP当VPS服务器用户目录下尚未有.ssh目录时使用此方式
cat ~/.ssh/id_rsa.pub | ssh username@hostname "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
- 通用方式
1
2
3
4scp \~/.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文件
设置快捷登录
当完成以上操作后,我们就可以通过在命令行工具中ssh user@hostname
登录我们的服务器。
当然,还有更简便的方式,省去记录主机名的麻烦,通过在本地编辑.ssh/config
设置我们的服务器信息
sudo vim ~/.ssh/config
添加内容如下:
1 |
|
这样我们就可以通过ssh alias
的命令行直接快速登录我们的VPS服务器
3. Hexo 自动部署
Hexo 官方论坛提供了多种方式来实现自动部署,该教程使用了git-hook
的方式进行部署
首先,你需要在服务器安装
git
:apt-get install git
然后,本地安装部署工具(这个大家都会安装,用来git推送文件)
npm install hexo-deployer-git --save
接下来,我们要继续在服务器上操作,我们要在上面安装一个git的裸仓库,这个仓库里不会存放任何文件,只是一个我们用来接收文件的中转站,当git接收到文件后将其直接存放到我们的指定的文件夹里面。
在这之前,我们需要创建一个专门的用户去负责相关的git操作adduser git # 此处本应该还要设置git用户的shell登录权限,但是我几经尝试都不行,遂放弃,对安全较为看重的话,麻烦另行尝试
- Git用户创建完成后,我们需要将本地的公钥传到git用户的
/home/git/.ssh/authorized_keys
中,这样我们本地才能在执行hexo d
后将你的文件推送到服务器,具体方式可参考前文,最粗暴的做法就是本地复制粘贴到服务器对应文件中,此处可使用BT面板的「文件」进行直观化的操作
- 服务器上初始化
git
仓库1
2
3
4
5mkdir /var/repo #新建目录,此为Git仓库的位置
cd /var/repo
git init --bare blog.git #新建一个名叫Blog的
cd /var/repo/blog.git/hooks #进入Git钩子文件夹
vi post-update #新建并修改post-update钩子 - 在
post-update
中添加如下内容:1
2#!/bin/bash
git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f - 由于宝塔BT生成的网页路径不在
/var
下,所以我们要自己生成存放网页的目录同时,你可以使用BT面板,确认Hexo文件的所有者1
2
3
4
5
6mkdir /var/www
mkdir /var/www/hexo
cd /var/repo/hexo.git/hooks
sudo chown -R git:git /var/repo #设置文件及子文件的可执行权限和拥有者
sudo chown -R git:git /var/www/hexo #设置文件及子文件的可执行权限和拥有者
sudo chmod +x post-update #赋予其可执行权限
- 在完成上面一系列操作后,我们只需要在我们本地博客的
_config.yml
中设置好我们的上传仓库即可1
2
3
4deploy:
type: git
repo: root@crowncj.com:/var/repo/blog.git # 此部分修改为你自己的登陆账号和域名,冒号后面为设置的裸仓库的地址, 如果你的域名还没下来,设置你的主机 ip 也是可以的 ,例如 root@xx.xx.xx.xx:/var/repo/blog.git
branch: master - 至此,我们的Githook就完成了,
hexo g -d
后就会上传到我们的博客服务器。
宝塔BT面板确认
宝塔面板在「添加站点」后默认的的网站目录是/www/wwwroot/
,这与我们的博客存放地址不符,因此我们需要修改一下
将「网站目录」修改为/var/www/hexo
,点击「保存」
总结
至此,利用宝塔BT面板将Hexo博客部署到VPS服务器上就完成了,enjoy~