博客搭建 | 四、GitHub Actions ssh-deploy部署至阿里云

简述

在很久之前写了一篇如何使用github actions将博客部署到gitee上,现在,时隔两年,gitee不再提供page服务,于是打算将博客部署到自己的服务器上,以保证国内的访问速度。 如果你没有看过上一篇内容,请点击这里

ssh-deploy

之前的文章已经讲过关于github actions以及前几部的操作,本篇主要说明部署阿里云的操作

这个库主要用于部署至私有服务器上,通过秘钥的方式登录并操作服务器,而在使用中最大的麻烦就在于各个参数的配置上。

配置Actions

yml 复制代码
  - name: deploy aliyun
    uses: easingthemes/ssh-deploy@v5.0.3      #action
    env:
      SSH_PRIVATE_KEY: ${{ secrets.TREE_HOLE }}  #秘钥
      SOURCE: "./dist/"
      ARGS: "-avzr --delete --exclude '.user.ini'"
      REMOTE_HOST: ${{ secrets.HOST }}    # ip
      REMOTE_USER: ${{ secrets.USER }}    # 账号
      REMOTE_PORT : "22" # 端口
      TARGET: ${{ secrets.TARGET }}       # 部署路径

SSH_PRIVATE_KEY

我这里使用的ECS服务器,生成它比较简单,登录阿里云控制台,选择ECS服务器,找到 网络与安全》密钥对,点击创建密钥对,创建时会下载一个pem文件,创建后需要重启服务器,将pem文件内容复制到github secrets中,创建TREE_HOLE(叫啥都行),注意不要多复制一行空格。

SOURCE

需要注意的是,我的博客打包后位置是常见的 dist ,但这里仍需这样写 ./dist/,如果少写,运行可能会报错。

ARGS

这个参数是可填可不填的,由于我并不熟悉服务器命令相关内容,这个参数在我这里的作用是:部署前执行一些操作。后面的命令 -avzr --delete, 会在部署前删除目标目录下的内容;后面的参数 --exclude '.user.ini' ,是排除目标目录下的 .user.ini 文件,使它不被删除。在博客部署中,我们需要清空上一次部署中生成的静态文件,而因为我使用的宝塔创建的站点,会在对应目录中生成配置文件,所以要排除它,否则会在执行actions时报错(虽然报错,但仍会部署成功,并不影响)

REMOTE_HOST

服务器ip

REMOTE_USER

服务器账号,一般是root

REMOTE_PORT

服务器ssh端口 一般是22

TARGET

目标部署目录

总结

该方法不仅适用于博客,同样的平日的项目也可以通过该方法进行多服务器部署,减少人工频繁操作。

相关推荐
志尊宝9 分钟前
AI原生前端开发(037):AI辅助的Vue 3开发最佳实践
前端·vue.js·ai-native
中科三方13 分钟前
AI时代新攻击面:悬空DNS记录正在成为黑客的低成本入侵入口
服务器·前端·人工智能
努力变的更好39 分钟前
H5与小程序之间的回调
前端·小程序·apache
汤米粥1 小时前
目前流行的前端 CSS 框架
前端·css·bootstrap·ant design·‌tailwind css·bulma
砚凝霜1 小时前
CTF Misc 签到 GXUST·CTF:查看源码 + HTML 注释 + Base64 解码(附 Base64 原理)
前端·html
科小怪1 小时前
万能文件格式转换器Filee下载安装全流程图解:255种格式离线转,不用装Office(2026最新)
github·格式转换·软件推荐·下载教程
徐小夕1 小时前
扒了JitWord的源码,我终于搞懂了企业级在线Word到底有多难写
前端·vue.js·github
lily5227831 小时前
工具池与分发
前端·chrome
徐小夕@趣谈前端2 小时前
老旧Word格式全支持!JitWord协同AI文档4.1,让Word文档无缝迁移到Web端
前端·人工智能·word
螺丝钉tina2 小时前
[Playwright][01] 从 Puppeteer 到 Playwright:为什么选择 Playwright + TypeScript?
前端·javascript·typescript