当前位置:  首页  >  前端开发  >  HTML

超级详细的Hexo+GitHubPages搭建博客实例教程-html教程

前言:博主目前大三,Web前端爱好者。写博客的好处,不是为了写而写,而是一个记录思想的过程。不要考虑它能带给你什么,而是你自己从中收获了什么。最近刚好有空,于是就参照网上的各种教程,搭建了一个博客。现在把Hexo+GitHubPages搭建博客的完整过程记录下来:个人博客地址:www.lovebxm.com大概流程:1.搭建Node.js环境2.搭建G
前言:博主目前大三,Web 前端爱好者。写博客的好处,不是为了写而写,而是一个记录思想的过程。不要考虑它能带给你什么,而是你自己从中收获了什么。

最近刚好有空,于是就参照网上的各种教程,搭建了一个博客。现在把 Hexo + GitHub Pages 搭建博客的完整过程记录下来:

个人博客地址:

大概流程
1. 搭建 Node.js 环境
2. 搭建 Git 环境
3. GitHub 注册和配置
4. 安装配置 Hexo
5. 关联 Hexo 与 GitHub Pages
6. GitHub Pages 地址解析到个人域名
7. Hexo 的常用操作
8. 结束语

搭建 Node.js 环境

为什么要搭建 Node.js 环境? - 因为 Hexo 博客系统是基于 Node.js 编写的

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,可以在非浏览器环境下,解释运行 JS 代码。

在 Node.js 官网: 下载安装包 v6.10.3 LTS

保持默认设置即可,一路Next,安装很快就结束了。

然后打开命令提示符,输入 node -vnpm -v,出现版本号则说明 Node.js 环境配置成功,第一步完成!!!

安装 Hexo 完成后,请执行下列命令来初始化 Hexo,用户名改成你的,Hexo 将会在指定文件夹中新建所需要的文件。

hexo init bxm0927.github.io

cd bxm0927.github.io

npm install

新建完成后,指定文件夹的目录如下:

.
├── .deploy         #需要部署的文件
├── node_modules    #Hexo插件
├── public          #生成的静态网页文件
├── scaffolds       #模板
├── source          #博客正文和其他源文件,404、favicon、CNAME 都应该放在这里
| ├── _drafts       #草稿
| └── _posts        #文章
├── themes          #主题
├── _config.yml     #全局配置文件
└── package.json    #npm 依赖等

运行本地 Hexo 服务

hexo server
或者
hexo s

您的网站会在 http://localhost:4000 下启动。如果 http://localhost:4000 能够正常访问,则说明 Hexo 本地博客已经搭建起来了,只是本地哦,别人看不到的。下面,我们要部署到Github。

注意1:执行hexo server提示找不到该指令

解决办法:在Hexo 3.0 后server被单独出来了,需要安装server,安装的命令如下:

sudo npm install hexo-server
或者
npm install hexo -server --save

关联 Hexo 与 GitHub Pages

我们如何让本地git项目与远程的github建立联系呢?用 SSH keys

生成SSH keys

输入你自己的邮箱地址

ssh-keygen -t rsa -C "80583600@qq.com"

在回车中会提示你输入一个密码,这个密码会在你提交项目时使用,如果为空的话提交项目时则不用输入,我们按回车不设置密码。

添加 SSH Key 到 GitHub

打开 C:\Users\bxm09\.ssh\id_rsa.pub,此文件里面内容为刚才生成的密钥,准确的复制这个文件的内容,粘贴到 的 new SSH key

测试

可以输入下面的命令,看看设置是否成功,git@github.com的部分不要修改:

ssh -T git@github.com

如果是下面的反馈:

The authenticity of host ‘github.com (207.97.227.239)’ can’t be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?

不要紧张,输入yes就好,然后会看到:

Hi aierui! You've successfully authenticated, but GitHub does not provide shell access.

配置Git个人信息

现在你已经可以通过 SSH 链接到 GitHub 了,还有一些个人信息需要完善的。
Git 会根据用户的名字和邮箱来记录提交。GitHub 也是用这些信息来做权限的处理,输入下面的代码进行个人信息的设置,把名称和邮箱替换成你自己的。

git config --global user.name "bxm0927"
git config --global user.email "80583600@qq.com"

配置 Deployment

_config.yml文件中,找到Deployment,然后按照如下修改,用户名改成你的:

需要注意的是:冒号后面记得空一格!

# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
  type: git
  repo: git@github.com:bxm0927/bxm0927.github.io.git
  branch: master

本地文件提交到 GitHub Pages

// 删除旧的 public 文件
hexo clean

// 生成新的 public 文件
hexo generate
或者
hexo g

// 开始部署
hexo deploye
或者
hexo d

在浏览器中输入 https://bxm0927.github.io (用户名改成你的)看到了 Hexo 与 GitHub Pages 已经成功关联了,哇哇哇哇哇哇,开心死你了,不要忘了回来给我点赞哟 ~

注意1:若上面操作失败,则需要提前安装一个扩展:

npm install hexo-deployer-git --save

注意2:如果在执行 hexo d 后,出现 error deployer not found:github 的错误(如下),则是因为没有设置好 public key 所致,重新详细设置即可。

Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

注意3:怎么避免 .md 文件被解析?

Hexo原理就是hexo在执行hexo generate时会在本地先把博客生成的一套静态站点放到public文件夹中,在执行hexo deploy时将其复制到.deploy文件夹中。Github的版本库通常建议同时附上README.md说明文件,但是hexo默认情况下会把所有md文件解析成html文件,所以即使你在线生成了 README. md,它也会在你下一次部署时被删去。怎么解决呢?

