Skip to content
On this page

Github Action 自动部署 VitePress 博客到云服务器

前言

首先你得有个 Github 仓库,再在自己电脑上装个 git(),再得有个云服务器

生成 rsa 格式 ssh-key

运行下列命令

shell
ssh-keygen -m PEM

在自己电脑内找到 ssh 目录

找到它在哪

Mac

/Users/用户/.ssh

Windows

C:\Users\用户\.ssh

目录中 id_rsa 为私钥,id_rsa.pub 为公钥

服务器配置 - 以 Ubuntu 为例

ssh 免密登陆

/root/.ssh 中找到 authorized_keys,将自己电脑上的 id_rsa.pub 的内容复制粘贴到里面,并保存

这样在自己电脑终端内运行 ssh 用户名@服务器ip 就能免密登陆了

nginx 配置

因为比较复杂,自己网上找找教程,安装好了在配置信息里把自己域名指向到服务器上自己准备部署的根目录位置就行

Github Action

创建流程配置文件

在仓库根目录下创建 .github/workflows/自己喜欢的名称.yml

yml
name: 部署到百度云服务器 # action名称
on: [push] # 在推送的时候运行此 action

jobs:
  deploy_job:
    runs-on: ubuntu-latest  # 运行环境
    name: build
    steps:
      # check out the repository
      - uses: actions/checkout@v3 # 这里使用了github官方提供的action,checkout项目到虚拟机上
      - uses: pnpm/action-setup@v2 # 这里使用的 pnpm 官方推荐方法,github action 中没有提供 pnpm,只有 npm 和 yarn
        with:
          version: 7    
      - name: Install Dependencies
        run: pnpm i
      - name: Build
        run: pnpm build

      # 利用 action 把 build 好的文件上传到服务器 /home/StudyBlog 路径下
      - name: SFTP Deploy
        uses: wlixcc/SFTP-Deploy-Action@v1.2.4
        with:  
          username: 'root'   # 登陆的服务器上的用户名
          server: '${{ secrets.SERVER_IP }}' # 引用 Github 仓库配置好的服务器 ip
          ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }} # 引用 Github 仓库配置好的本机私钥
          local_path: './docs/.vitepress/dist/*'  # 项目要部署的目录中的所有文件
          remote_path: '/home/StudyBlog' # 服务器上的指定目录

注意要将 local_pathremote_path 修改为正确的目录

私密配置信息

由于我们要部署到服务器上,且不能暴露我们服务器的 ip 和密钥,减少被攻击的风险。所以流程配置文件中我们以引用环境变量的形式来使用配置信息

打开 Github 仓库,找到 Settings -> Security -> Secrets and variables -> Actions

Secrets Tab 中点击 New repository secret

分别配置 SERVER_IP,值为服务器 IP 地址;以及 SSH_PRIVATE_KEY 为本机生成的 id_rsa 密钥

结尾

当把项目推送到 Github 时,就会自动执行脚本流程,在仓库顶栏 Actions 可以查看详情内容,成功后就可以通过域名访问自己部署到云服务器上的博客了

Last updated: