hexo + github 博客搭建

记录使用Hexo+Github搭建博客的详细步骤,包含了环境安装、博客搭建、远程部署、主题更换四个部分的内容。

前言

  • git: git是一个开源的分布式版本控制系统,用以有效、高速地处理从非常小到非常大的项目版本管理。

  • github: 一个基于 Git 的代码托管平台,它提供了一种集中式和协作式的方式,让开发者能够存储、管理、追踪和协作开发软件项目。。

  • Github Pages: GitHub 提供的一个免费静态网站托管服务,允许用户创建和托管个人、团队或项目的静态网站,支持HTML和MarkDown类型的静态文件。Github Pages三个特点:免费托管、自带主题、支持自制页面和Jekyll。

    GitHub Pages 的设计理念之一是提供一个用户友好的方式来展示项目或个人信息,以减轻新手在 GitHub 上阅读源码时的困难。通过自定义项目首页,用户可以为他们的项目创建简洁、易懂的网页,提供项目的概述、用法说明、示例、文档和其他有关信息。这有助于提高项目的可访问性,使其他开发者更容易理解和使用项目。

    GitHub Pages 还非常适合博客、个人网站和在线履历。许多开发者和创作者使用 GitHub Pages 来分享技术文章、个人作品和项目文档。由于它的简单性和集成性,GitHub Pages 成为了一个非常受欢迎的方式来托管静态内容,并将其与 GitHub 存储库集成在一起。

  • 为什么使用Github Pages:
    ①搭建简单且免费;
    ②可以绑定自己的域名;
    ③支持静态脚本;
    ④DIY自由发挥,支持使用模板,git、markdown、bootstrap、jekyll等;
    ⑤方便使用git做版本管理。

两种Pages类型

1.User/Organization Pages个人或公司站点

  • 特点:这种模式通过创建一个与用户或组织名称相对应的仓库,然后在该仓库中创建一个名为 gh-pages 或 docs 的分支来托管网站内容。你的网站将可以通过 https://username.github.iohttps://organizationname.github.io 的方式访问,其中 username 是你的 GitHub 用户名,organizationname 是组织的名称。
  • 用途:主要用于创建个人或组织的官方网站,或者用于展示与用户/组织相关的项目和信息、博客、作品集等。

2.Project Pages项目站点

  • 特点:这种模式通过在特定项目的仓库中创建一个名为 gh-pages 或 docs 的分支来托管网站内容。项目页面将通过 https://username.github.io/repositoryname 访问,其中 username 是你的 GitHub 用户名,repositoryname 是项目的名称。
  • 用途:主要用于创建与项目相关的二级应用页面,用于项目文档、演示、展示和其他相关信息。每个 GitHub 仓库都可以启用此功能,使项目的文档和演示更容易分享和访问。

这种组织方式允许将主站和项目页面进行有效分离,使用者可以专注于在主站上展示个人或组织信息,同时在项目页面上为不同的项目提供特定的文档或演示。这样的架构有助于保持项目之间的独立性和整洁性。

环境安装

安装git

下载git

官方地址:https://git-scm.com/
访问官方地址,下载对应的安装包,进行安装即可(一直点击下一步)。

验证git

安装好之后,鼠标右键可以看到:Git Bash Here,点击后打开。输入 git –-versiongit -v,出现版本号说明安装成功。

查看Git版本

安装Node

下载Node

官方地址:https://nodejs.org/en/

访问Node官网,下载适合自己windows的版本,安装过程中一直点下一步。在Custom Setup这一步的时候,选择Add to Path(有的时候这个选项是默认的)。

验证Node

安装好以后,打开cmd命令窗口,输入 npm –v,出现版本号则说明安装成功且环境变量已经配置好了。

查看Node版本

安装Hexo

下载Hexo

这一步可以使用git bash来安装,也可以直接使用cmd窗口,命令是一样的。官方地址:https://nodejs.org/en

npm install -g hexo-cli

验证Hexo

安装完成后输入 hexo –v,出现一系列版本号就说明安装成功了。

查看Hexo版本

创建个人站点

新建一个仓库

新建仓库

仓库的名字填写username<用户名>.github.io,权限默认是public,所有人都可以访问我们的仓库;如果想要创建私人权限的仓库,选择“private”。

填写仓库名字

创建文件

