建站记录
建这个网站的初衷是因为自己知乎被连续封了几次, 以至于让我对这类非可控的平台产生了大量不信任感, 再加之我个人的知乎账号掺杂了大量的非技术相关内容, 所以尽管我在知乎也写了一些技术文章, 但仍并不方便将来贴在简历上.
总总原因驱使下, 在综合考量了云服务器+Wordpress和GitHubPages+Hexo两种方案后, 我还是选择了更为轻便的后者, 毕竟对我而言只是需要一个发布文章与随想的、完全可控的平台罢了, 没必要去折腾什么服务器.
技术选型到此为止, 剩下的便是具体实现了. 这篇文章便是用来记录我的建站流程以及踩到的一些小坑.
顺便一提, 这个网站就叫作SnowyLakeSide好了, 中文名雪之湖畔, 一个独属于我(SnowyLake/雪湖)、面向互联网的小小浅滩.
Github Pages创建
这一步非常简单, 其实本质就是创建一个名为 snowylake.github.io 的repo, 只是要求前缀与github用户名相同. 创建之后实际上我们就已经可以通过repo名访问网站了, 但应该是空空如也的.
然后就可以暂时放在这里不管了, 甚至都不需要clone到本地.
应用Hexo框架本地搭建部署环境
Hexo是一个基于Github Pages的博客发布工具, 支持Markdown, 功能简洁而强大, 生态繁荣插件众多, 久经验证, 是基于Github Pages建站的不二之选.
安装与初始化
在安装Hexo之前, 还是需要先装一个Node.js才行: https://nodejs.org/zh-cn/download
装好之后进入命令行安装Hexo:
1 | npm install -g hexo |
本地创建一个文件夹用来部署Hexo和存放网站内容, cd进去初始化Hexo:
1 | cd D:/Workspace/Blog |
初始化之后的文件结构大概是这样的:(下图已经是生成完毕后的工程目录了)
几个比较重要的部分:
- .deploy_git: 最终生成的github repo
- node_modules: 通过npm安装的各种包
- public: 生成的网页文件夹
- scaffolds: 创建新博客用的模板
- source: 网站实际内容, 以md的格式保存, 通过这个文件夹去生成public
- _config.yml: Hexo的配置文件, 各种设置都需要在这里开启
生成与推送
第一次初始化的时候hexo已经帮我们写了一篇名为Hello World的文章, 不过这里还是尝试自己创建一篇.
首先在_config文件中配置网站的基础内容:
1 | # Site |
在开始正式创建网页时, 还需要装两个包:
1 | $ npm install hexo-renderer-marked --save |
以及在_config页面修改/添加:
1 | # Writing |
这部分修改可以使创建博客时自动创建同名文件夹用于存放图片, 并可以通过以下形式在本地和网页中正常引用图片:
同时, 如果md编辑器是VSCode的话, 还需进行如下设置, 保证向文本中copy图片可以直接保存到同名文件夹下:
准备工作完成后, 就可通过此命令创建博客了, 命令将在Blog/source/_post下创建HelloWorld.md文件和同名文件夹.
1 | hexo new "HelloWorld" |
之后就可以进行第一次的生成与推送:
1 | hexo g |
常用Hexo命令:
1 | 生成public文件夹 |
Next主题配置
安装与配置Next
1 | cd D:/Workspace/Blog |
在Hexo目录下的_config.yml(hexo config)中添加配置:
切换主题:
添加博客头像、背景与透明
将博客头像保存在在Blog/themes/next/source/uploads下, 然后在themes/next目录下的_config.yml(主题config)中配置:
将网站的背景图片保存在Blog/source/images下;
在Blog/source下新建文件夹_data, 并创建文件styles.styl:
1 | //背景图片设置 |
在主题的config中配置该styl文件:
添加菜单
在主题的config中取消相应菜单的注释:
使用hexo new page命令创建对应的菜单, 之后hexo g重新生成即可.
修改侧边栏宽度
主题config中修改width数值.
添加社交网站链接
添加搜索功能
Blog根目录下命令行安装插件:
1 | npm install hexo-generator-searchdb --save |
主题config中设置:
hexo的config中添加配置:
之后重新生成.
添加文章字数与阅读时长统计
Blog根目录下命令行安装插件:
1 | npm install hexo-symbols-count-time --save |
hexo的config中添加设置:
主题的config中设置:
之后重新生成.
添加网站观看人数统计
主题config中设置.
添加网站图标
将网站图标保存到Blog/themes/next/source/uploads下, 在主题config中设置.
添加文末版权声明
主题config中设置.
默认展开目录
主题config中设置.
博客写作功能
声明文章摘要
在想要截止的地方添加<!--more-->标记即可, 标记之上的内容便是文章的摘要.
方便起见可以将这个标记加入到文章模板中去.
配置自定义模板
每次新建的文章模板被保存在Blog/scaffolds下, post就是’hexo new’命令创建博客时使用的模板.
根据需求自定义即可, 我这里添加了tag和category, 以及每篇文章都要用到的摘要标签.
文章分类与标签
详细规则参考:
https://hexo.io/zh-cn/docs/front-matter
自定义域名
这里我是通过 www.dynadot.com 购买的域名.
首先要对域名进行dns解析, 为了白嫖Github提供的https证书, 这里需要填上四个A作为主域名连接到github提供的ip地址上, 同时用CNAME把www的子域名也给解析了.
之后在source文件夹下创建一个CNAME文件, 注意不要加文件扩展名, 在里面输入要自定义的域名, 比如我的就是 snowylake.net :
之后执行hexo d -g, 生成并提交.
进入github repo页面, 点击setting找到pages, 将域名输入到Custom domain中, 点击save.
同时github还将自动为你的域名申请https证书, 等待片刻后即可勾选Enforce HTTPS.
搜索引擎索引
添加索引
需要为搜索引擎添加索引, 才能让网站被各大搜索引擎所收录.
登录https://search.google.com/search-console, 输入网站地址, 选择HTML验证.
将下载的HTML文件拷贝到source文件夹, hexo g, 之后再进入public文件夹, 这时public文件夹中生成的HTML文件是错误的, 需要手动将source文件夹中正确的内容拷过去, 之后再执行hexo d即可通过验证.
Bing端的索引信息在Google完成后可以同步过来, 不需要重复操作.
生成网站地图
Blog根目录下执行命令:
1 | npm install hexo-generator-sitemap --save |
之后每次生成都会生成新的sitemap.
Reference
https://www.lfzxb.top/the-record-of-build-site-based-on-hexo/
https://www.cnblogs.com/liuxianan/p/build-blog-website-by-hexo-github.html
https://zhuanlan.zhihu.com/p/618864711
