摘要:介绍本博客的搭建过程及总结,用 MarkDown 写博客,Git + GitHub 进行版本控制和备份 md 源文件,Hexo / Jekyll 生成网页并部署到免费的Github Pages仓库。
用
cd ./_posts jekyll serve命令生成静态网页,并通过 Github Desktop 一起上传到 gh-pages。
目录
[TOC]
技术栈
-
GitHub Pages 仓库:
-
Hexo 博客框架:mater 分支作为服务器,hexo 分支作为代码托管仓库进行版本控制;可将 MarkDown 文件生成网页,并用 Git 发布到仓库的 mater 分支。缺点:需要手动生成网页、发布过程复杂、切换分支。 -
Jekyll(音 J call):GitHub Pages 官方使用入门文档,推荐,可创建博客网站或者已有项目的doc静态网站。
-
-
Git:版本控制
-
GitHub Desktop:项目管理,同步Github
-
Typora: MarkDown 编辑器
-
阿里云域名解析
搭建 GitHub Pages 仓库
注册 GitHub 账号
创建 GitHub 项目
- 项目名:
[username].github.io(替换为自己的用户名,注意是用户名不是昵称); - 勾选初始化
README.md,默认自动创建master分支,此分支作为服务器; - 类型选择
public。
分支策略
- Jekyll:创建
gh-pages分支,博客发布于此分支; Hexo:创建 hexo 分支来备份源文件,设置为默认分支。
将项目设置为 GitHub Pages 仓库
每个用户可创建一个 GitHub Pages 仓库,用户可以通过访问 [username].github.io 访问此项目
- 设置Source:
- branch选择
gh-pages,None表示不发布。 - folder选择root,doc表示使用此分支的docs文件夹作为站点内容。
- branch选择
- 在项目设置中设置私有域名(Custom domain,可选,若不设置则博客网址默认为
[username].github.io),会在项目中自动创建一个CNAME保存此域名,添加完成后等待 DNS 解析的生效,解析记录生效到全球可能需要几分钟时间。 - 选择主题(可在后面设置个性化主题,可选)。
- 勾选
Enforce HTTPS(强制使用 https,可选)。
搭建本地环境
本地安装 Node.js
直接下载安装,一路下一步,建议安装在非系统盘。
一般安装包会默认勾选Add to PATH选项,可以不再单独配置系统环境变量。
1 | |
安装 Git
听说有墙下载慢,可以试试迅雷或者梯子代理
直接安装,可以右键 -> Git Bash Here 查看 Git 命令行
1 | |
设置 SSH 连接到 GitHub
用于本地和 GitHub 通信
- 设置用户名、邮箱:注意用户名不是昵称。
1 | |
- 生成 SSH 秘钥
1 | |
- 复制 SSH key 秘钥
1 | |
- 在 GitHub
头像->Settings->SSH and GPG keys->New SSH key中添加 SSH key 密钥。这是本地主机和 GitHub 相互识别的标志 - 测试
1 | |
安装 GitHub Desktop
GitHub 的桌面端,比 GIt Bash 这种命令行操作简便
用 GitHub Desktop 将项目克隆到本地博客目录
- 此时分支应为 hexo 或 gh-pages;
- 本地博客目录地址如
D:\username.github.io,克隆时可对目录起别名,如D:\Blog。
用 Jekyll 搭建博客
Windows 下安装 Jekyll
安装 Ruby with DevKit
1 | |
安装 bundler
1 | |
安装 Jekyll
1 | |
用 Jekyll 生成站点
1 | |
Windows 下可能还会遇到一个 timezone 的问题,可以参考 这个答案,在 Gemfile 中添加 gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw] (有 64 位区分,具体看原文), 然后执行 gem install tzinfo-data。
MAC 下配置
MAC 下由于内置 Ruby 省去了第一步的安装,其余不变。
Jekyll 结构
站点中内容的主要类型是页面和帖子,主题包括默认布局、包含和样式表,它们将自动应用到站点上的新页面和帖子。
_posts博客内容_pages其他需要生成的网页,如About页。_layouts:网页排版模,存放页面模板,md或html文件的内容会填充模板。_includes被模板包含的HTML片段,可在_config.yml中修改位置。可以复用在其它页面被include的html页面。assets:原生的资源文件,辅助资源、css布局、js脚本、图片等。_data动态数据_sites最终生成的静态网页_config.yml:全局配置文件,网站的一些配置信息-
index.html, index.md, README.md:网站的入口,首页index.html优先级最高,如果没有index,默认启用README.md文件。 _sass(存放样式表)- 自定义文件和目录
1 | |
Windows下安装 jekyll-theme-next
确保已安装Ruby 2.1.0 - 2.6版本:
1 | |
安装Bundler:
1 | |
下载 NexT 主题,此时不用在本地手动创建 Jekyll 项目:
1 | |
安装依赖:
1 | |
运行 Jekyll:
1 | |
如何使用
添加新页面
页面:是指与某个特定日期没有关联的独立内容,例如默认 的
about.md文件对应/about页面。
添加新博客
帖子是博客文章。 默认包含
_posts目录,其中的文件对应博客。
Jekyll 的模板编程语言 Liquid
- 变量 `` 被嵌入在页面中,会在静态页面生成的时候被替换成具体的数值。常用的全局变量对象有:
site对象:对应的是网站范围,自定义变量放在_config.yml中,比如title:自定义标题使用故纸留香访问,2025-10-30 16:00:28 +0000等;page对象:对应的是单个页面,自定义变量放在每个页面的最开头,比如:/blog_design
- 条件判断语句
- 循环迭代
- 默认函数
发布博客
1 | |
个性化
其它见 Hexo 中的个性化。
更改主题
文章阅读量统计
发布源
404.html 邮件
代码高亮
https://blog.csdn.net/laugh12321/article/details/85232176
https://www.jianshu.com/p/efbeddc5eb19
- 复制版权提示
- 代码块复制
- 404页面
- 自定义鼠标样式
- 修改背景颜色
用Hexo搭建博客
生成Hexo站点
用 Hexo 初始化本地博客目录
1 | |
- npm 安装错误,网络环境代理报错,解决办法:
- https://blog.csdn.net/qq_31945977/article/details/81537917
- https://blog.csdn.net/vah101/article/details/79802481
用 GitHub Desktop 提交(commit)更改并备注
- 因为下面要改配置文件,所以先备份一次。这就体现出 Git 版本控制的好处和 GitHub Desktop 操作的便捷了。
- 以下做的各种配置都可以通过 commit 提交。
- 对于简单文本文件,不熟悉 Git 的可以手动复制。比如 Windows下,ctrl + 鼠标拖拽即可复制副本。
基本配置 _config.yml
先暂时只改文件末尾 deploy 这部分,进阶在个性化中。
1 | |
如何使用
至此博客搭建和源文件通过 GItHub Desktop 进行版本控制并备份在远程仓库 hexo 分支基本功能已经完成。
在本地博客目录(username.github.io)下 右键 -> Git Bash Here 。
写博客
Hexo 有三种默认布局:默认为
post。可修改_config.yml中的default_layout参数来指定默认布局。布局存储在
scaffolds/中,在执行新建命令时,Hexo 会尝试在scaffolds文件夹中寻找[layout].md,并根据其内容新建网页,即在source\中建立[layout]\index.md。可自定义布局。
| 布局 | 作用 | 存储路径 | 作用 |
|---|---|---|---|
| post | 文章 | source/_posts/ | |
| draft | 草稿 | source/_drafts/ | 发布为post后才显示在页面中 |
| page | 网页 | source/[layout]/index.md |
标题有空格时会自动替换为下划线,可在配置中更改。
默认以标题做为文件名称,可编辑
new_post_name参数来改变默认的文件名称,如:year:month-:title.md表示在文件名称前加入六位年月。
1 | |
预览
1 | |
部署博客
一般使用组合命令发布博客,等待一段时间即可查看新更改。
1 | |
少数情况需要删除旧的静态文件再发布。
1 | |
hexo g -d 有时候不能 commit
1 | |
版本控制
使用 GitHub Desktop 对本地博客目录(包括 md 源文件目录 _post目录)进行版本控制。
Hexo 目录
1 | |
个性化
添加头像
更改主题
以 next 主题为例。
- 找到主题
/themes/文件夹下打开 Git- 克隆主题
1 | |
- 配置
/themes/next/_config.yml
1 | |
- 配置
_config.yml
1 | |
- 部署到博客
阅读全文
如果在博客文章列表中不想全文显示,可以在文章中增加 <!-- more -->, 在这后面的内容就不会显示在列表,将会显示阅读全文按钮。
永久链接
- 在站点根目录使用
git bash执行命令:
1 | |
- 打开根目录下的
_config.yml文件,修改站点配置文件:
1 | |
- 清空缓存,重新部署
1 | |
-
自此后再修改文件名,而永久链接不变。
个人域名
- 在
/source新建一个CNAME文件,里面写上域名。注意保存成所有文件而不是txt文件。
1 | |
- 域名解析。如用阿里云解析二级域名到 GitHub Pages
1 | |
- 等几分钟就可以访问了
访客人数
文章字数统计、阅读时长
文章阅读人数
-
注意:记录文章访问量的唯一标识符是文章的发布日期以及文章的标题,如果你更改了这两个数值,会造成文章阅读数值的清零重计。
搭建日志
2020-08-15 用 Jekyll 重构站点
2018-09-14 数据统计
- 访客人次统计
- 文章阅读量、字数、预计时间
2018-09-13 新建 hexo 分支进行源文件和运行版本控制
- 生成永久链接
- 按日期管理文章标题
- 阅读全文
2018-09-07 博客上线
- 导航栏
- 头像
To-Do List
-
时间轴 展示博客搭建过程
-
浏览量统计
-
图床
-
博客 logo
-
docs folder :提出了一种更简洁的方法,实现失败
-
MarkDown 前景展望只需要上传 md 源文件及配置,即可按照配置渲染 md
- 畅言评论 留言板
- 图床 图片放大
- 博客分享
- 回到顶部
- 网站背景
- 友情链接
- 字体
- 社交信息
- 数学公式
- 网易云音乐
DeBug
- 更新导航栏必须全部刷新后才可见
- 新建草稿不能自动添加日期