2024年5月

1. 配置Hexo博客

确保你的Hexo博客已经安装并配置好。如果你还没有设置,可以通过以下命令安装Hexo:

npm install -g hexo-cli
hexo init blog
cd blog
npm install

2. 创建GitHub仓库

  • 登录到你的GitHub账户。
  • 点击右上角的 "+" 号,选择 "New repository"。
  • 填写仓库的名称,可以是 hexo-blog 或者其他你喜欢的名字。
  • 选择 "Public" 或 "Private",根据你的需求。
  • 点击 "Create repository"。

3. 初始化本地Git仓库并关联GitHub仓库

在你的Hexo项目目录下,执行以下命令:

cd blog
git init
git remote add origin https://github.com/your-username/hexo-blog.git

your-username 替换为你的GitHub用户名,将 hexo-blog.git 替换为你的仓库名。

4. 提交本地更改到GitHub

将本地的Hexo源码提交到GitHub:

git add .
git commit -m "Initial commit of Hexo blog"
git push -u origin master

5. 配置Webhooks

  • 在GitHub仓库的页面,点击 "Settings" > "Webhooks" > "Add webhook"。
  • 在 "Payload URL" 输入框中,输入你的宝塔面板中的Webhook触发地址。
  • "Content type" 选择 "application/json"。
  • "Which events would you like to trigger this webhook?" 选择 "Just the push event"。
  • 点击 "Add webhook"。

6. 编写触发脚本

在服务器上,创建一个脚本文件,例如 trigger-build.sh

#!/bin/bash
cd /path/to/your/hexo/blog
git pull origin master
hexo generate
# 同步到网站目录的命令,例如使用rsync
rsync -avz /path/to/your/hexo/blog/public/ /path/to/your/webserver/directory

确保替换 /path/to/your/hexo/blog/path/to/your/webserver/directory 为你的实际路径。

给这个脚本执行权限:

chmod +x trigger-build.sh

7. 设置宝塔面板

  • 登录到宝塔面板。
  • 找到 "安全" 相关的设置,确保允许外部POST请求。
  • 如果你的Webhook触发地址是自定义的,确保宝塔面板的防火墙规则允许该地址的请求。

8. 测试流程

  • 在本地Hexo项目中做一些更改,例如添加一篇新的博客文章。
  • 提交更改到GitHub:

    git add .
    git commit -m "Add a new blog post"
    git push origin master
  • 检查宝塔面板中的脚本是否被触发,并且是否成功生成了静态文件并同步到了网站目录。

注意事项

  • 确保你的服务器安全设置允许GitHub的Webhook请求触发脚本。
  • 根据你的服务器环境和宝塔面板的具体配置,可能需要调整脚本和Webhook的设置。
  • 如果你在操作过程中遇到任何问题,可以参考Hexo和GitHub的官方文档,或者寻求社区的帮助。

更新本地SSH配置:如果您确认远程主机是安全的,那么您需要更新本地的known_hosts文件,以包含新的主机密钥。您可以通过以下命令来实现这一点:

ssh-keygen -R [hostname or IP address]

将[hostname or IP address]替换为您的远程主机地址。

重新尝试连接:在更新了known_hosts文件后,重新尝试连接到远程服务器。

友链朋友圈程序比较脆弱,重启服务器或者不当使用前端页面都会导致该程序无法正常运行。

解决方法为:重装大法。

进入宝塔面板「文件」,包含友链朋友圈运行程序的目录:

宝塔面板截图

点击此页面「终端」按钮,输入部署指令:

python3 deploy.py

按界面提示操作,最后输入:

curl 127.0.0.1:8000/all

出现数据即为部署成功。

域名、反代设置不变,刷新页面即可正常使用。