GitHub Pages+Hexo+Git快速搭建个人博客
GitHub Pages+Hexo+Git快速搭建个人博客
环境介绍
Node.js
简介
Node.js发布于2009年5月,由Ryan Dahl开发,是一个基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动、非阻塞式I/O模型,让JavaScript 运行在服务端的开发平台,它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语言。
简单理解
脚本语言需要一个解析器才能运行,JavaScript是脚本语言,在不同的位置有不一样的解析器,如写入html的js语言,浏览器是它的解析器角色。而对于需要独立运行的JS,nodejs就是一个解析器。
官网
安装教程
NodeJS入门(一)—nodejs详细安装步骤_nodejs安装及环境配置-CSDN博客
其他
并且Node.js为大多数平台提供了官方的安装程序,可以通过Node.js的相关命令在命令行安装官方安装程序。
安装完成后可以通过node -v
查看node.js的版本,安装Node.js后npm(Node Package Manager)会随之安装,这是因为 npm 在 Node.js 生态系统中被广泛使用,几乎所有的 Node.js 项目都依赖于 npm 来管理项目的依赖关系和构建任务,可以通过npm -v
命令查看npm的版本。
Git
简介
Git 是一个免费且开源的分布式版本控制系统,旨在处理从小型到 具有速度和效率的超大型项目。
Git 易于学习,占用空间小,性能快如闪电。 它优于 Subversion、CVS、Perforce 和 ClearCase 等 SCM 工具 具有廉价本地分支等功能, 方便的暂存区域和多个工作流程。
官网
安装教程
【精选】Git 详细安装教程(详解 Git 安装过程的每一个步骤)_git安装_mukes的博客-CSDN博客
其他
下面是Git和GitHub的一些介绍,Hexo初始化项目需要通过Git去拉取
Git和Github详细入门教程(别再跟我说你不会Git和Github)_git github-CSDN博客
一篇文章搞懂Git与Github_git github_一名机电研究生的博客-CSDN博客
Hexo
简介
Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他标记语言)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。
官网
安装教程
其他
可以直接从官网的文档中了解Hexo的具体使用
Hexo的在GitHub的项目地址
hexojs/hexo:一个快速、简单和强大的博客框架,由 Node.js 提供支持。 (githubfast.com)
常用命令
hexo clean
清除已生成文件及缓存
hexo generate
生成静态页面,简写做 hexo g
hexo deploy
推送到 github 库,简写做 hexo d
hexo server
启动本地 WEB 服务器,简写做 hexo s
环境搭建
安装Node.js
安装Git
安装Hexo
安装部署插件
在Hexo目录下通过Git Bash
npm install hexo-deployer-git --save
Hexo初始化项目
在你需要存放项目的路径下打开Git Bash输入
hexo init <folder>
,这里我输入hexo init myBlog
就会在路径下生成myBlog
文件夹,之后输入cd <folder>
就进入生成的文件夹,这里输入cd myBlog
,最后输入npm install
即可简单运行
在初始化项目路径下(如使用上面命令那么初始化项目路径就是
myBlog
)通过Git Bash
(在文件夹下右击选择Open Git Bash here
打开命令行窗口)使用Hexo s
后就开启服务,可以在本地浏览器访问localhost:4000
访问到Hexo初始化的项目构建的网站了,Hexo服务的默认端口是4000,如果端口出现了冲突可以使用Hexo s -p 2000
命令指定端口号(这里指定端口号为2000)
简单使用
加载主题
可以通过官网从已有的主题中选择自己喜欢的主题以应用到网站主页,我选择的主题是Butterfly
Hexo-Butterfly主题 | 主题文档(🦋Hexo butterfly theme document) (butterfly1.cn)
首先需要先下载主题,可以直接下载,如果作者有在其他地方(如GitHub)进行介绍使用Git的下载方式也可以使用,下载主题后放置到项目的
themes
目录下(自行从Hexo官网查阅项目初始化不同文件夹的作用)修改Hexo初始项目下的
_config.yml
文件(不是下载的主题目录下的)中的theme
属性指定主题,注意theme:后面加空格再接值
- 之后执行
hexo g
(清除缓存,生成新的静态文件)然后再hexo s
运行,刷新界面即可看到变化
修改主题配置
可以继续在项目的_config.yml
文件下配置一下基本信息
1 | # Site |
之后可以配置主题相关的了,更加详细的配置可以查阅相关主题的文档介绍,这里只进行简单介绍,修改主题可以按照官网的建议来(非常详细了),也可以直接在下载的主题目录下的_config.yml
文件中直接修改,可以直接使用记事本打开搜索关键词快速定位到相应配置的地方
1 | # Menu 目录,显示在顶部 |
博客书写规则
这里直接看网站文档介绍,讲的很清楚了
Butterfly 安裝文檔(二) 主題頁面 | Butterfly
发布博客
这里需要先在Git中配置SSH,(GitHub推荐使用方式)可以在博客发布的Git相关文章中查阅到,不懂的可以先看Git的文章
新建GitHub仓库,我的仓库名
为wuleizhenshang.github.io
用来存放博客,并在_config.yml
中进行配置之后在Git Bash中输入
hexo g
等待生成完成后输入hexo d
上传到配置文件设置的GitHub的仓库上,可以手动把md文件放到source/_posts
下之后就可以通过指定的网址进行访问,这里我的仓库名为
wuleizhenshang.github.io
,之后在浏览器输入仓库名作为网址就可以访问
特别说明
如果使用图床写博客的话需要在Hexo中做一些更改
http请求体的header中有一个referrer字段,用来表示发起http请求的源地址信息,这个referrer信息是可以省略但是不可修改的,就是说你只能设置是否带上这个referrer信息,不能定制referrer里面的值。服务器端在拿到这个referrer值后就可以进行相关的处理,比如图片资源,可以通过referrer值判断请求是否来自本站,若不是则返回403或者重定向返回其他信息,从而实现图片的防盗链。上面出现403就是因为,请求的是别人服务器上的资源,但把自己的referrer信息带过去了,被对方服务器拦截返回了403。这样加载不到图床的图像。
解决
在下载的主题目录下的layout/includes
目录下有一个head.pug
文件,修改该文件的meta信息,会使生成的所有页面都带有该head。在head.pug文件中添加如下内容,结果参见图片。
1 | meta(name="referrer" content="no-referrer") |
可能遇到问题
仓库公开才允许访问
GitHub官网有说明,公开的仓库或者升级仓库才能使用GitHub Pages功能,升级需要付费,这里把仓库设置为公开仓库就好
修改仓库是否为公开在仓库的设置的基础设置的最下面可以进行修改
仓库为公开但输入网址为404
可能访问网址发现打不开可能需要等待一下,过段时间才能部署好,还有就是可能需要在GitHub Pages中设置一下解析的分支
原理说明
首先需要了解GitHub Pages是什么,可以通过下面的链接查看具体的介绍
GitHub Pages 是什么? - 知乎 (zhihu.com)
通过Hexo快速生成静态网页后通过Git上传到GitHub的仓库上,在仓库设置中设置GitHub Pages访问的网页为生成的静态网页就实现了具体的功能,而Node.js就是运行Hexo的必要环境。
绑定个人域名
绑定个人域名后可以输入个人域名跳转到GitHub Pages页面
首先需要拥有一个个人域名,自行购买
添加CNAME文件,共有三种方式进行创建
直接在Hexo初始化的项目下的
source
文件夹在新建CNAME
文件(这个文件没有后缀名,可以先创建为txt文件,修改完后删除后缀),里面输入自己的域名即可
直接在GitHub项目主页里面的
Create new file
按钮进行创建,因为在本地创建完上传项目到GitHub也会一起上传这个文件在GitHub项目中的Setting标签下的Custom domain中直接填入域名,然后点击Save保存即可
配置域名解析,我这里是腾讯云购买的域名
配置
CNAME
记录类型,主机记录可以写为www
,记录值可以写为你的域名,这样可以通过www+你的域名访问到GitHub Pages,路线类型选默认类型就行
设置为Https安全访问
在域名解析完成后可Enforce HTTPS就可以勾选了,勾选后就可以进行Https安全访问