hexo博客--推送至远程服务器

前言

上次完善hexo博客搭建后还有一个问题没有解决,就是如何快速将本地生成的静态页面推送至远程服务器,一开始采取ftp之类的方式直接将本地生成的页面直接复制粘贴到远程服务器的文件夹,但是这种方式很麻烦,需要在本地文件管理器中找到生成的静态页面,使用xftp,winscp等软件登录远程服务器,将本地文件夹直接复制到远程服务器,等待其传输。于是我选择使用git直接将本地静态页面文件推送至远程服务器。

远程服务器中安装Git

使用apt install git直接安装

建立一个用于管理博客文件夹的用户

新建用户

useradd hexo
passwd hexo

授权

(首先需要安装sudo)
vim /etc/sudoers
root ALL=(ALL:ALL) ALL下添加hexo ALL=(ALL:ALL) ALL

创建仓库以及设置自动部署

新建仓库并建立钩子

我们在这里需要用到的是裸库,即仅包含版本控制信息的仓库。不保存文件,常用作服务器仓库,实现数据共享和同步。
自动部署的核心在于git-hooks,类似于脚本,当某种条件触发时执行钩子文件中的内容。

cd /home

mkdir repo & cd repo

git init --bare blog.git

编辑钩子文件
vim /home/repo/blog.git/hooks/post-receive

输入git --work-tree=你的项目存放目录 --git-dir=/home/repo/blog.git checkout -f
退出vim并保存。

post-receive钩子时当Git收到push请求的时候就会调用此钩子。

为钩子文件以及仓库目录授权(将仓库目录及项目目录转交给新建的用户(hexo))

1
2
3
chmod +x /home/repo/blog.git/hooks/post-receive     #为钩子文件授予可执行权限(+x)  
chown -R hexo:hexo /home/repo #将仓库目录的所有权移交给hexo用户
chown -R hexo:hexo 项目部署目录 #将hexo部署目录的所有权移交给hexo用户

修改hexo部署配置

找到本地hexo文件夹中的_config.yml文件打开编辑

找到deploy这一配置
将repo改为hexo@服务器ip:git仓库目录(/home/repo/blog.git)

这样我们就完成了初步配置。我们可以使用hexo d命令将本地生成的文件部署至远程服务器了,但是每次部署的时候会弹出输入hexo用户的密码,我们可以使用密钥对来实现免登录。

免登录配置

假设我们在本地是用Git bash来输入命令的,通过Git bash输入

1
ssh-keygen -t rsa -b 4096 -C "my@emailaddress.com" -f /path/to/key

来生成密钥对,此时私钥和公钥都存在你指定的位置中,将公钥(.pub文件)中的内容复制下来。

进入服务器端,在hexo用户目录(/home/hexo)中新建目录.ssh
mkdir .ssh

在此目录中新建文件 authorized_keys,将之前复制的公钥中的内容全部复制进去。

修改权限

1
2
chmod 600 /home/hexo/.ssh/authorized_keys  
chmod 700 /home/hexo/.ssh

修改目录拥有者
chown -R hexo:hexo /home/hexo/.ssh

这样就可以实现免登录连接至远程服务器,即可以实现免登录部署。


hexo博客--推送至远程服务器
https://rainzz.cn/2025/03/14/hexo博客--推送至远程服务器/
作者
rainzz
发布于
2025年3月14日
许可协议