2、hexo使用githubaction自动部署至腾讯云开发静态网站托管服务以及githubpages
搞懂自定义域名
上次写了一篇给GihubPages添加自定义域名的文章,之后感觉写得还是偏实践多一点,只做到了受人以鱼。
为了让大家在别的场景下也能搞定自定义域名,比如腾讯云网页部署、Heroku自定义域名、自定义CDN域名。,今天就来写篇更通用的文章来总结一下自定义域名那些事。
如果我们要访问一台电脑上的资源,一般是需要通过IP地址来进行访问的。比如电脑上跑了一个ReactApp,那么在电脑的就可以访问本机的页面
假如电脑IP地址为192.168.1.10,而且手机和电脑都连上同一个Wifi,那么在手机上输入也可以访问到这个网页。
当我们访问服务器上的文件(html,js,css等),其实本质上也是访问远端的一台电脑,也需要通过IP地址来访问。这就导致一个问题了:没人能记得住这串数字。
既然记不住就起个名字喽。这就是域名的由来,也就是像下面这样Map。
但是等我们给这个IP起了新名字之后怎么告诉别人呢?所以,得有一个超大日记本记录上面这些Map关系:
DNS(DomainNameSystem)服务器就是帮我们记录并解析上面这些关系。这也就是为什么面试题“输入URL之后会发生什么”里会有一步是要到DNS服务器解析IP地址,好让我们访问到正确的服务器资源。
当然,DNS解析服务并不单单只有域名–IP地址一个功能,还能解析邮件服务器、CNAME配置等。下面我就直接结合腾讯云的DNSPod的解析规则来说明吧。
上面一直在说的域名–IP地址这样的Map记录叫做A记录,也即ActiveRecord。是最最最常见的域名解析。
比如我们买了个服务器,一般都会有公网的IP地址,我们只需要添加一条A记录,把域名指向自己服务器的IP地址就好了。
另一个常见的例子就是GithubPages自定义域名其中的一种配置:添加4条A记录,分别指向下面的IP地址:
CNAME就是域名的昵称,可能理解为IP的昵称(域名)的昵称(CNAME)就是CNAME。其实我们平常更多接触到的并不是A记录,而是CNAME记录,常见于一些部署平台上。
当部署你的个人网页时,这些部署网站都会自动给你一个非常Low的域名,比如GithubPages的haixiangyan.github.io,或者Heroku的haixiangyan.heroku.app,再或者腾讯云的“乱码”域名thedemo-9gf4vat5207cf224-1253834571.ap-shanghai.app.tcloudbase.com。
只要我们有了自己的域名,在DNS上添加一条CNAME记录,指向上面这些第三方服务商自动自成的域名,那么就能通过我们的域名直接访问第三方服务平台上的资源了。
另外一个常见的场景就是CDN服务器,如果在腾讯云上买了一个CDN服务器,它也会提供一个“不那么乱码”域名,比如我的个人网站就是。同理,在DNS添加一条CNAME记录指向CDN提供的域名就能访问CDN上的资源了。
这个TXT记录,目前我使用到的场景是域名验证操作:当腾讯云要验证这个域名是否是合法/激活的,那么需要你在DNSPod上添加一条TXT记录,记录值腾讯云会提供给你。
添加了之后,腾讯云就会查看这条TXT记录值是否正确,从而验证域名是否合法。
上面的A记录填写都是针对IPv4的IP地址,也是最最最常见的IP地址。计算机发展到现在,有些已经用上了IPv6了,所以AAAA记录就是用来解析成对应的IPv6地址的,不过目前用的很少。
NS也就是NameServer。还记得上面说到的DNS么?NS可以理解为DNS服务器。
一般域名服务商都会有自己的NS,并且都默认使用自己的NS来解析域名。如果你不想用当前这个域名服务商的NS来解析域名,也可以换成别家的。
除非有特别需求,NS记录使用场景非常少。
设置邮箱的记录。没怎么用过,不评价。
我们一般接触到的就是上面这些记录,腾讯云还提供了别的记录类型:
注意,上面像“显性URL”、“隐性URL”可能在别的域名服务器是没有的,比如namesilo.com这个便宜货。
讲真,国内的云服务真的做的比国外好太多了,很多功能都很实用,强烈推荐大家使用国内的云。
了解了DNS解析记录还不够,还得了解域名的分级。
比如,顶级为com,二级为baidu,三级为www。当在我们购买域名时,买的就是顶级+二级域名,直接把顶级和二级域名锁死了。
当添加域名解析记录时,可以在主机记录这个字段里指定第三级的域名:
图里由上到下配置得到的域名完全体为:
后面两个只是腾讯云给你的示例而已,就不举例了。
子级的好处就在于可以不用上线一个网站就买一个对应域名,太费钱了~比如我之前买了yanhaixiang.cn这个域名,当要用这一个域名分别指向国内腾讯云上的个人网站,以及Github提供的GithubPages,在添加两条记录之后:
就可以在访问国内的腾讯云个人网站,在则访问GithubPages的个人网站,非常悠亚。
国内:腾讯云、阿里云、华为云等都不错。国外:NameSilo、GoDaddy、AWS等。
个人推荐在国内买,原因是国内的云服务商功能非常齐全,而且服务之间关联度非常高,可以说有了国内域名走遍天下都不怕,没有国内域名啥都捉襟见肘。
顶级域名中有一些是比较敏感的,比如.law,这种就只能由专业机构来注册:
如果实在想要.com这种牛逼的顶级域名,可以试着买带–的二级域名,比如我之前就买了一个easy-refer.com的域名,19刀/年。
二级域名允许有–的原因是为了解决名字的混淆问题,比如你的公司叫WhoRepresents,然后你注册了一个whorepresents.com的网站,由于域名是不区分大小写的,很容易被误解为WhorePresents,变成了妓女的礼物。除了这个,还有ExpertsExchange的expertsexchange.com被理解成ExpertSexChange,当场社死。
加了一个–连字符可以更好地“分词”,不被别人误解网站内容。
二级域名除了英文还能选择中文的,比如《爱情公寓》里的www.张伟是混蛋.com:
不开玩笑,这个网站也是能正常访问的,里面的内容都是和《爱情公寓》有关的内容。最旧的贴子是2011年,这个网站大概也是那个时候上线的吧,不知不觉已经过了10年了呢~
由于域名的“唯一性”,在当年,注册了一个好的域名比建一个好看的网站更值钱,比如apple.com,baidu.com等。这也导致出现了一些投机分子:一出手就买一堆域名,然后等公司上门收购域名。
只有国内的服务商需要做域名备案,也算是中国特色。最近我备案了3个域名,每个域名备案大概需要1个月的时间来备案。备案也不仅仅填几个表格就完事了,还是挺多地方要注意的。
按照国内相关法律,域名备案前必需要有一台租期大于3个月的服务器。而国内一些云厂商为了能绑定销售,一般都要你买自家的服务器。
当然,只要有一台上面的服务器,在期间内可以给多个域名进行备案。
还有一点域名之间不能同时备案,一时间只能备案一个。所以如果你有多个域名要备案,要挑最紧急的那个来备案哦~
给你的网站起名是非常困难的一件事,我经常被打回,如果你做的是个人网站推荐使用“个人项目展示”这个名字,“个人网站”是黑名单中的名字。
紧急联系人电话最好别瞎填,有的时候备案那边的人会抽查这个电话,如果这个紧急联系人电话打不通,接不了,那么你还得更换,更换本质上是又要有一遍备案流程,所以最好一开始就弄好这个,别问我是怎么知道的。
现在备案需要签署一份类似“合同”之类的文件,需要用到红色印泥,这个在打印室就有(当时我差点在网上买了一个)。
就算备案有问题,工作人员几乎1天就打电话过来让你改正的,所以不用太慌~
hexo使用githubaction自动部署至腾讯云开发静态网站托管服务以及githubpages
谈及静态网站的好处,无非是快速轻量,甚至无需购买服务器,使用githubpages或者coding等托管即可实现。同时,jsdelivr可对github公开仓库的静态资源进行加速,并且自带全球cdn,快速,并且完全免费。
近期,我的博客网站也迁移到了hexo,并托管在githubpages,由于之前申请过腾讯云开发的9.9元静态网站托管服务,本着不用白不用的原则,我把国内的线路以及博客生成的页面都放在了腾讯云开发静态网站托管服务上。
首先在本地安装hexo环境,配置好主题以及自定义的配置,然后将整个hexo目录推送到github私有仓库。私有仓库在接受到push之后,使用githubaction进行hexog和hexodeploy,将生成的静态文件推送到另一个以用户名.github.io为名称的仓库。
如你所见,我们需要使用两个github仓库来构建我们的个人博客,其中私有仓库(我们可以将名称设置为blog-source)作为博客源文件保存目录,包含所有的hexo配置文件以及我们的主题文件。
这样的好处就是,我们可以完整保留hexo的目录,不用担心文件丢失的问题,还有就是我们可以直接在github网页端直接进行文章的写作,并且支持原生的githubmarkdown格式。
在我们commit之后githubaction会自动帮我们构建以及发布,我们只需要安心写作即可。
这一步可以根据hexo官方文档来进行配置。
一个是私有的仓库,用来存放hexo所有的源文件,另一个是公开的以用户名.github.io的仓库。
使用ssh-keygen生成一组公私秘钥对
在Settings–SSHandGPGkeys添加刚刚生成的公钥,名称随意。
在私有仓库的Settings–Secrets里添加刚刚生成的私钥,名称为ACTION_DEPLOY_KEY。
在hexo目录创建.github文件夹,并在里面创建workflows文件夹,然后在里面新建blog.yml
贴出我的GitHubaction配置文件,后面再进行讲解。
其中,在31至38行内,可以添加自己所使用的hexo插件,如果本地测试的时候使用了此插件,一定要记得将那个插件的npm安装命令写在那里。
云开发Cloudbase提供了可直接使用的action:
在腾讯云开发控制台获取token:
然后在项目Setting/Secrets里设置SECRET_ID,SECRET_KEY,ENV_ID信息
根据文档做出修改然后添加在blog.yml后面
同时,目前我也遇到很多问题,包括到现在为止还无法解决的问题。
一般来说是无法推送.git目录的,如果你使用的主题是直接使用gitclone下来的,那么一定就会存在.git目录,这时我们可以在.gitignore文件内忽略此目录或者直接删除.git文件夹。由于我是直接删掉文件夹,所以另一种方式请大家自行尝试。
其实我最开始是想在公开仓库设置一个githubaction,在推送到公开仓库之后再由公开仓库的action推送到腾讯云开发,但是不知道为何hexodeploy的时候无论如何都不会将.github文件夹推送上去,即使配置了skip_render和include也不行,但是我在本地hexog的时候就可以在public目录生成.github文件夹,并且我在网页端公开仓库尝试创建action文件,可以推送成功,但是私有仓库推送之后action文件就会被覆盖,目前暂时无法解决这个问题。
所以只能妥协在同一个仓库进行构建推送,由于处理的文件较多,所以每次的部署都会给我发送一封构建失败的邮件,但它其实是已经部署成功了,我查找了很多的资料,目前暂未解决这个问题,如果您遇到这个问题并且具有解决办法,烦请您告知,非常感谢!
【腾讯云cloudbase】的内容来源于互联网,如引用不当,请联系我们修改。
本文来源:腾讯云--腾讯云cloudlite认证含金量(腾讯云实名认证)
本文地址:https://www.idcbaba.com/tencentcloud/1213.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。