Hexo用宝塔部署

本来Hexo是部署在GitHub上的,无奈访问太慢了,并且有些地区打不开,我这个强迫症就忍不了这种情况。就有了以下开端

一、前提准备

阅读此文章之前,你可能需要首先阅读以下的文章才能更好的理解上下文。

Hexo 搭建静态博客
梦爱吃鱼
如果你需要购买服务器并安装宝塔面板,可以看下这个文章

购买服务器并安装宝塔
梦爱吃鱼
添加站点
在宝塔面板->网站->添加站点,填写域名,版本设置纯静态。记住网站资源目录 /www/wwwroot/ruom.top

二、Git仓库搭建

之前推hexo的静态文件都是推到GitHub的仓库,现在服务器也是一样,需要仓库来保存

下面操作需要有Linux基础知识驱动

1.添加一个用户git
在服务器端

adduser git   #添加git用户
chmod 740 /etc/sudoers #改变sudoers文件的权限为文件所有者可写
vim /etc/sudoers
#在root ALL=(ALL) ALL 下方添加一行
git ALL=(ALL) ALL
chmod 400 /etc/sudoers #将其权限修改为文件所有者可读

2.给git用户添加ssh密钥
这一步是为了建立主机与服务器连接,使其不需要密码也能登陆

#在本地打开powershell 生成密匙 如已有密匙可跳过这一步 部署过hexo的应该都有

ssh-keygen -t rsa -C "ruom.top"
# -t 指定密钥类型,默认是 rsa ,可以省略
# -C 用于识别这个密钥的注释,可以输入任何内容
# -f 指定密钥文件存储文件名,默认id_rsa
## 这个生成的文件在 C:\Users\用户名\.ssh

复制公匙id_rsa.pub内容到服务器/home/git/.ssh/authorized_keys,关闭终端

使用ssh git@server重新登录服务器,测试是否能不要密码登录到git用户,如出现Permission denied的问题可查看服务端是否开启ssh的密钥登录

#在服务器端

su git  #切换到git用户
mkdir -p ~/.ssh
touch ~/.ssh/authorized_keys #创建authorized_keys文件
vim ~/.ssh/authorized_keys #写入密钥
chmod 600 ~/.ssh/authorized_keys #为authorized_keys文件赋予文件所有者可读可写的权限
chmod 700 ~/.ssh #为.ssh文件夹赋予文件夹所有者可读可写可执行的权限

3.创建Git仓库

mkdir /home/git/repos    #新建目录,这是git仓库的位置
cd /home/git/repos
git init --bare blog.git #初始化一个名叫blog的仓库

4.配置钩子实现自动部署
找到/home/git/repos/blog.git/hooks/post-update.sample改名post-update,内容改为

touch /home/git/repos/blog.git/hooks/post-update #创建文件
vim /home/git/repos/blog.git/hooks/post-update # 写入内容
#!/bin/sh
git --work-tree=/www/wwwroot/ruom.top --git-dir=/home/git/repos/blog.git checkout -f

然后给权限

cd blog.git/hooks/
chmod +x post-update #赋予其可执行权限
chown -R git:git /home/git/repos/ #仓库所有者改为git
chown -R git:git /www/wwwroot/ruom.top/ #站点文件夹所有者改为git

5.测试Git仓库是否可用
#在本地端,如果能将仓库拉下来,说明Git仓库搭建成功

git clone git@server_ip:/home/git/repos/blog.git

三、配置和测试
1.配置
修改本地Hexo博客文件夹中的_config.yml文件

deploy:
type: git
repo: git@server_ip:/home/git/repos/blog.git
branch: master

2.测试

hexo clean  #清除缓存
hexo generate #生成静态页面
hexo delopy #将本地静态页面目录部署到云服务器