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

简述

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

ssh-deploy

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

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

配置Actions

yml 复制代码
  - name: deploy aliyun
    uses: easingthemes/[email protected]      #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

目标部署目录

总结

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

相关推荐
剽悍一小兔3 分钟前
小程序发布后,不能强更的情况下,怎么通知到用户需要去更新?
前端
115432031q4 分钟前
基于SpringBoot+Vue实现的旅游景点预约平台功能十三
java·前端·后端
JiangJiang5 分钟前
🧠 面试官:受控组件都分不清?还敢说自己写过 React?
前端·react.js·面试
tianchang5 分钟前
JS 中 Map 的概念与使用
前端·javascript
Jenlybein5 分钟前
[ Javascript 面试题 ]:提取对应的信息,并给其赋予一个颜色,保持幂等性
前端·javascript·面试
Carlos_sam5 分钟前
Opnelayers:向某个方向平移指定的距离
前端·javascript
夜熵6 分钟前
JavaScript 中的 this
前端·面试
前端小巷子9 分钟前
CSS 单位指南
前端·css
St9 分钟前
探索JavaScript原型链设计——详解prototype、__proto__及constructor三者之间的关系
前端·javascript
前端大白话9 分钟前
JavaScript中`Symbol.for()`和`Symbol()`的区别,在创建全局唯一的`Symbol`值时如何选择使用?
前端·javascript·设计模式