hexo+git+github+域名搭建个人博客提示404_用 Hexo 和 GitHub Pages 搭建个人博客

5b5beb40ce52ba0e4c3dbfb1b536cf3f.png

Hexo 是一个基于 Node.Js 的静态博客框架,它能够把 Markdown 文件转换成静态 HTML 网页。与动态博客相比,静态博客有这些好处:

  • 不需要数据库,对文章数据的备份和迁移就是直接操作 Markdown 文件,很方便。
  • 访问静态网页比访问动态网页更快速,对服务器的压力也更小。
  • 在服务器上,处理动态网页的 Web 应用框架有时会有安全漏洞,而静态网页根本就不需要 Web 应用框架处理,所以更安全。

如果要在互联网中访问博客网站,就要把 Hexo 生成的网页文件放到服务器上。然而租用服务器需要花钱,有没有其它免费的方法?

GitHub Pages[1] 是 GitHub 提供的静态空间,供开发者免费发布自己的静态网页。所以只要把 Hexo 生成的文件上传到 GitHub,就能实现搭建一个可以在互联网中被访问的博客。下文记录了用 Hexo 和 GitHub Pages 搭建博客的具体步骤。

1. GitHub 准备

先注册 GitHub[2],然后新建一个 Repository,命名为 username.github.io(替换 username 为你的 GitHub 账号名,下同),这样命名的作用是开启了 GitHub Pages 服务。

2. 安装与配置 Git

要上传文件到 GitHub 仓库,需要使用 Git 这个工具。

安装 Git

  • Windows:下载并安装 Git for Windows[3]。安装后自带了 Git Bash。下文的代码部分,如无特殊说明则是需要在命令行中输入的命令,建议在 Git Bash 上进行输入。Git Bash 提供了 Linux 风格的 shell,打开它的方法很简单,在任意位置单击右键,选择「Git Bash Here」即可。
  • Mac:使用 Homebrew[4],MacPorts[5] 或下载 Git osx 安装程序[6] 安装。
  • Linux(Ubuntu, Debian):sudo apt-get install git-core
  • Linux(Fedora, Red Hat, CentOS):sudo yum install git-core

设置用户名和邮箱地址

下面的 username 和邮箱地址要替换成与你的 GitHub 对应的。

git config --global user.name "username"
git config --global user.email "username@example.com"

与 GitHub 建立 SSH 连接

首先检查电脑是否已有 SSH keys:

ls -al ~/.ssh

默认情况下,public keys 的文件名是以下的格式之一:

  • id_dsa.pub
  • id_ecdsa.pub
  • id_ed25519.pub
  • id_rsa.pub

因此,如果列出的文件有 public 和 private 钥匙对(例如 id_ras.pub 和 id_rsa),证明已存在 SSH keys。如果没有 SSH key,则生成新的 SSH key(把your_email@example.com替换为你 GitHub 账号对应的邮箱地址):

ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 

之后会停顿几次,一路回车即可。然后向 ssh-agent 添加 key:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

拷贝 key:

## 在 Windows 中使用
clip 
## 在 Linux 中使用
sudo apt-get install xclip
xclip -sel clip 

然后,在 GitHub 右上方点击头像,选择 Settings,在左边的 Personal settings 侧边栏选择 SSH and GPG keys。点击 New SSH key,接着粘贴 key,点击 Add SSH key 按钮。最后,测试连接:

ssh -T git@github.com

之后输入 yes 并回车,就完成了。

3. 安装与使用 Hexo

安装 Node.js

安装 Hexo 之前要先安装 Node.js。在 Windows 中,可以下载 Node.js[7] 并安装。在 Linux 中,首先安装 nvm:

wget -qO- https://raw.github.com/creationix/nvm/master/install.sh | sh

安装完成后,重启终端并执行下列命令即可安装 Node.js。

nvm install 4

安装 Hexo

新建一个文件夹作为 Hexo 项目文件夹,比如新建 blog 文件夹。打开 Git Bash,cd 进入刚才的文件夹。然后依次执行:

npm install -g hexo-cli
hexo init
npm install
npm install hexo-deployer-git --save

基本操作

编辑 _config.yml 配置文件完善博客的相关信息,详细的可以看 Hexo 配置[8]。其他例如发表文章、制作页面的方法在 Hexo 官方文档[9] 也已经讲得非常详细,在这里我就不赘述了。

我一般不使用 Hexo 的命令来新建文章,而是在 blog\source\_posts\ 目录(这是 Hexo 存放文章的默认目录)中手动新建个 Markdown 文件,然后在文件头部加上用 YAML 写的 Front-matter,比如本文的 Front-matter 如下:

