利用Hexo和github搭建博客(2)


利用Hexo和github搭建博客(2)

增加hexo的安全性

将用来多地同步的公开hexo分支转移到github私有库

  1. 在github上新建私有库
  1. 在本机中原有的文件夹运行以下命令
    git remote set-url origin git@github.com:GreenLeavesl/hexo_blog.git
    git push -u origin main
  2. 删除之前创建的公有库hexo分支

国内coding搭建hexo

因为gitee在整改,新用户无法使用page,所以改用coding

  1. 注册
    https://coding.net
  2. coding创建项目
    coding创建一个公开仓库,仓库名为:用户名。

    获取ssh地址
    [email protected]:greenleavesl/greenleavesl/greenleavesl.git

修改_config.yml配置

部署公钥

  1. 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)

  1. 绑定域名到 Hexo 博客
    然后打开你的github博客项目,点击settings,拉到下面Custom domain处,填上你自己的域名,保存:

这时候你的项目根目录应该会出现一个名为CNAME的文件了。如果没有的话,打开你本地博客/source目录,新建CNAME文件,注意没有后缀。然后在里面写上你的域名,保存。最后运行hexo g、hexo d上传到github。

配置自己的域名后,需要我们手动开启 HTTPS。打开博客所在 GitHub 仓库,Settings -> 下拉找到 GitHub Pages -> 勾选 Enforce HTTPS。

  1. 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提交到百度和其他搜索引擎

  1. 安装sitemap插件

    npm install hexo-generator-sitemap --save     
    npm install hexo-generator-baidu-sitemap --save
  2. 修改博客配置文件
    在根目录配置文件.yml中修改url为你的站点地址

vim _config.yml
# 自动生成sitemap
sitemap:
path: sitemap.xml
baidusitemap:
path: baidusitemap.xml

执行完hexo g命令之后就会在网站根目录生成sitemap.xml文件和baidusitemap.xml文件,可以通过:https://域名.com/baidusitemap.xml, 查看该文件是否生成,其中sitemap.xml文件是搜索引擎通用的文件,baidusitemap.xml是百度专用的sitemap文件。

  1. 向百度提交链接
    然后我们就可以将我们生成的sitemap文件提交给百度,还是在百度站长平台,找到链接提交,这里我们可以看到有两种提交方式,自动提交和手动提交,自动提交又分为主动推送、自动推送和sitemap

如何选择链接提交方式

  1. 主动推送:最为快速的提交方式,推荐您将站点当天新产出链接立即通过此方式推送给百度,以保证新链接可以及时被百度收录。
  2. 自动推送:最为便捷的提交方式,请将自动推送的JS代码部署在站点的每一个页面源代码中,部署代码的页面在每次被浏览时,链接会被自动推送给百度。可以与主动推送配合使用。
  3. sitemap:您可以定期将网站链接放到sitemap中,然后将sitemap提交给百度。百度会周期性的抓取检查您提交的sitemap,对其中的链接进行处理,但收录速度慢于主动推送。
  4. 手动提交:一次性提交链接给百度,可以使用此种方式。
    一般主动提交比手动提交效果好,这里介绍主动提交的三种方法

从效率上来说:

主动推送>自动推送>sitemap

  1. 设置主动推送
    安装插件hexo-baidu-url-submit

npm install hexo-baidu-url-submit --save

然后再根目录的配置文件中新增字段

baidu_url_submit:
count: 80 # 提交最新的一个链接
host: www.域名.com # 在百度站长平台中注册的域名
token: xxxxxxxxxxxxxx # 请注意这是您的秘钥, 所以请不要把博客源代码发布在公众仓库里!
path: baidu_urls.txt # 文本文档的地址, 新链接会保存在此文本文档里

再加入新的deploy:

deploy:
- type: baidu_url_submitter

这样执行hexo deploy的时候,新的链接就会被推送了。

  1. 设置自动推送
    在主题配置文件下设置,将baidu_push设置为true:
# Enable baidu push so that the blog will push the url to baidu automatically which is very helpful for SEO
baidu_push: true

然后主题文件目录加入下面代码,一般在目录/themes/matery/layout/_partial中的head.ejs中加入下面JS代码

<% if (theme.baidu_push) { %> 
<script>
(function(){
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https') {
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else {
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script>
<% } %>

这样每次访问博客中的页面就会自动向百度提交sitemap

  1. 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
---
google-site-verification: google697d4285479e12db.html

dns验证

提交 robots.txt:

robots.txt 是一种存放于网站根目录下的 ASCII 编码的文本文件,它的作用是告诉搜索引擎此网站中哪些内容是可以被爬取的,哪些是禁止爬取的。robots.txt 放在博客目录下的 source 文件夹中,博客生成后在站点目录 /public/ 下。

User-agent: * 
Allow: /
Allow: /archives/
Allow: /categories/
Allow: /about/
Disallow: /js/
Disallow: /css/
Disallow: /fonts/
Disallow: /vendors/

robots.txt 文件更新至网站后可进入 Google Search Console - 抓取 - robots.txt 测试工具进行测试。

正则修改小脚本

由于本人使用joplin,导出md的图片则有笔记本自动生成的一串英文名字加地址。
而在本地上传后会显示出来,因此用脚本批量修改为空
python脚本

import os,re
path =r'D:\OneDrive\Desktop\exchange/' #自己文件的路径
file_list = os.listdir(path)
print(file_list)
for i in file_list:
name_suffix = re.search(r'.*?(\.md)$',i)#取md后缀
if name_suffix:
print(i)
with open(path+i,'r',encoding="utf-8") as f1,open(path+"%s.bak" % i, "w", encoding="utf-8") as f2:
for line in f1:
f2.write(re.sub(r'^!\[.*\]','![]',line))
os.remove(path+i)
os.rename(path+"%s.bak" % i,path+i)

参考: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


文章作者: leaves
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 leaves !
  目录