流程概览

L端 环境准备(以windows端为例)
安装 Node.js
node.js官网:https://nodejs.org/en
进入该站,下载最新版本,都是可视化安装,不做赘述!
:::info 验证安装是否成功
出现版本信息,即表示安装成功
:::
安装 git
git 官网:https://git-scm.com/
进入该站,下载最新版本,都是可视化安装,不做赘述
:::info 验证安装是否成功
出现版本信息,即表示安装成功
git常用命令一览:https://doc.jenkina.cn/,
安装 hexo
hexo 官方文档:https://hexo.io/zh-cn/docs/
在本地找到一个位置,新建文件夹,作为hexo 博客的项目库
进入目录,调出cmd,输入下面的命令
1 2 3 4 5 6 7 8 9 10
| # **安装hexo-cli 指令集** npm install -g hexo-cli # **安装 hexo 库** npm install hexo
# **安装完毕后 重启cmd,执行下面命令,创建hexo本地库,<folder> 为指定目录,可以省略** hexo init <folder> cd <folder> npm install
|
本地库创建完成后,输入hexo s
,出现INFO Hexo is running at http://localhost:4000/ . Press Ctrl+C to stop.
说明安装成功。
S端 环境准备(以CentOS 8 为例)
安装git
目前 CentOS yum
和dnf
工具支持的git版本只到1.8,有下面两种安装方式,任选一个
[yum 直接安装]1 2 3
| sudo yum install git -y # **验证Git版本** git --version
|
[编译安装]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
| # **安装相关依赖** sudo yum install -y curl-devel libexpat1-dev libssl-dev libz-dev libperl-dev # **下载源代码** wget https://github.com/git/git/archive/v2.44.0.tar.gz # **解压源代码** tar -xzf v2.44.0.tar.gz # **进入git源代码目录** cd git-2.44.0 # **编译需要依赖openssl库、expat-devel、autoconf库** sudo yum install openssl-devel expat-devel sudo yum install autoconf # **编译、安装、配置全局变量** make ./configure ./configure prefix=/usr make && make install # **更新PATH环境变量,以便系统可以找到新安装的Git** export PATH=/usr/git/bin:$PATH vim /etc/profile # **在 profile 文件末尾追加配置内容** export GIT_HOME=/usr/bin/git export PATH=$GIT_HOME/bin:$PATH # **刷新 profile 配置文件** source /etc/profile # **验证Git版本** git --version
|
查看git最新版本:https://git-scm.com/download/linux
S端:配置账户
1 2 3 4 5 6 7 8 9 10 11
| # **创建用户组** groupadd git # **创建用户 并纳入git组** useradd jenkin -g git # **创建密码** passwd jenkin # **修改git用户的权限** chmod 740 /etc/sudoers # **进入 sudo 命令文件** vim /etc/sudoers
|
找到root ALL=(ALL) ALL
,在下面添加jenkin ALL=(ALL) ALL