---
title: 用 Hexo 和 GitHub Pages 搭建个人博客
date: 2020-08-03 01:41:33
permalink: build-a-blog-with-github-pages-and-hexo
categories: 编程技术
tags:
  - 博客
---

其中包括标题、时间、固定链接、分类、标签。Hexo 默认使用 Markdown 的文件名作为文章链接,但我有时会修改 Markdown 文件名,所以就使用固定链接。

清理文件

在修改了 Hexo 的相关配置文件后,有时需要执行清理命令才能生效:

hexo clean

本机运行

在部署(上线)博客前,如果要先在本机查看网站效果,可以运行 Hexo 自带的服务器,执行:

hexo s

然后在浏览器中打开 http://localhost:4000/ 这个本机网址就可以看到博客首页。

更换主题

可以在 GitHub 上搜索 Hexo theme,并在 blog\themes 目录下使用 git clone 命令下载主题,然后将 _config.yml 中的 landscape 改为对应的主题文件夹名字。

部署博客

编辑 blog 文件夹中的 _config.yml 文件,找到 deploy:,修改配置如下(注意缩进):

deploy:
  type: git
  repo: 对应仓库的SSH地址(可以在GitHub对应的仓库中复制)
  branch: master

本地生成静态网页并把博客部署到 GitHub,执行:

hexo g -d

至此,博客搭建完成,浏览器打开 username.github.io 即可访问网站。

备份 Hexo 项目

两种方法:

1、直接备份 blog 文件夹,比如将这个文件夹压缩打包上传到网盘中。.gitignore 中记录了一些不必备份的路径,比如 node_modules/,在备份时可以排除这些路径。

2、如果你的 blog 文件夹中(包括子文件夹中)主要是纯文本文件,那么很适合用 Git 来管理并备份到 GitHub 或码云中。Git 会忽略 .gitignore 文件中配置的路径。

还原 Hexo 项目

备份做好了,那当我换新电脑或是数据丢失了要怎么还原呢?

1、把备份文件夹复制或下载到电脑上,作为 Hexo 项目文件夹。

2、确保 Git、Hexo 已经安装。

3、在 Hexo 项目文件夹下执行命令安装依赖:npm install

4. 网站优化

绑定域名

blog\source\ 文件夹下新建一个名为 CNAME 的文件(没有扩展名),在里面填上你的域名,然后执行 hexo g -d 提交到 GitHub。

进入你的域名管理处,修改解析记录,如果你的域名是顶级域名,那么添加一条 A 记录,主机记录为 @,指向以下 4 个 IP 地址的其中一个,等待生效。

  • 185.199.108.153
  • 185.199.109.153
  • 185.199.110.153
  • 185.199.111.153

如果你的域名不是顶级域名,比如是二级域名 www.abc.com,那么添加一条 CNAME 记录,主机记录为 www,指向 username.github.io

建议在 GitHub Pages 设置页面中开启强制使用 HTTPS。更详细的关于绑定域名的内容请参考 GitHub 的官方文档[10]

生成 sitemap

生成普通的 sitemap 和专用于百度的 sitemap:

npm install hexo-generator-sitemap --save
npm install hexo-generator-baidu-sitemap --save

然后编辑 _config.yml,增加

sitemap:
    path: sitemap.xml
baidusitemap:
    path: baidusitemap.xml

RSS 订阅

执行:

npm install hexo-generator-feed --save

然后编辑 _config.yml,增加

feed:
    type: atom
    path: atom.xml
    limit: 20
    ##type 表示类型, 是 atom 还是 rss2.
    ##path 表示 Feed 路径
    ##limit 最多多少篇最近文章

404 页面

对于已绑定域名的网站,GitHub 默认调用其根目录下的 404.html 作为 404 页面。我们可以利用 Hexo 的新建页面功能:

hexo new page "404"

然后找到 source 文件夹下的 404 文件夹下的 index.md,在头部加入permalink: 404.html,部署后即可生效。

参考资料

[1]

GitHub Pages: https://pages.github.com/

[2]

GitHub: https://github.com/

[3]

Git for Windows: https://git-scm.com/download/win

[4]

Homebrew: http://mxcl.github.com/homebrew/

[5]

MacPorts: http://www.macports.org/

[6]

Git osx 安装程序: http://sourceforge.net/projects/git-osx-installer/

[7]

Node.js: http://nodejs.org/

[8]

Hexo 配置: https://hexo.io/zh-cn/docs/configuration.html

[9]

Hexo 官方文档: https://hexo.io/zh-cn/docs/writing.html

[10]

GitHub 的官方文档: https://help.github.com/articles/about-supported-custom-domains/

811d65d19ceea4b243f302815c3061ff.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值