简述
在很久之前写了一篇如何使用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
目标部署目录
总结
该方法不仅适用于博客,同样的平日的项目也可以通过该方法进行多服务器部署,减少人工频繁操作。