在执行hexo deploy前把在本地写好的README.md文件复制到.deploy文件夹中,再去执行hexo deploy。

GitHub Pages 地址解析到个人域名

Github Pages 是面向用户、组织和项目开放的公共静态页面搭建托管服 务,站点可以被免费托管在 Github 上,你可以选择使用 Github Pages 默 认提供的域名 github.io 或者自定义域名来发布站点。

看着博客的域名是二级域名,总有一种寄人篱下的感觉,为了让这个小窝看起来更加正式,我在阿里云上买了一个域名,打算将博客绑定自己的域名。

进行该绑定过程,其实就是一个重定向的过程。

在 GitHub 仓库的根目录下建立一个 CNAME 的文本文件(注意:没有扩展名),文件里面只能输入一个你的域名,不能加http://

www.lovebxm.com

注意:CNAME 一定是在你 Github 项目的 master 根目录下

进入阿里云域名解析地址,添加解析:

  1. 记录类型选择CNAME

  2. 主机记录填www

  3. 解析线路选择默认

  4. 记录值填yourname.github.io

  5. TTL值为10分钟

  6. 再添加一个解析,记录类型A

  7. 主机记录填www

  8. 解析线路选择默认

  9. 记录值填你GitHub 的ip地址(在cmd中ping:)

ping bxm0927.github.com

点击保存,等 1 分钟,访问下你自己的域名,一切就ok了。

域名绑定成功,域名解析成功,因此你在浏览中输入 www.lovebxm.com,或 lovebxm.com 就可以访问到博客了,输入 bxm0927.github.io 会重定向到 www.lovebxm.com。过程:www 的方式,会先解析成 http://xxxx.github.io,然后根据 CNAME 再变成 www

注意:CNAME文件在下次 hexo deploy的时候就消失了,需要重新创建,这样就很繁琐

方法一:每次 hexo d 之后,就去 GitHub 仓库根目录新建 CNAME文件

方法二:在 hexo g 之后, hexo d 之前,把CNAME文件复制到 “\public" 目录下面,里面写入你要绑定的域名。

方法三(推荐):将需要上传至github的内容放在source文件夹,例如CNAME、favicon.ico、images等,这样在 hexo d 之后就不会被删除了。

方法四:通过安装插件实现永久保留

$ npm install hexo-generator-cname --save

之后在_config.yml中添加一条

plugins:
- hexo-generator-cname

需要注意的是:如果是在github上建立的CNAME文件,需要先clone到本地,然后安装插件,在deploy上去即可。CNAME只允许一个域名地址。

注意1:每次生成的 CNAME 都是 yoursite.com 怎么解决?

修改 _config.yml

url: 
root: /
permalink: :year/:month/:day/:title/
permalink_defaults:

Hexo 的常用操作

发表一篇文章

hexo new "文章标题"

D:\GitHub\Hexo\test>hexo new "文章标题"
INFO  Created: D:\GitHub\Hexo\test\source\_posts\文章标题.md

在本地博客文件夹 source\_posts 文件夹下看到我们新建的 markdown 文件。

当然,我们也可以手动添加Markdown文件在source->_deploy文件夹下,其效果同样可以媲美hexo new

文章编辑好之后,运行生成、部署命令:

hexo clean

hexo g

hexo d

当然你也可以执行下面的命令,相当于上面两条命令的效果

hexo clean

hexo d -g

新建一个自定义页面

hexo new page folder

文章如何添加多个标签

有两种多标签格式

tags: [a, b, c]
或
tags:
  - a
  - b
  - c

显示部分文章内容

如果在博客文章列表中,不想全文显示,可以增加 , 后面的内容就不会显示在列表。

更改主题

官方主题库:https://hexo.io/themes/

Hexo主题非常,推荐使用 Next 为主题,请阅读 Next 的官方文档( ),5 分钟快速安装。

再提示一点,大家可以hexo主题修改一步就hexo s看下变化,初次接触对参数不清楚。只有hexo s后在可以在本地浏览到效果,Ctrl+C 停止服务器。

添加插件

添加 sitemap 和 feed 插件

切换到你本地的 hexo 目 CIA ,在命令行窗口,输入以下命令

npm install hexo-generator-feed -save
npm install hexo-generator-sitemap -save

修改 _config.yml,增加以下内容

# Extensions
Plugins:
- hexo-generator-feed
- hexo-generator-sitemap
#Feed Atom
feed:
  type: atom
  path: atom.xml
  limit: 20
#sitemap
sitemap:
  path: sitemap.xml

再执行以下命令,部署服务端

hexo d -g

配完之后,就可以访问 https://bxm0927.github.io/atom.xml 和 https://bxm0927.github.io/sitemap.xml ,发现这两个文件已经成功生成了。

添加 404 页面

GitHub Pages 自定义404页面非常容易,直接在根目录下创建自己的404.html就可以。但是自定义404页面仅对绑定顶级域名的项目才起作用,GitHub默认分配的二级域名是不起作用的,使用hexo server在本机调试也是不起作用的。

其实,404页面可以做更多有意义的事,来做个404公益项目吧。

推荐使用腾讯公益404 :






















    
扫码关注 PHP1 官方微信号
PHP1.CN | 中国最专业的PHP中文社区 | PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | PHP问答
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有