S端:建立、初始化仓库
1 2 3 4 5 6 7 8
| # **在/home/jenkin/ 目录下建立并初始化一个仓库 ** cd ~ git init hexo.git
# **更改仓库所属** chown -R jenkin:git hexo.git/
|
配置SSH
L端 生成密钥对
1 2 3 4 5 6
| # **配置全局变量—— 设置一个name 和一个email 后面上传博客的时候也用得到** $ git config --global user.email "xxxxxxxxxx@xx.com" $ git config --global user.name "xxx"
# **创建SSH密钥对** ssh-keygen -t rsa -b 4096 -C "xxxxxxxxxx@xx.com"
|
接下来就是一直回车,接受默认设置,此时密钥对会保存在本地
路径:C:\Users\Administrator\.ssh
公钥文件名:id_rsa.pub
私钥文件名:id_rsa
S端 接收密钥
1 2 3 4 5
| # **切换用户** su jenkin # **在用户根目录创建.ssh文件夹,存放公钥** cd ~ mkdir .ssh
|
通过xftp 工具 将本地的公钥文件上传到服务器的/home/jenkin/.ssh目录下
拷贝公钥到authorized_keys
文件内
:::waring
拷贝密钥的步骤,最好是通过代码指令进行,我之前偷懒 用xftp和记事本拷贝公钥,结果卡了好半天都没成功
:::
1 2 3 4 5 6 7 8 9 10 11
| # **新增文件,并拷贝公钥内容** cd ~/.ssh cp id_rsa.pub authorized_keys cat id_rsa.pub >> ~/.ssh/authorized_keys
# **设置权限** chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh
# **确保 SSH 相关的文件和目录具有正确的 SELinux 安全标签** restorecon -Rv ~/.ssh
|
测试本地免密登录服务器:在L端,调出Git Bash 并输入
1 2
| ssh -v git@<ip地址> # **出现 last login; last sucessful;welcome 等字样,说明连接成功**
|
配置钩子文件
因为git库不会以文件的形式正常显示在hexo.git仓库内,所有我们还需要将git仓库接收的文件,通过checkout或clone 功能导出到自定义的目录下,方便后续nginx服务器配置网站
而 git 所附带hook功能,可以实现自动化运作.其中post-receive
就是可以在客户端push 文件后进行自动化的脚本文件。
我们可以通过这个特性,来实现网站的自动化更新。
1 2 3 4 5 6
| # **S端 git 组用户下** cd ~/hexo.git/.git/hooks touch post-receive # **给予执行权限** chmod +x post-receive vim post-receive
|
有两个脚本,哪个可以用哪个
:::code-group
[checkout 法]1 2 3
| #!/bin/bash git --work-tree=/home/jenkin/hexo --git-dir=/home/jenkin/hexo.git checkout -f
|
[clone 法]1 2 3 4 5 6
| #!/bin/bash REPO_PATH="/home/jenkin/hexo.git" WORK_TREE_PATH="/home/jenkin/hexo" if [ -d "$WORK_TREE_PATH" ]; then rm -rf "$WORK_TREE_PATH" fi git clone --bare "$REPO_PATH" "$WORK_TREE_PATH"
|
:::
配置hexo 并上传到 Git 仓库
在L 端打开Hexo 项目 修改_config.yml
文件中的deploy
:
1 2 3 4 5
| deploy: type: git repo: github: jenkin@<ip地址>:/home/jenkin/hexo.git branch: master
|
在L端 hexo项目目录下 进入终端,依次输入
1 2 3 4 5 6
| # **清除之前生成的静态文件 hexo c** hexo clean # **生成静态文件 hexo g** hexo generate # **部署到 Git 仓库 hexo d** hexo deploy
|
部署到Git仓库出错解决
在hexo deploy 过程中,出现下图所示,上传无误

常见错误解决
::: tip 情况1
1 2 3
| # **上传代码时出现** fatal: sha1 file '<stdout>' write error: Broken pipe error: remote unpack failed: unable to create temporary object directory
|
解决方案:
1 2
| # **先更改文件夹所有权** sudo chown -R jenkin:git hexo.git
|
:::
::: tip 情况2
1 2
| # **上传代码时出现** ! [remote rejected] HEAD -> master (branch is currently checked out)
|
解决方案:在 hexo.git/ 目录下 的config文件中 添加以下内容
1 2
| [receive] denyCurrentBranch = ignore
|
:::
::: tip 情况3
git push -u origin master 出现问题:
1 2
| error: src refspec master does not match any error: failed to push some refs to 'git@github.com:xxxxxxxx/xxx.git'
|
解决方法
1 2 3 4 5 6 7
| # **本地库如果是空的,则需要创建个文件** git add . git commit -m "第一次提交" git push -u origin master
# **如果不是上面的问题,尝试下面的代码** git pull --rebase origin master # **拉取远程分支的更改**
|
:::
S端 仓库验证、钩子验证 及nginx服务器的配置
仓库验证
进入到仓库目录下 输入git status
出现一骡子静态文件,说明上传成功
hook 验证
通过xftp或者命令行的方式,看下自己导出的目录有没有生成,没有生成heox 目录,说明钩子未响应,问下ChatGPT 给出一些解决方案,如果仍然无法解决问题,那么就手动执行钩子文件
1 2
| cd /home/jenkin/hexo.git/ ./.git/hooks/post-receive
|
nginx 配置
会linux 命令的,配置nginx 不是问题
不会linux 命令的,用宝塔面板‘小皮面板,的可视化操作,将 /home/jenkin/hexo 目录作为网站的根目录,同样不是问题
该板块在这里不做赘述,
希望本文章能帮您顺搭建自己的专属博客。欢迎留言交流。
–The End–