起飞!基于Hexo框架的个人博客搭建与部署实录
本文最后更新于:2023年4月27日 晚上
近来,博主PhD生涯遭遇重大挫折。在幻灭感和虚无感的双重挤压下,精神备受煎熬。自忖学术道路难以为继,奋然决心技术转型。
在 Web 2.0 时代,个人博客是一块难得的精神自留地,同时也是记录个人成长的良好载体。以建立个人博客作为探索技术转型路的开端,颇有象征意义,也挺 Cool。
博主作为小白,决定选择基于一种相对成熟、社区相对活跃的开源框架,即 Hexo,来搭建个人博客。大概花了一天时间才折腾出一点眉目。
1. 为什么是 Hexo
对博主而言,入坑 Hexo 是因为注意到几位自己关注的技术大佬在用它做博客,且主题酷炫,颇对我胃口。经过进一步了解,发现 Hexo 生成的是静态页面,可托管于 Github,因此搭建成本不高;且教程简明、丰富,容易实操。同时,Hexo能满足技术博客最基本的 Markdown 语法支持。因此,博主选择了利用 Hexo 搭建自己的第一个博客。
事实上,博客框架还有其它选择,如 Wordpress,Hugo,Jekyll 等。静态博客框架的选择可以参考 Static Site Generators。这些,就留到以后再折腾吧···
2. 准备工作
搭建与部署主要参考 Hexo 的官方文档和知乎上的技术分享。但实际操作过程中的问题也层出不穷。
安装 Hexo 需要首先安装 Node.js 和 Git。博主的系统环境是 64 位 Windows 10,安装这两款软件还是比较顺利,参考知乎的技术分享即可,也没有遇到什么大坑。博主安装的版本分别是 Node.js v18.16.0 LTS 和 Git v2.40.6。成功配置后,可以在命令行界面输入 npm -v
查看 npm 版本;同时,可以在任何文件路径下点击鼠标右键(或者 Shift + 右键),点击 Git Bash Here,打开Git Bash 命令行界面。进一步的配置,可以在 Git Bash 命令行中进行,主要有两个问题值得注意。
-
npm 包的安装路径
npm, 即 Node Package Manager。查看 npm 的默认安装路径可以用指令
1
npm config ls
Windows 10下默认的全局安装路径通常是 C:\Users\<user name>\AppData\Roaming\npm, 担心占用C盘空间的话可以通过
1
2npm config set prefix "File Path"
npm config set cache "File Path"进行设置 (另外还需要相应的配置环境变量), 具体过程可以参考这篇文章。npm大概有以下几种不同的包安装方式,可以按需使用:
1
2
3npm install package #安装到项目路径,不在package.json中写入依赖
npm install package -g #安装到全局目录下
npm install package --save #安装到项目路径下,并写入依赖 -
Git 与 Github 的绑定
使用 Git 上传文件至 Github 时,为了免除每次输入口令的麻烦,通常使用 SSH 公钥登录。需要首先生成公钥,然后在 Github 中添加公钥。具体步骤如下:
- Git 中生成密钥:
1
ssh-kengen -t rsa
- 在密钥目录下,查看公钥:
1
cat id_rsa.pub
- Ctrl + Insert 复制公钥 (Git 中的复制和粘贴分别是 Ctrl + Insert 和 Shift + Insert);
- 在 Github 个人主页中,依次点击 Settings -> SSH and GPG Keys -> New SSH key -> 粘贴 id_rsa.pub 至 Key 文本框内-> Add SSH Key;
- 在 Git Bash 中验证是否成功:
1
ssh -T git@github.com
- 验证用户名和邮箱
1
2git config --global user.mail "<mail address>"
git config --global user.name "<UserName>"
- Git 中生成密钥:
3. 安装 Hexo
完成环境的准备工作后,可以使用 npm 全局安装 Hexo:
1 |
|
默认应该是安装最新版。博主安装的版本是 v6.3.0。然后,建立一个文件夹用于存放博客文件,在该文件夹下打开 Git Bash,运行以下指令
1 |
|
顺利完成的话(通常本地查看不太会出现问题),便可以在 localhost:4000 查看生成的静态页面以及默认生成的第一篇 Hello World 博客。
Hexo 初始化后的文件夹将出现 scaffolds, source, source/_posts, themes 等几个文件夹, 以及 _config.yml 等几个文件。以下重点介绍几个文件(夹)的功能:
- scaffolds:存储文章模板。默认有 draft.md, page.md, post.md。主要是设置文章的 Front-matter, 具体支持的参数和关键字随主题而异;
- source:存储用户资源, 包括 Markdown 文档、图片等。在使用Git上传时, 除 _posts 文件夹外, 其它以 “_” 开头的文件(夹)会被自动忽略。
- public: 用于存放解析后的文件;
- package.json: 已安装的程序信息;
- _config.yml: 页面的配置信息。可以设置主题、页面标题等内容;
4. 一键部署 Hexo 到 Github
首先,在 Github 创建自己的 Github Pages。过程很简单,即新建以 <UserName>.github.io 为名称的仓库,并设置为 Public, 即可。
接下来,在 _config.yml 文件中添加以下内容:
1 |
|
在博客文件夹下安装插件:
1 |
|
运行以下指令:
1 |
|
完成之后, 在浏览器中,即可输入 https://<UserName>.github.io 访问博客网页了。
- Tips:关于
hexo d
失败的几种解决方案- 出现 Recv failure 等无法上传的问题: 通常跟网络环境有关系。博主之前使用的 https 指定仓库地址,频繁无法上传页面。不管是否配置代理,都不好使。在 _config.yml 中将 https 换成 git@ 的方式之后没有再报错了。
- 注意提前验证邮箱和用户名,参考 Part 2 与 Github 绑定部分。
- 尝试清除缓存文件重新上传, 即删除 .deploy_git 文件,重新运行清除、生成、上传命令。
5. 域名解析
通过 Github Pages 托管的个人博客域名是固定的,不够个性。私以为,只有拥有名片般域名的博客才是完整的。博主遂斥重金 (200多块钱,可以用 3 年,其实也还好。。。) 在 Godaddy 购买了该域名。
域名提供商也可以选择国内的腾讯云或者阿里云等。域名的价格通常第一年会有优惠,后面几年会高一些,随个人消费能力而定了。通常的规律是简短且含义丰富的域名价格高;热门后缀,如 .ai 等价格高。
购买域名后需要在域名提供商处添加 DNS 解析规则,具体可以参考 Github 文档。 简单来说,需要添加 4 条 A 类型记录, 4 条 AAAA 类型记录和 1 条 CNAME 记录, 添加不完整可能出现域名解析失败。
1 |
|
在博客文件夹里的 source 文件夹中,添加 CNAME 文件,写入不带 www 的域名 (这样可以同时以不带 www 和带 www 的方式访问页面)。
完成以上步骤,重新生成并部署 Hexo 至 Github 即可。
- Tips: 网页突然出现域名解析失败
- Github 似乎会检查 DNS, 若没有通过 DNS 检查,网页可能会出现无法查看的问题,具体可以在仓库中点击 Settings -> Pages, 查看 Custom domain。
- 域名似乎还需要通过 Verify。 在个人主页中,点击 Settings -> Pages。 按照要求在域名服务商处添加一条 TXT 类型的记录,然后点击 Verify。 通过后会显示 Verified。
- 检查 CNAME 文件是否正确。
注意:博主配置完后发现链接无法升级到 https (安全性还是很有必要的)。经过一番检查,发现从 Godaddy 购买的域名会默认添加一条 Parked 记录。删除该条记录后, Github会自动升级链接。事实上,在 DNS 解析中,不应该保留多余的 A 类型记录。
结语
回想个人博客部署的过程,发现还是蛮曲折的,事毕之后也是颇为激动。事实上,以上的步骤还只完成了基本的搭建和部署,进一步还可以做个性化定制,添加自己喜欢的主题等。总之,作为一个开始,希望自己费心搭建的博客能见证我的成长和变化,发挥价值。