利用Hexo和github搭建博客(2)
增加hexo的安全性
将用来多地同步的公开hexo分支转移到github私有库
- 在github上新建私有库
- 在本机中原有的文件夹运行以下命令
git remote set-url origin git@github.com:GreenLeavesl/hexo_blog.git
git push -u origin main - 删除之前创建的公有库hexo分支
国内coding搭建hexo
因为gitee在整改,新用户无法使用page,所以改用coding
- 注册
https://coding.net - coding创建项目
coding创建一个公开仓库,仓库名为:用户名。
获取ssh地址
[email protected]:greenleavesl/greenleavesl/greenleavesl.git
修改_config.yml配置
部署公钥
- coding 使用 Pages服务
点击左侧导航栏项目设置,在项目与成员->功能开关中打开构建与部属功能
返回项目中,可看到左侧导航栏新增“构建与部署”
域名和cdn加速
域名
1、购买域名
可以到freenom网站,使用免费域名(免费域名被他人购买风险)
https://zhuanlan.zhihu.com/p/115535965
或注册pp.ua、eu.org、js.org等免费的二级域名
pp.ua申请教程
https://v2xtls.org/%E5%85%8D%E8%B4%B9%E4%BA%8C%E7%BA%A7%E5%9F%9F%E5%90%8Dpp-ua%E7%94%B3%E8%AF%B7%E6%95%99%E7%A8%8B/
eu.org申请教程
https://www.cnblogs.com/Sky-seeker/p/14253687.html
在namesilo购买一个便宜的域名
注册和激活账户
https://www.namesilo.com/login
密码规则为至少一个大写字母,一个小写字母,一个特殊符号和一个数字
https://www.namesilo.com/account_profile.php
然后再到邮箱内确认
查找需要的域名
https://www.namesilo.com/domain/search-domains?query=
点击add然后checkout
来到支付界面选微信支付
支付宝支付需要填写支付宝绑定的邮箱
退款参考https://www.vjsun.com/129.html
在 DNS 设置部分,删除自带的记录,然后添加 CNAME 记录和A记录将 www 域名和根域名解析指向 用户名.github.io
在设置前,首先把自带的几条默认记录全部删除(DELETE)
- 绑定域名到 Hexo 博客
然后打开你的github博客项目,点击settings,拉到下面Custom domain处,填上你自己的域名,保存:
这时候你的项目根目录应该会出现一个名为CNAME的文件了。如果没有的话,打开你本地博客/source目录,新建CNAME文件,注意没有后缀。然后在里面写上你的域名,保存。最后运行hexo g、hexo d上传到github。
配置自己的域名后,需要我们手动开启 HTTPS。打开博客所在 GitHub 仓库,Settings -> 下拉找到 GitHub Pages -> 勾选 Enforce HTTPS。
- CloudFlare CDN 配置
先通过 https://dash.cloudflare.com/sign-up 链接进行注册,然后添加站点(注意是填写域名),提交之后会自动扫描域名对应的解析记录,下一步就是激活了:通过域名的运营商修改对应的 NS 记录
cloudflare的dns配置应与dns的a记录配置和cname记录一致,否则github page会报域名错误
将两个cloudflare ns写上去
将cloudflare的选项全开
这样就设置完毕了,等一段时间再用命令行验证一下:
dig 15651.xyz +noall +answer
然后清除下浏览器 DNS 缓存,chrome 浏览器输入chrome://net-internals/#dns 进入清除页:
再次访问域名,F12 打开网络面板可以看到已经用上了 CDN 了:
网站SEO
百度收录站点
验证网站所有权
登录百度站长搜索资源平台:http://zhanzhang.baidu.com, 只要有百度旗下的账号就可以登录,登录成功之后在站点管理中点击添加网站然后输入你的站点地址。
补充:github是不允许百度的spider爬取github上的内容
在填完网址选择完网站的类型之后需要验证网站的所有权,验证网站所有权的方式有三种:
- 文件验证。
- html标签验证
- CNAME解析验证(推荐使用)
生成网站地图
我们需要使用npm自动生成网站的sitemap,然后将生成的sitemap提交到百度和其他搜索引擎
安装sitemap插件
npm install hexo-generator-sitemap --save
npm install hexo-generator-baidu-sitemap --save修改博客配置文件
在根目录配置文件.yml中修改url为你的站点地址
vim _config.yml |
执行完hexo g命令之后就会在网站根目录生成sitemap.xml文件和baidusitemap.xml文件,可以通过:https://域名.com/baidusitemap.xml, 查看该文件是否生成,其中sitemap.xml文件是搜索引擎通用的文件,baidusitemap.xml是百度专用的sitemap文件。
- 向百度提交链接
然后我们就可以将我们生成的sitemap文件提交给百度,还是在百度站长平台,找到链接提交,这里我们可以看到有两种提交方式,自动提交和手动提交,自动提交又分为主动推送、自动推送和sitemap
如何选择链接提交方式
- 主动推送:最为快速的提交方式,推荐您将站点当天新产出链接立即通过此方式推送给百度,以保证新链接可以及时被百度收录。
- 自动推送:最为便捷的提交方式,请将自动推送的JS代码部署在站点的每一个页面源代码中,部署代码的页面在每次被浏览时,链接会被自动推送给百度。可以与主动推送配合使用。
- sitemap:您可以定期将网站链接放到sitemap中,然后将sitemap提交给百度。百度会周期性的抓取检查您提交的sitemap,对其中的链接进行处理,但收录速度慢于主动推送。
- 手动提交:一次性提交链接给百度,可以使用此种方式。
一般主动提交比手动提交效果好,这里介绍主动提交的三种方法
从效率上来说:
主动推送>自动推送>sitemap
- 设置主动推送
安装插件hexo-baidu-url-submit
npm install hexo-baidu-url-submit --save
然后再根目录的配置文件中新增字段
baidu_url_submit: |
再加入新的deploy:
deploy: |
这样执行hexo deploy的时候,新的链接就会被推送了。
- 设置自动推送
在主题配置文件下设置,将baidu_push设置为true:
# Enable baidu push so that the blog will push the url to baidu automatically which is very helpful for SEO |
然后主题文件目录加入下面代码,一般在目录/themes/matery/layout/_partial中的head.ejs中加入下面JS代码
<% if (theme.baidu_push) { %> |
这样每次访问博客中的页面就会自动向百度提交sitemap
- sitemap方式
将我们上一步生成的sitemap文件提交到百度就可以了~
让google收录站点
google站点平台:https://www.google.com/webmasters/
- 注册账号
- 验证站点
- 提交sitemap
向 google 添加 sitemap 后: 进入 Google Search Console - 抓取 - 站点地图,点击「添加/测试站点地图」,输入你的博客网址. 若无报错则站点地图提交成功
html验证
下载google697d4285479e12db.html
本地文件夹打开,将这个文件放在你的blog目录\sources目录下,当然,这样还没完,如果直接放在sources目录就执行编译,你编译后只会得到一个这样的经过编译后的文件,Google会报错
所以需要改动一下google697d4285479e12db.html
layout: false |
dns验证
提交 robots.txt:
robots.txt 是一种存放于网站根目录下的 ASCII 编码的文本文件,它的作用是告诉搜索引擎此网站中哪些内容是可以被爬取的,哪些是禁止爬取的。robots.txt 放在博客目录下的 source 文件夹中,博客生成后在站点目录 /public/ 下。
User-agent: * |
robots.txt 文件更新至网站后可进入 Google Search Console - 抓取 - robots.txt 测试工具进行测试。
正则修改小脚本
由于本人使用joplin,导出md的图片则有笔记本自动生成的一串英文名字加地址。
而在本地上传后会显示出来,因此用脚本批量修改为空
python脚本
import os,re |
参考:https://sunhwee.com/posts/6e8839eb.html#toc-heading-45
https://blog.csdn.net/q275343119/article/details/82765248
https://www.cnblogs.com/wc-chan/p/8085452.html
https://www.cnblogs.com/guixinchn/p/13549768.html
https://liuruibin.com/posts/64eb.html