进入仓库,点击创建文件。

创建文件

创建一个新的文件,名字叫做index.html(必须叫这个,静态http文件托管服务的默认访问文件就是index.html)。
查看网址,选择“Settings”,找到“Pages”。

查看网址

搭建博客

现在开始可以使用hexo来生成一个博客了。
在本地创建一个文件夹,用于存储博客的本地数据。
cd到这个文件夹下,运行命令 hexo init,hexo会将这个文件夹初始化成一个博客专用文件夹,这个过程会花费一些时间。

初始化博客文件夹

初始化完成后,可以在source文件夹中看到一个叫hello-world的默认文章,还会有一个默认主题。先生成博客看一下效果,运行命令:
hexo generate或是简写成 hexo g

查看效果

然后hexo会开始生成博客,生成结束后,原文件下多了一个public文件夹,这个文件夹是hexo生成的一个完整的静态网站,也就是我们的博客。网站生成好后,我们可以启动服务器来浏览博客,运行命令:hexo server

浏览博客

打开浏览器,输入localhost:4000就可以浏览博客了。

本地浏览博客

Tips:如果出现页面加载不出来,可能是端口被占用了。Ctrl+C 关闭服务器,运行 hexo server -p 5000 更改端口号后重试。

Hexo 博客文件夹目录结构如下:

Hexo博客文件夹目录

远程部署

此时运行的服务器,是我们的本地服务器,只有在本机上才可以访问。为了让别人能访问我们的博客,需要进行远程部署,将我们生成好的博客部署到远程仓库去。如果远程仓库支持pages服务,就可以通过这样的方法发布和更新博客。

在博客文件夹内右键,点击Git Bash here。

初始化git仓库。

1
git init

配置github账户信息。

1
2
git config --global user.name "Github用户名"
git config --global user.email "Github邮箱"

继续输入以下命令来生成关联邮箱的密钥:

1
ssh-keygen –t rsa –C "Github邮箱"

按git给出的路径,找到id_rsa.pub文件,并复制其中的内容(用记事本就可以打开)。
如果电脑上找不到.ssh文件,使用下边的命令来生成(记得再执行一次前一条命令):

1
ssh-keygen –o

进到仓库,点击右上角setting进入设置。Title随便写,Key的内容填刚才id_rsa.pub文件中复制的内容。

设置key

校验ssh key是否成功:

1
ssh -T git@github.com

校验key是否成功

修改博客目录配置文件(_congif.yml)中的deploy字段,如下:

1
2
3
4
5
deploy:
type: 'git'
repo: git仓库地址
branch: master

Git仓库地址

修改deploy字段

要使用远程部署,需要先安装 hexo-deployer-git,这是适用于git类型仓库的方法。cd到博客文件夹后运行命令:

1
npm install hexo-deployer-git --save  #安装部署工具

验证:在你的 Hexo 项目目录中,打开 package.json 文件。在这个文件中,你可以找到项目的依赖项列表,查看是否包含了 hexo-deployer-git。

把本地仓库部署到云端:

1
hexo d

如果成功部署到github,却访问不了网站,重启路由器。

更换博客主题

hexo主题网站:https://hexo.io/themes/index.html
找到博客文件夹的themes文件夹,这是存放博客主题的文件夹。
themes文件夹
挑选一个喜欢的博客主题,进入到对应的git仓库,并下载到本地来(具体可以参考每个主题的README文档),也可以直接下载压缩包,解压到themes文件夹。
zip下载

Tips:

  • 在博客文件夹下打开git命令窗口,执行相关指令;
  • 按照README执行指令时,如果使用git clone命令时出现了 OpenSSL SSL_read: Connection was reset, errno 10054报错,看下是否是README是否没更新https。

确认已经下载好主题到themes文件夹后,打开博客文件夹下的_config.yml文件,修改theme为你所选主题的对应文件夹名,示例:theme:next

Tips:每个主题文件夹下也有一个_config.yml文件,这是该主题的配置文件,按照主题文档修改即可,不要和博客的_config.yml搞混了。

然后执行以下命令:

1
2
3
hexo clean  #清除缓存
hexo g #生成静态界面
hexo d #部署到github

再次打开对应站点应该就可以看到页面被更换为了新主题。也可以启动hexo服务器后访问localhost:4000本地查看后再部署。