将hexo部署到自己的服务器(WebHook实现) | Sakitami的集装箱

将hexo部署到自己的服务器(WebHook实现)

写在开头

总对GitHub、Coding的Page服务不满意,考虑要不要把博客部署到自己的服务器上,于是就有了下面的简单的部署方法。

  • 注:通过宝塔面板实现,不喜勿用。

服务器配置

安装宝塔Linux面板

注:宝塔linux6.0版本是基于centos7开发的,务必使用centos7.x 系统

  • CentOS7.x:

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

    1
    wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
  • Debian:

    1
    wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh
  • Fedora:

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

安装后,请务必记录面板的用户名和密码,登录后进行默认配置,不再阐述。


安装WebHook

软件管理中,安装WebHook 1.0。

生成部署公钥

使用ssh链接到你的服务器。Windows可开启OpenSSH或者xshell软件。

开启OpenSSH

Windows10下,在设置--应用和功能--可选功能--添加功能中,安装openSSH客户端

通过以下命令链接服务器:

1
ssh root@服务器ip地址

生成公钥

1
ssh-keygen

默认回车即可。

生成的公钥在服务器的/root/.ssh中。可通过宝塔面板文件较为方便的下载。

这里我们仅需id_ras.pub文件,下载并打开,然后将内容完全复制。

添加WebHook

在宝塔面板的软件管理中,找到WebHook并点击设置—添加。

名称自拟,执行脚本先随便填写,后面会修改。然后点击提交。

点击编辑,将下面的脚本粘贴到框内。第16行为你的GitHub项目

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/bin/bash
echo ""
# 输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "Start"
# 判断宝塔WebHook参数是否存在
if [ ! -n "$1" ];
then
echo "param参数错误"
echo "End"
exit
fi
# git项目路径
gitPath="/www/wwwroot/$1"
# git 网址
gitHttp="http://git.xxxxx.com/$1.git"

echo "Web站点路径:$gitPath"

# 判断项目路径是否存在
if [ -d "$gitPath" ]; then
cd $gitPath
# 判断是否存在git目录
if [ ! -d ".git" ]; then
echo "在该目录下克隆 git"
git clone $gitHttp gittemp
mv gittemp/.git .
rm -rf gittemp
fi
# 拉取最新的项目文件
git reset --hard origin/master
git pull
# 设置目录权限
chown -R www:www $gitPath
echo "End"
exit
else
echo "该项目路径不存在"
echo "End"
exit
fi

添加后,查看密钥。


GitHub配置

添加公钥

注:这里就有个前提了,你需要先把hexo部署到github上[手动滑稽]

在你的博客项目中,打开设置,并点击Deploy Keys

然后点击右上角Add deploy key

题目自拟,然后把刚才复制的key粘贴到下面的key中,勾选Allow write access


设置WebHooks

点击WebHooks,添加Webhook。

在URL处填写

1
http://面板Ip:端口号/hook?access_key=密钥&param=博客网站目录

其中,密钥部分为宝塔配置添加WebHook后的密钥。param为你在面板中创建的博客网站目录。默认在/www/wwwroot/xxxxxx中。

Secret可不填,其他保持默认即可。点击Add webhook


完成

如此配置之后,再部署即能够实时发送到你的服务器上。

1
hexo g && hexo d

参考:宝塔面板实现Hexo博客自动部署

赞助一杯冰阔落🥤