语雀 + GitHub + Hexo 三端同步的自动化部署博客的搭建
本文完整版已转移至 [yuque-hexo 自动化同步: PC & GitHub & Server 的安装与配置](https://www.yuque.com/toulzx/website-sync/ yuque-hexo-guide)
食用声明
本文的目的是实现 **语雀**
编辑发布后,**GitHub Actions**
** 自动同步到 **github.io**
以及 ****个人服务器**
。由于没有找到类似的教程,便自己根据网络上的资料总结了一份,有些需要修改的地方会在本篇提出,相同的操作直接链接到了原文相应段落处,跳转查看即可,本文不再赘述。
如果你没有服务器并只想同步到 **github.io**
,那么阅读这篇文章足以:[**语雀自动同步到 hexo 博客**](https://www.yuque.com/hxfqg9/web/gtb5ck#rOPSH)
。
**如果你符合如下要求,你将获得更好的体验: **
GitHub
使用基础云服务器&域名
购买和项目部署经历- 使用搜索引擎解决问题的能力
- 能够稳定的访问 GitHub 和 Google
本文目前仅在[**语雀**](https://www.yuque.com/toulzx/website-sync/yuque-github-hexo)
、[**个人博客**](https://toulzx.github.io/)
发布发布,不允许转载。
本地与服务器端的安装与配置、GitHub 个人仓库创建
这篇文章已经写的很详细了:[安装 Hexo 博客并部署到 GitHub 或云服务器](https://blog.csdn.net/qq_43187818/article/details/104468721?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-3.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-3.no_search_link)
,此处不再赘述。
但请注意,当阅读到[部署到云服务器](https://blog.csdn.net/qq_43187818/article/details/104468721?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-3.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-3.no_search_link#t5)
一节,完成安装 Git 以及配置仓库
后,你需要停止并继续阅读本文。
补充:本地通过 ssh 连接云服务器
请注意,这一步不是必须的。它只是方便你在电脑本地直接控制服务器,而不是使用云服务器的在线控制台。因此,如果你已经安装并配置过 XShell
,或者你并不常使用服务器,这一步看起来就多此一举了。你可以跳过这一步。
如果你正在使用 Windows
,我推荐你使用 git bash
而不是 cmd
来完成配置。
按照教程,我们应该使用以下命令:
1 | $ ssh -v git@[云服务器的公网IP地址] |
代码块符号说明:
$
表示这后面一条控制指令,你不需要输入$
[这里会解释填什么]
表示这是个变量,它往往因人而异
然后你可能遇到如下报错:
1 | Permission denied (publickey,gssapi-keyex,gssapi-with-mic) |
你可以尝试登录 root 账户测试,但结果是一样的:
1 | $ ssh -v root@[云服务器的公网IP地址] |
解决方法参考此文:[Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 解决方法](https://xiaojueguan.blog.csdn.net/article/details/84946557?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link)
在 root 用户下,修改配置文件:
1 | $ sudo vim /etc/ssh/sshd_config |
找到被 #
注释的如下命令,按 i
进入编辑模式,取消注释并修改成:
1 | PasswordAuthentication yes |
按 esc
退出编辑模式,输入 :wq
保存修改。
再执行:
1 | $ sudo systemctl restart sshd |
然后本地(PC)再次尝试登录服务器:
1 | $ ssh -v git@[云服务器的公网IP地址] |
此时应该可以登录成功。
自动化部署
此处参考了[Hexo 博客部署到腾讯云服务器全流程](https://blog.csdn.net/StaunchKai/article/details/82878928?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.no_search_link)
并根据实际情况补充了内容
创建 git 裸库
1 | $ su root # 注意是 root 用户下 |
使用 git-hooks 同步网站根目录
这使用的是 post-receive
/post-update
这个钩子,当 git
有收发的时候就会调用这个钩子。 在 website.git
裸库的 hooks
文件夹中,新建 post-receive
/ post-update
文件(不同 git 版本不同,此处默认都创建):
1 | $ vim [website].git/hooks/post-receive |
1 | $ vim [website].git/hooks/post-receive |
添加如下内容,并保存退出:
1 | git --work-tree=/home/www/website --git-dir=/home/git/[website].git checkout -f |
赋予此文件权限:
1 | $ chmod +x /home/git/[website].git/hooks/post-receive |
1 | chmod +x /home/git/[website].git/hooks/post-update |
hexo
同步 语雀
内容:
此处内容参考[语雀自动同步到hexo博客](https://www.yuque.com/hxfqg9/web/gtb5ck#PV23h)
。
语雀知识库路径设置
仓库设置 -> 知识库信息 -> 路径
语雀 Token
个人头像 -> 账户设置 -> Token -> 新建 -> 勾选读权限
安装并配置 [yuque-hexo](https://github.com/x-cold/yuque-hexo)
1 | $ npm i -g yuque-hexo |
然后在创建的 Hexo 项目的目录下的 package.json
文件中添加:
1 | "yuqueConfig": { |
配置本地 _config.yml
文件
此处的配置仅是方便本地手动上传,也可跳过。
在创建的 Hexo 项目的目录下,打开此文件,找到 #deployment
,添加如下内容:
1 | deploy: |
后来创建的仓库默认 branch-name
可能是 main
,请根据实际情况修改,当你不确定的时候,可以除去 branch
项,你只需确保仓库仅有一个分支即可。
这时候使用以下命令,就会把语雀的文章给下载下来,下载到 \source_posts:
1 | $ yuque-hexo sync # 把语雀的文章给下载下来,下载到 \source\_posts |
GitHub Actions 自动更新
此处参考了:[Github Actions 自动部署 Hexo 博客至个人服务器](https://blog.csdn.net/qq_51661411/article/details/117458995#t3)
创建 GitHub Token
、仓库 以及 仓库Secrets
直接看[此处](https://www.yuque.com/hxfqg9/web/gtb5ck#rOPSH)
。图文并茂,简单明了。
请注意,仓库 Secrets,除了 GH_TOKEN
和 GH_REF
之外,你还需要额外创建几个 Secrets
,这在链接中没提及。
HEXO_DEPLOY_PRI
:它的内容取自本地C:\Users\[PC-username]\.ssh\id_rsa
,将该文件所有内容复制出来即可。GH_USERNAME
:填写你的 GitHub 名称GH_EMAIL
:填写你的 GitHub 绑定的邮箱
并且,workflow
的内容以此处为准:
1 | name: website-sync |
注意,此代码块中的 []
不是上文规定的意思, []
是代码中包含的内容,请勿除去。
配置 serverless 云函数
请看此处。
大功告成
恭喜你!
参考资料
- 【语雀】语雀自动同步到 hexo 博客 | yichen
- 【CSDN】Hexo 博客部署到腾讯云服务器全流程 | CareyQ03
- 【CSDN】安装 Hexo 博客并部署到 GitHub 或云服务器(细节教程,越过各种坑)| 桐谷柯南
- 【CSDN】Hexo 搭建 - 部署服务器 | Dawson_
- 【CSDN】nginx server 中的 root 和 location 的 root 的区别 | fengzyf
- 【CSDN】Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 解决方法 | xiaojueguan
- 【博客园】git init 和 git init –bare 的区别 | 接近风的地方 coc
- 【CSDN】Github Actions 自动部署 Hexo 博客至个人服务器 | 不染轻裳
- 【CSDN】ssh 免密以后还是需要输入密码:ssh 配置的一些坑 | Van_2009
- 【CSDN】SSH 简介及两种远程登录的方法 | Jack LDZ
语雀 + GitHub + Hexo 三端同步的自动化部署博客的搭建