hexo使用github action自动部署至腾讯云开发静态网站托管服务以及github pages

hexo使用github action自动部署至腾讯云开发静态网站托管服务以及github pages,第1张

原文地址: https://blog.kaygb.com/210.html

谈及静态网站的好处,无非是快速轻量,甚至无需购买服务器,使用github pages或者coding等托管即可实现。同时,jsdelivr可对github公开仓库的静态资源进行加速,并且自带全球cdn,快速,并且完全免费。

近期,我的博客网站也迁移到了hexo,并托管在github pages,由于之前申请过腾讯云开发的9.9元静态网站托管服务,本着不用白不用的原则,我把国内的线路以及博客生成的页面都放在了腾讯云开发静态网站托管服务上。

首先在本地安装hexo环境,配置好主题以及自定义的配置,然后将整个hexo目录推送到github私有仓库。私有仓库在接受到push之后,使用github action进行hexo g和hexo deploy,将生成的静态文件推送到另一个以 用户名.github.io 为名称的仓库。

如你所见,我们需要使用两个github仓库来构建我们的个人博客,其中私有仓库(我们可以将名称设置为blog-source)作为博客源文件保存目录,包含所有的hexo配置文件以及我们的主题文件。

这样的好处就是,我们可以完整保留hexo的目录,不用担心文件丢失的问题,还有就是我们可以直接在github网页端直接进行文章的写作,并且支持原生的github markdown格式。

在我们commit之后 github action会自动帮我们构建以及发布,我们只需要安心写作即可。

这一步可以根据hexo官方文档来进行配置。

https://hexo.io/zh-cn/docs/

一个是私有的仓库,用来存放hexo所有的源文件,另一个是公开的以 用户名.github.io 的仓库。

使用ssh-keygen生成一组公私秘钥对

在 Settings ->SSH and GPG keys 添加刚刚生成的公钥,名称随意。

在私有仓库的 Settings ->Secrets 里添加刚刚生成的私钥,名称为 ACTION_DEPLOY_KEY 。

在hexo目录创建 .github 文件夹,并在里面创建 workflows 文件夹,然后在里面新建 blog.yml

贴出我的GitHub action配置文件,后面再进行讲解。

其中,在31至38行内,可以添加自己所使用的hexo插件,如果本地测试的时候使用了此插件,一定要记得将那个插件的npm安装命令写在那里。

云开发Cloudbase提供了可直接使用的action: https://github.com/marketplace/actions/tencent-cloudbase-github-action

在腾讯云开发控制台获取token: https://console.cloud.tencent.com/cam/capi

然后在项目 Setting/ Secrets 里设置 SECRET_ID , SECRET_KEY , ENV_ID 信息

根据文档做出修改然后添加在blog.yml后面

同时,目前我也遇到很多问题,包括到现在为止还无法解决的问题。

一般来说是无法推送 .git 目录的,如果你使用的主题是直接使用git clone下来的,那么一定就会存在 .git 目录,这时我们可以在.gitignore文件内忽略此目录或者直接删除.git文件夹。由于我是直接删掉文件夹,所以另一种方式请大家自行尝试。

其实我最开始是想在公开仓库设置一个github action,在推送到公开仓库之后再由公开仓库的action推送到腾讯云 开发,但是不知道为何hexo deploy的时候无论如何都不会将 .github 文件夹推送上去,即使配置了 skip_render 和 include 也不行,但是我在本地hexo g的时候就可以在public目录生成 .github 文件夹,并且我在网页端公开仓库尝试创建action文件,可以推送成功,但是私有仓库推送之后action文件就会被覆盖,目前暂时无法解决这个问题。

所以只能妥协在同一个仓库进行构建推送,由于处理的文件较多,所以每次的部署都会给我发送一封构建失败的邮件,但它其实是已经部署成功了,我查找了很多的资料,目前暂未解决这个问题,如果您遇到这个问题并且具有解决办法,烦请您告知,非常感谢!

https://juejin.im/post/5da03d5e6fb9a04e046bc3a2

html 静态页面中引用外部页面没那么方便,主要方法有:

1.使用框架来实现,但是那样占用线程较多,速度慢;

<IFRAME width=100% height=30 marginwidth=0 marginheight=0 SRC="header.htm" ></IFRAME>

加上它的一些属性可以实现一些透明,无滚动条等具体的效果.大家可以html教程的相关介绍

2.使用. js脚本来实现

就是把相关的html文件转化为js文件.再在调用的时候用

<script src="import.js"></script>

或<script src="import.asp"></script>,此时import.asp中的内容必须使用js输入才行。

如果你用此方法来包含像头部,导航条的话,它将不利于搜索引擎的搜集。

另外,编写js输出的内容代码较凌乱,容易出错。

3.下面是一种实现方法:

最好能有一种方法,就像asp页面包含其他页面时那样,用一小段包含语句就可以实现,不要将需要包含的内容出现在本页面内,而是分割出去到另外一个自己的页面。

<span ><IE:Download STYLE="behavior:url(#default#download)" />

<script>

function onDownloadDone(downData){

showImport1.innerHTML=downData

}

oDownload1.startDownload('top.htm',onDownloadDone)

</script>

注:包含的页面为 top.htm 只要把需要包含的页面改掉就可以了!其中id=showimport 不能改为其他,这种写法为一次包含一个文件。

4.<object>个人觉得此法方便比较好

<object type="text/x-scriptlet" data="import.htm" width=100% height=30></object>

5.Behavior的download方式

<span

<IE:Download STYLE="behavior:url(#default#download)" />

<script>

function onDownloadDone(downDate){

showImport.innerHTML=downDate

}

oDownload.startDownload('import.htm',onDownloadDone)

</script>

6、HTML中执行SSL

