跳到主要内容

搭配宝塔 BT 面板,将 Hexo 博客部署在 VPS 上

·1853 字·约 4 分钟

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

文章的主要内容如下:

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

选择VPS以及服务器系统 #

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

系统方面我安装的是Ubuntu 20.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
  1. 当VPS服务器用户目录下尚未有.ssh目录时使用此方式
cat ~/.ssh/id_rsa.pub | ssh username@hostname "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
  1. 通用方式
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文件

设置快捷登录 #

当完成以上操作后,我们就可以通过在命令行工具中ssh user@hostname登录我们的服务器。

当然,还有更简便的方式,省去记录主机名的麻烦,通过在本地编辑.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服务器

3. Hexo 自动部署 #

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

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

在这之前,我们需要创建一个专门的用户去负责相关的git操作

adduser git
  1. Git用户创建完成后,我们需要将本地的公钥传到git用户的/home/git/.ssh/authorized_keys中,这样我们本地才能在执行hexo d后将你的文件推送到服务器,具体方式可参考前文,最粗暴的做法就是本地复制粘贴到服务器对应文件中,此处可使用BT面板的「文件」进行直观化的操作

  1. 服务器上初始化git仓库
mkdir /var/repo	#新建目录,此为Git仓库的位置
cd /var/repo
git init --bare blog.git	#新建一个名叫Blog的
cd /var/repo/blog.git/hooks	#进入Git钩子文件夹
vi post-update	#新建并修改post-update钩子
  1. post-update中添加如下内容:
#!/bin/bash
git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f
  1. 由于宝塔BT生成的网页路径不在/var下,所以我们要自己生成存放网页的目录
mkdir /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	#设置文件及子文件的可执行权限和拥有者
	udo chmod +x post-update	#赋予其可执行权限

同时,你可以使用BT面板,确认Hexo文件的所有者

  1. 在完成上面一系列操作后,我们只需要在我们本地博客的_config.yml中设置好我们的上传仓库即可
deploy:
	type: git
	repo: [email protected]:/var/repo/blog.git # 此部分修改为你自己的登陆账号和域名,冒号后面为设置的裸仓库的地址, 如果你的域名还没下来,设置你的主机 ip 也是可以的 ,例如 [email protected]:/var/repo/blog.git
	branch: master
  1. 至此,我们的Githook就完成了,hexo g -d后就会上传到我们的博客服务器。

宝塔BT面板确认 #

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

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

总结 #

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