使用GitHub推送Hexo到服务器

发布于 2025/08/19 更新于 2026/07/17 建站手札 总字数:716 阅读时长:2 分钟
文章导读 摘要由 Qwen 生成

这篇文章介绍了如何使用GitHub推送Hexo到服务器,包括建立GitHub仓库、上传文件、创建Action以及配置环境变量等步骤。首先,文章提供了在香港直连GitHub的方法,并指导如何在本地安装git、配置用户名和邮箱、创建SSH Key并在GitHub上上传公钥。接着,文章详细说明了如何在自己的hexo根目录下初始化git仓库,并使用PowerShell将文件推送到新建的私有仓库。此外,文章还创建了一个Action,用于自动化部署过程,包括检查分支、缓存项目、安装Node和Hexo、安装依赖、清理文件树、生成静态文件并压缩、部署到服务器等环节。最后,文章列出了需要配置的环境变量,如服务器IP、用户名、密钥密码、私钥和SSH登录端口,并强调了测试的重要性,以确保整个部署流程无报错。

ARTICLE SERIES

博客定制手记

第 10 / 14 篇
  1. 01 配置说说页面
  2. 02 在侧边栏中添加欢迎信息
  3. 03 自定义右键菜单
  4. 04 利用插件自定义页脚菜单
  5. 05 博客添加AI总结
  6. 06 利用 SiteMap 随机访问站内页面
  7. 07 自定义导航栏
  8. 08 自定义分类条
  9. 09 自定义页脚(新)
  10. 10 使用GitHub推送Hexo到服务器
  11. 11 在侧边栏添加日历和倒计时
  12. 12 自定义字体
  13. 13 添加typesense搜索
  14. 14 添加网站左上角菜单

注意:本文为早期 Hexo / Butterfly 魔改记录,本站现已迁移到 Astro,相关代码、路径或插件可能已经失效,仅作历史参考。

1panel没有宝塔的webhook功能,之前一直使用在服务器上建立裸仓库,直接推送到服务器的方法。现在找到一种新的方法。

建立GitHub仓库

因为服务器部署在香港,可以直连GitHub,国内可以使用gitee或者GitHub镜像加速。

  1. 在本地安装git

  2. 打开git bash配置用户名和邮箱

    git config --global user.name "yourname"
    git config --global user.email "youremail"

    可以使用 git config —list查看当前所有的配置

  3. 在github上创建自己的账号(在自己的电脑和服务器上)

  4. 创建SSH Key a:打开Git Bash,输入pwd查看当前路径 b.输入ssh-keygen -t rsa –C “youremail@example.com” (输入完毕后程序同时要求输入一个密语字符串(passphrase),空表示没有密语。接着会让输入2次口令(password),空表示没有口令。3次回车即可完成当前步骤)

    924058.webp
  5. 在GitHub上传自己的公钥

    946620.webp
  6. 新建一个私有仓库

上传文件到仓库

在自己hexo根目录下使用powershell,输入git init,然后git push到之前自己新建的仓库。

创建Action

创建Action

name: 自动部署

on:
  push:
    branches:
      - main 

  release:
    types:
      - published

  workflow_dispatch:

env:
  TZ: Asia/Shanghai

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - name: 检查分支
      uses: actions/checkout@v3
      with:
        ref: main

    - name: 缓存项目 npm 包
      id: cache-node-modules
      uses: actions/cache@v3
      with:
        path: node_modules
        key: ${{ runner.os }}-nodeModules-${{ hashFiles('package-lock.json') }}-${{ hashFiles('package.json') }}
        restore-keys: |
          ${{ runner.os }}-nodeModules-

    - name: 安装 Node
      uses: actions/setup-node@v3
      with:
        node-version: "20.x"

    - name: 安装 Hexo
      run: |
        npm install hexo-cli --global

    - name: 安装依赖
      if: steps.cache-node-modules.outputs.cache-hit != 'true'
      run: |
        npm install

    - name: 清理文件树
      run: |
        npm run clean

    - name: 生成静态文件并压缩
      run: |
        npm run build

    - name: 部署
      run: |
        cd ./public
        git init
        git config user.name "${{ github.actor }}"
        git config user.email "${{ github.actor }}@users.noreply.github.com"
        git add .
        git commit -m "${{ github.event.head_commit.message }}··[$(date +"%Z %Y-%m-%d %A %H:%M:%S")]"
        git push --force --quiet "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git" master:page
    - name: 服务器执行拉取命令
        uses: appleboy/ssh-action@v1
        with:
            host: ${{ secrets.SERVER_IP }}
            username: ${{ secrets.USERNAME }}
            key: ${{ secrets.KEY }}
            passphrase: ${{ secrets.PASSPHRASE }}
            port: ${{ secrets.PORT }}
            script: |
            cd /opt/1panel/apps/openresty/openresty/www/sites/blog.liushen.fun/index/
            git config --global --add safe.directory "$(pwd)"
            git fetch --all --depth=1
            git reset --hard origin/main
            git pull --depth=1
            echo "✅ 已拉取 page 分支最新内容"

环境变量

此次添加变量较多,有:SERVER_IPUSERNAMEPASSPHRASEKEYPORT五个变量,如下:

SERVER_IP:服务器IP USERNAME:SSH链接用户名,一般为root PASSPHRASE:密钥密码,用来提升强度用 KEY:密钥(私钥) PORT:SSH登录端口,一般为22

测试

运行一下这个Action无报错即可。

REVISION HISTORY

文章修订记录

1 次
  1. 增加新版入口

    标记本文为早期 Hexo 部署记录,并补充当前 Astro 版本的网站迁移日志入口。

使用GitHub推送Hexo到服务器

/posts/ce1ec3fe/
作者
biss
发布于
许可协议
CC BY-NC-SA 4.0
网站
订阅 打赏

Comments

使用GitHub推送Hexo到服务器

Ctrl + 右键:浏览器原生菜单