存在这种情况,主机只默认的是index.html,但是需要首页是动态的,除了上述方法,可以使用SSL

[!--#exec cgi="index.pl" --]

1、在服务器上打开“服务器端包含”

2、把你的静态文件扩展名改成:shtml

3、在文件中添加<!--#include file="你要包含的文件" -->

一、动静均缓存

百度云加速更新后取消了简单的勾选配置,其实对于我们来说真的说是福利了,作为首批先锋测试团成员,下面我就简单给大家设置一下!很多朋友解析到百度云加速后就放一边了,结果速度依然蜗牛,没有感受到飞的快感,那么今天我就要带大家一起挖掘一下百度云加速真正隐藏属性。

其实,新版百度云加速需要自己自定义规则来开启缓存!下面简单分享下动态网站在百度云加速下开启高速缓存的自定义规则,如图点击可进入设置

同样的,根据前面的黑白名单规则,我们先定个调,一般网站应该是这样的情况:前台都缓存、后台不缓存、个别页面要缓存或不缓存。

先看下百度云加速自定义规则的说明:

提示说明:

规则自定义指对“指定URL”进行页面级规则定制(支持通配符*)。可对任意子域名、目录、甚至单个URL进行针对性的加速缓存、安全防护等配置。列表中上下关系决定优先级,靠上规则优先级高。站长可以通过点击“↑”调整优先级。新增规则优先级最低,将于30s内生效。

URL指定支持通配符*,例如

1) 对img.xiangta.cc进行特定设置,需增加URL: img.xiangta.cc/*

2) 对xiangta.cc/news/ 进行特定设置,需增加URL: xiangta.cc/news/*

3) 对xiangta.cc所有html页面进行特定设置,需增加URL: xiangta.cc/*.html

支持通配,这就简单了!不过免费版只支持3条规则,这个就需要你们合理斟酌一下了,不要看我可以设置10条,我是百度云加速测试者,永久享用10条顶级以及很多功能。

优先级从上往下依次降低,所以我们要保证不缓存的规则写到最上面,才能不会缓存规则覆盖。

根据我个人经验,一般网站设置如下3条规则即可:

①、网站后台:xiangta.cc/admin/* 设置为不缓存或细致缓存

②、前端分页:xiangta.cc/?page=* 设置为不缓存或细致缓存

③、网站前台:*xiangta.cc* 设置为前后通配都缓存,缓存一般为1天或者12小时,20小时,根据自己更新速度设置缓存

Ps:细致缓存其实就是只缓存静态文件,其中缓存时间或有效期请自行设定即可,无需按图照办。另外由于新版百度云加速现在不能对单个域名设置了,所以最后的缓存规则是前后通配,保证某些网站的二级静态域名也缓存到位。另外,这只是我个人经验推荐的配置,比如评论分页就可以根据自己的需要设置为其他页面,此处分享仅供参考!

这样设置好了之后,网站前台刷几下就可以看到效果了,当然还可以F12到network里面去看header的缓存命中情况,这就不赘述了。注意本人网站是动态网站。

二、只缓存静态

动静都缓存可以解决国内低配VPS的2个尴尬:带宽和负载。带宽问题,国内普遍小水管就不用我多说了吧。负载问题则是动态网站一直以来的诟病,刷新快一点,CPU就满了。

但是,有一些网站,本地已有缓存或者访问流量并不高,他们不想开启全站缓存,因为会带来的各种数据不刷新问题。因此,我们如何既解决速度问题,又兼顾实时数据呢?

当然,开启CDN不进行整站缓存设置的话,大部分CDN会默认缓存静态文件,基本满足以上需求。但是某些CDN有个坑爹的规则:他会和谐某些关键词,访问有这些关键词的页面就提示违规并不显示。

如何解决这个问题?很简单,通过域名做动静分离即可。

将静态链接替换为二级域名,并开启CDN缓存。主域名则不走CDN或走CDN但不开启缓存。

将静态链接替换为二级域名应该不用我多说了吧?

可当然我个人网站的文件都是分离的。

主域名不走CDN也很简单,直接在解析时不开启缓存即可,也就是直接回源:

如果担心暴露IP,如果是阿里云ECS,你还可以CNAME到阿里云的WAF上:

走CDN开启缓存和走CDN禁止缓存应该也不用我多说了,上文都有分享规则。

如上设置后,你的网站的速度也会很快,当然前提是你的动态部分不卡才行。如果网站还是比较卡,但是你有不想开启纯静态导致数据不刷新,那么

①、如果是独立主机,可以考虑开启redis或opcache等php动态缓存

②、如果是虚拟主机,可以安装 DB Cache Reloaded Fix这类数据缓存插件

当然,如果你觉得还是不够快,那么心系与她一样,开启Nginx的fastcgi缓存!

在这里我推荐一下文件分流存储服务商,又拍云价格便宜而且效果很明显,节点我就不多说了,自己ping一下就知道了,配合着百度云加速,分分钟让你网站秒杀市面上20M带宽的VPS。

三、总结下区别

方案一 和 方案二 到底有什么区别呢?

方案一:是将动态和静态都强制缓存到CDN,这样就算本地不开启任何缓存,用户的访问速度也是杠杠的。如果想要给搜索引擎蜘蛛一样的速度,那么本地最好也开启一下静态缓存。

方案二:则是只缓存静态数据,动态数据依然请求到源服务器。这样做的好处是既解决了带宽尴尬,又解决了前台数据不能实时刷新的问题。因为占带宽的主要是静态文件,而非html代码。我们将大体积的静态文件托管到CDN加速,源服务器就只要负担体积很小的html代码流量了,速度自然就快了,如果觉得还是不够快那你就选择配合使用分布储存


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/361803.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-11
下一篇2023-05-11

发表评论

登录后才能评论

评论列表(0条)

    保存