您的位置:首页 > 编程语言

使用Hexo + GitHub Pages搭建个人博客

2018-01-26 18:23 746 查看
---
title: github pages+hexo搭建博客
date: 2017-09-20 10:39:20
tags: ["技术","学习",'博客']
---
Web 前端爱好者。写博客的好处,不是为了写而写,而是一个记录思想的过程。不要考虑它能带给你什么,而是你自己从中收获了什么。
最近刚好有空,于是就参照网上的各种教程,搭建了一个博客。现在把 Hexo + GitHub Pages 搭建博客的完整过程记录下来:
<p><strong>大概流程</strong>:<br>
1. 搭建 Node.js 环境<br>
2. 搭建 Git 环境<br>
3. GitHub 注册和配置<br>
4. 安装配置 Hexo<br>
4000

5. 关联 Hexo 与 GitHub Pages<br>
6. GitHub Pages 地址解析到个人域名<br>
7. Hexo 的常用操作<br>
8. 结束语</p>
<h2
id="nodejs"><a
class="headeranchor-link"
name="user-content-nodejs"
href="#nodejs"></a>搭建 Node.js 环境</h2>
<blockquote>
<p>为什么要搭建 Node.js 环境? - 因为 Hexo 博客系统是基于 Node.js 编写的</p>

</blockquote>
<p>Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,可以在非浏览器环境下,解释运行 JS 代码。</p>
<p>在 Node.js 官网:<a
href="https://nodejs.org/en/">https://nodejs.org/en/</a>
下载安装包 <code>v8.9.4 LTS</code></p>
<p>保持默认设置即可,一路Next,安装很快就结束了。</p>
* 然后打开命令提示符,输入 <code>node -v</code>、<code>npm
-v</code>,出现版本号则说明 Node.js 环境配置成功,第一步完成!!!</p>
* npm 是node.js的工具包,里面包含了很多优秀程序员开发的工具和库。
<p><img
src="http://oph264zoo.bkt.clouddn.com/17-5-28/25738843.jpg"
alt=""></p>
<h2
id="git"><a
class="headeranchor-link"
name="user-content-git"
href="#git"></a>搭建 Git 环境</h2>
<blockquote>
<p>为什么要搭建 Git 环境? - 因为需要把本地的网页和文章等提交到 GitHub 上。</p>

</blockquote>
<p>Git 是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。</p>
<p>在 Git 官网:<a
href="https://git-scm.com/">https://git-scm.com/</a>
下载安装包 <code>Git-2.13.0-64-bit.exe</code></p>
<p><img
src="http://oph264zoo.bkt.clouddn.com/17-5-28/62582265.jpg"
alt=""></p>
<p>桌面右键,打开
<code>Git Bush Here</code>,输入
<code>git --version</code>,出现版本号则说明 Git 环境配置成功,第二步完成!!!</p>
<p><img
src="http://oph264zoo.bkt.clouddn.com/17-5-28/13485948.jpg"
alt=""></p>
<h2
id="github"><a
class="headeranchor-link"
name="user-content-github"
href="#github"></a>GitHub 注册和配置</h2>
<p>GitHub 是一个代码托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub。</p>
<p>Github注册:<a
href="https://github.com/">https://github.com/</a></p>
<p><iframe
id="iframe_0.5607328742099007"
src="data:text/html;charset=utf8,%3Cstyle%3Ebody%7Bmargin:0;padding:0%7D%3C/style%3E%3Cimg%20id=%22img%22%20src=%22http://img.mukewang.com/57eea87a0001c62213450582.png?_=6927340%22%20style=%22border:none;max-width:701px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.5607328742099007',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E"
style="border: none; width: 701px; height: 303px;"
frameborder="0"
scrolling="no"></iframe></p>
<p>创建仓库:Repository name 使用自己的用户名,仓库名规则:</p>
<p><strong>注意</strong>:<code>yourname</code>
必须是你自己的用户名。</p>
<pre><code>yourname/yourname.github.io
</code></pre>
<p><img
src="http://oph264zoo.bkt.clouddn.com/17-5-28/42622869.jpg"
alt=""></p>
<p>访问 yourname.github.io,如果可以正常访问,那么 Github 的配置已经结束了。</p>
<p>到此搭建 Hexo 博客的相关环境配置已经完成,下面开始讲解 Hexo 的相关操作</p>
<h2
id="hexo"><a
class="headeranchor-link"
name="user-content-hexo"
href="#hexo"></a>安装配置 Hexo</h2>
<p>Hexo 是一个快速、简洁且高效的博客框架,使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。</p>
<p>强烈建议你花20分钟区读一读 Hexo 的官方文档:<a
href="https://hexo.io/zh-cn/">https://hexo.io/zh-cn/</a></p>
<p><img
src="http://oph264zoo.bkt.clouddn.com/17-5-28/49821520.jpg"
alt=""></p>
<p><strong>使用 npm 安装 Hexo</strong>:在命令行中输入</p>
<pre><code>npm install hexo-cli -g
</code></pre>
<p>然后你将会看到下图,可能你会看到一个<code>WARN</code>,但是不用担心,这不会影响你的正常使用。</p>
<p><img
src="http://oph264zoo.bkt.clouddn.com/17-5-28/41219383.jpg"
alt=""></p>
<p>查看Hexo的版本</p>
<pre><code>hexo version
</code></pre>
<p><img
src="http://oph264zoo.bkt.clouddn.com/17-5-29/81453389.jpg"
alt=""></p>
<p>安装 Hexo 完成后,请执行下列命令来初始化 Hexo,用户名改成你的,Hexo 将会在指定文件夹中新建所需要的文件。</p>
<pre><code>hexo init bestGao.github.io

cd bestGao.github.io

npm install
</code></pre>
<p>新建完成后,指定文件夹的目录如下:</p>
<pre><code>.
├── .deploy #需要部署的文件
├── node_modules #Hexo插件
├── public #生成的静态网页文件
├── scaffolds #模板
├── source #博客正文和其他源文件,404、favicon、CNAME 都应该放在这里
| ├── _drafts #草稿
| └── _posts #文章
├── themes #主题
├── _config.yml #全局配置文件
└── package.json #npm 依赖等
</code></pre>
<p><strong>运行本地 Hexo 服务</strong></p>
<pre><code>hexo server
或者
hexo s
</code></pre>
<p>您的网站会在
<a
href="http://localhost:4000/">http://localhost:4000</a> 下启动。如果
<a
href="http://localhost:4000/">http://localhost:4000</a> 能够正常访问,则说明 Hexo 本地博客已经搭建起来了,只是本地哦,别人看不到的。下面,我们要部署到Github。</p>
<p><img
src="http://oph264zoo.bkt.clouddn.com/17-5-28/34921926.jpg"
alt=""></p>
<p><strong>注意1</strong>:执行hexo
server提示找不到该指令</p>
<p>解决办法:在Hexo 3.0 后server被单独出来了,需要安装server,安装的命令如下:</p>
<pre><code>sudo npm install hexo-server
或者
npm install hexo -server --save
</code></pre>
<h2
id="hexo-github-pages"><a
class="headeranchor-link"
name="user-content-hexo-github-pages"
href="#hexo-github-pages"></a>关联 Hexo 与 GitHub Pages</h2>
<p>我们如何让本地git项目与远程的github建立联系呢?用 SSH keys</p>
<p><strong>生成SSH keys</strong></p>
<p>输入你自己的邮箱地址</p>
<pre><code>ssh-keygen -t rsa -C "80583600@qq.com"
</code></pre>
<p>在回车中会提示你输入一个密码,这个密码会在你提交项目时使用,如果为空的话提交项目时则不用输入,我们按回车不设置密码。</p>
<p><strong>添加 SSH Key 到 GitHub</strong></p>
<p>打开
<code>C:\Users\bxm09\.ssh\id_rsa.pub</code>,此文件里面内容为刚才生成的密钥,准确的复制这个文件的内容,粘贴到
<a
href="https://github.com/settings/ssh">https://github.com/settings/ssh</a>
的 <code>new SSH key</code> 中</p>
<p><strong>测试</strong></p>
<p>可以输入下面的命令,看看设置是否成功,git@github.com的部分不要修改:</p>
<pre><code>ssh -T git@github.com
</code></pre>
<p>如果是下面的反馈:</p>
<blockquote>
<p>The authenticity of host ‘github.com (207.97.227.239)’ can’t be established.<br>
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.<br>
Are you sure you want to continue connecting (yes/no)?</p>

</blockquote>
<p>不要紧张,输入yes就好,然后会看到:</p>
<pre><code>Hi aierui! You've successfully authenticated, but GitHub does not
provide shell access.
</code></pre>
<p><strong>配置Git个人信息</strong></p>
<p>现在你已经可以通过 SSH 链接到 GitHub 了,还有一些个人信息需要完善的。<br>
Git 会根据用户的名字和邮箱来记录提交。GitHub 也是用这些信息来做权限的处理,输入下面的代码进行个人信息的设置,把名称和邮箱替换成你自己的。</p>
<pre><code>git config --global user.name "bestGao"
git config --global user.email "80583600@qq.com"
</code></pre>
<p><strong>配置 Deployment</strong></p>
<p>在<code>_config.yml</code>文件中,找到<code>Deployment</code>,然后按照如下修改,用户名改成你的:</p>
<p>需要注意的是:冒号后面记得空一格!</p>
<pre><code># Deployment
## Docs: https://hexo.io/docs/deployment.html deploy:
type: git
repo: git@github.com:bestGao/bestGao.github.io.git
branch: master
</code></pre>
<p><strong>本地文件提交到 GitHub Pages</strong></p>
<pre><code>// 删除旧的 public 文件
hexo clean

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

// 开始部署
hexo deploye
或者
hexo d
</code></pre>
<p>在浏览器中输入
<a
href="https://bestGao.github.io/">https://bestGao.github.io</a> (用户名改成你的)看到了
Hexo 与 GitHub Pages 已经成功关联了,哇哇哇哇哇哇,开心死你了,不要忘了回来给我点赞哟 ~</p>
<p><strong>注意1</strong>:若上面操作失败,则需要提前安装一个扩展:</p>
<pre><code>npm install hexo-deployer-git --save
</code></pre>
<p><strong>注意2</strong>:如果在执行
<code>hexo d</code> 后,出现
<code>error deployer not found:github</code> 的错误(如下),则是因为没有设置好
public key 所致,重新详细设置即可。</p>
<blockquote>
<p>Permission denied (publickey).<br>
fatal: Could not read from remote repository.<br>
Please make sure you have the correct access rights<br>
and the repository exists.</p>

</blockquote>
<p><strong>注意3</strong>:怎么避免
.md 文件被解析?</p>
<p>Hexo原理就是hexo在执行hexo generate时会在本地先把博客生成的一套静态站点放到public文件夹中,在执行hexo deploy时将其复制到.deploy文件夹中。Github的版本库通常建议同时附上README.md说明文件,但是hexo默认情况下会把所有md文件解析成html文件,所以即使你在线生成了
README. md,它也会在你下一次部署时被删去。怎么解决呢?</p>
<p>在执行hexo deploy前把在本地写好的README.md文件复制到.deploy文件夹中,再去执行hexo deploy。</p>
<h2
id="github-pages"><a
class="headeranchor-link"
name="user-content-github-pages"
href="#github-pages"></a>GitHub Pages 地址解析到个人域名</h2>
<blockquote>
<p>Github Pages 是面向用户、组织和项目开放的公共静态页面搭建托管服 务,站点可以被免费托管在 Github 上,你可以选择使用 Github Pages 默 认提供的域名 github.io 或者自定义域名来发布站点。</p>

</blockquote>
<p>看着博客的域名是二级域名,总有一种寄人篱下的感觉,为了让这个小窝看起来更加正式,我在阿里云上买了一个域名,打算将博客绑定自己的域名。</p>
<p>进行该绑定过程,其实就是一个重定向的过程。</p>
<p>在 GitHub 仓库的根目录下建立一个
<code>CNAME</code> 的文本文件(注意:没有扩展名),文件里面只能输入一个你的域名,不能加<code>http://</code></p>
<pre><code>www.lovebxm.com
</code></pre>
<p>注意:CNAME 一定是在你 Github 项目的 master 根目录下</p>
<p>进入<a
href="https://dc.aliyun.com/tcparse/dns.htm">阿里云域名解析地</a>址,添加解析:</p>
<ol>
<li>记录类型选择<code>CNAME</code></li>
<li>主机记录填<code>www</code></li>
<li>解析线路选择<code>默认</code></li>
<li>记录值填<code>yourname.github.io</code></li>
<li>TTL值为<code>10</code>分钟</li>
<li>再添加一个解析,记录类型<code>A</code></li>
<li>主机记录填<code>www</code></li>
<li>解析线路选择<code>默认</code></li>
<li>记录值填你GitHub 的ip地址(在cmd中ping:)</li>
</ol>
<pre><code>ping bestGao.github.com
</code></pre>
<p><img
src="http://oph264zoo.bkt.clouddn.com/17-5-29/79989003.jpg"
alt=""></p>
<p>点击保存,等 1 分钟,访问下你自己的域名,一切就ok了。</p>
<p>域名绑定成功,域名解析成功,因此你在浏览中输入
<a
href="http://www.lovebxm.com/">www.lovebxm.com</a>,或 lovebxm.com 就可以访问到博客了,输入
bestGao.github.io 会重定向到 <a
href="http://www.lovebxm.com/">www.lovebxm.com</a>。过程:www
的方式,会先解析成 <a
href="http://xxxx.github.io/">http://xxxx.github.io</a>,然后根据
CNAME 再变成 www</p>
<p><strong>注意</strong>:CNAME文件在下次
<code>hexo deploy</code>的时候就消失了,需要重新创建,这样就很繁琐</p>
<p>方法一:每次
<code>hexo d</code> 之后,就去 GitHub 仓库根目录新建 CNAME文件</p>
<p>方法二:在
<code>hexo g</code> 之后,
<code>hexo d</code> 之前,把CNAME文件复制到 “\public" 目录下面,里面写入你要绑定的域名。</p>
<p>方法三(推荐):将需要上传至github的内容放在source文件夹,例如CNAME、favicon.ico、images等,这样在 hexo d 之后就不会被删除了。</p>
<p>方法四:通过安装插件实现永久保留</p>
<pre><code>$ npm install hexo-generator-cname --save
</code></pre>
<p>之后在_config.yml中添加一条</p>
<pre><code>plugins:
- hexo-generator-cname
</code></pre>
<p>需要注意的是:如果是在github上建立的CNAME文件,需要先clone到本地,然后安装插件,在deploy上去即可。CNAME只允许一个域名地址。</p>
<p><strong>注意1</strong>:每次生成的
CNAME 都是 yoursite.com 怎么解决?</p>
<p>修改 _config.yml</p>
<pre><code>url: http://www.lovebxm.com root: /
permalink: :year/:month/:day/:title/
permalink_defaults:
</code></pre>
<h2
id="hexo_1"><a
class="headeranchor-link"
name="user-content-hexo_1"
href="#hexo_1"></a>Hexo 的常用操作</h2>
<h3
id="_1"><a
class="headeranchor-link"
name="user-content-_1"
href="#_1"></a>发表一篇文章</h3>
<pre><code>hexo new "文章标题"

D:\GitHub\Hexo\test>hexo new "文章标题"
INFO Created: D:\GitHub\Hexo\test\source\_posts\文章标题.md
</code></pre>
<p>在本地博客文件夹
<code>source\_posts</code> 文件夹下看到我们新建的 markdown
文件。</p>
<p>当然,我们也可以手动添加Markdown文件在source->_deploy文件夹下,其效果同样可以媲美<code>hexo
new</code></p>
<p>文章编辑好之后,运行生成、部署命令:</p>
<pre><code>hexo clean

hexo g

hexo d
</code></pre>
<p>当然你也可以执行下面的命令,相当于上面两条命令的效果</p>
<pre><code>hexo clean

hexo d -g
</code></pre>
<h3
id="_2"><a
class="headeranchor-link"
name="user-content-_2"
href="#_2"></a>新建一个自定义页面</h3>
<pre><code>hexo new page folder
</code></pre>
<h3
id="_3"><a
class="headeranchor-link"
name="user-content-_3"
href="#_3"></a>文章如何添加多个标签</h3>
<p>有两种多标签格式</p>
<pre><code>tags: [a, b, c]

tags:
- a
- b
- c
</code></pre>
<h3
id="_4"><a
class="headeranchor-link"
name="user-content-_4"
href="#_4"></a>显示部分文章内容</h3>
<p>如果在博客文章列表中,不想全文显示,可以增加
<code><!-- more --></code>,
后面的内容就不会显示在列表。</p>
<pre><code><!--more-->
</code></pre>
<h3
id="_5"><a
class="headeranchor-link"
name="user-content-_5"
href="#_5"></a>更改主题</h3>
<p>官方主题库:<a
href="https://hexo.io/themes/">https://hexo.io/themes/</a></p>
<p>Hexo主题非常,推荐使用
<code>Next</code> 为主题,请阅读 Next 的官方文档(
<a
href="http://theme-next.iissnan.com/">http://theme-next.iissnan.com/</a> ),5
分钟快速安装。</p>
<p>再提示一点,大家可以hexo主题修改一步就hexo s看下变化,初次接触对参数不清楚。只有hexo s后在可以在本地浏览到效果,Ctrl+C 停止服务器。</p>
<h3
id="_6"><a
class="headeranchor-link"
name="user-content-_6"
href="#_6"></a>添加插件</h3>
<p>添加 sitemap 和 feed 插件</p>
<p>切换到你本地的 hexo 目 CIA ,在命令行窗口,输入以下命令</p>
<pre><code>npm install hexo-generator-feed -save
npm install hexo-generator-sitemap -save
</code></pre>
<p>修改
<code>_config.yml</code>,增加以下内容</p>
<pre><code># Extensions
Plugins:
- hexo-generator-feed
- hexo-generator-sitemap
#Feed Atom
feed:
type: atom
path: atom.xml
limit: 20
#sitemap
sitemap:
path: sitemap.xml
</code></pre>
<p>再执行以下命令,部署服务端</p>
<pre><code>hexo d -g
</code></pre>
<p>配完之后,就可以访问
<a
href="https://bestGao.github.io/atom.xml">https://bestGao.github.io/atom.xml</a>
和 <a
href="https://bestGao.github.io/sitemap.xml">https://bestGao.github.io/sitemap.xml</a>
,发现这两个文件已经成功生成了。</p>
<h3
id="404"><a
class="headeranchor-link"
name="user-content-404"
href="#404"></a>添加 404 页面</h3>
<p>GitHub Pages 自定义404页面非常容易,直接在根目录下创建自己的404.html就可以。但是自定义404页面仅对绑定顶级域名的项目才起作用,GitHub默认分配的二级域名是不起作用的,使用hexo server在本机调试也是不起作用的。</p>
<p><img
src="http://oph264zoo.bkt.clouddn.com/17-5-29/38118493.jpg"
alt=""></p>
<p>其实,404页面可以做更多有意义的事,来做个404公益项目吧。</p>
<p>推荐使用腾讯公益404
<a
href="http://www.qq.com/404/">http://www.qq.com/404/</a> :</p>
<pre><code><script type="text/javascript"
src="//qzonestyle.gtimg.cn/qzone/hybrid/app/404/search_children.js"
charset="utf-8"
homePageUrl="http://www.lovebxm.com/"
homePageName="回到我的主页">
</script>
</code></pre>
<p>复制上面代码,贴粘到目录下新建的404.html即可!</p>
<h3
id="pc"><a
class="headeranchor-link"
name="user-content-pc"
href="#pc"></a>多PC同步管理博客</h3>
<p>很多人可能家里一台笔记本,公司一个台式机,想两个同时管理博客,同时达到备份的博客主题、文章、配置的目的。下面就介绍一下用github来备份博客并同步博客。</p>
<ol>
<li>A电脑备份博客内容到github</li>
</ol>
<p>配置.gitignore文件。进入博客目录文件夹下,找到此文件,用sublime text 打开,在最后增加两行内容/.deploy_git和/public</p>
<ol>
<li>初始化仓库。</li>
</ol>
<p>在博客根目录下,在git bash下依次执行git init和git remote add origin 为远程仓库地址。</p>
<ol>
<li>同步到远程仓库。</li>
</ol>
<p>gitbash下依次执行以下命令</p>
<pre><code>git add . #添加目录下所有文件

git commit -m "更新说明" #提交并添加更新说明

git push -u origin master #推送更新到远程仓库
</code></pre>
<ol>
<li>B电脑拉下远程仓库文件</li>
</ol>
<p>在B电脑上同样先安装好node、git、ssh、hexo,然后建好hexo文件夹,安装好插件,(然后选做:将备份到远程仓库的文件及文件夹删除),然后执行以下命令:</p>
<pre><code>git init

git remote add origin <server>

git fetch --all

git reset --hard origin/master
</code></pre>
<ol>
<li>发布博客后同步</li>
</ol>
<p>在B电脑发布完博客之后,记得将博客备份同步到远程仓库<br>
执行以下命令:</p>
<pre><code>git add .

#可以用git master 查看更改内容

git commit -m "更新信息"

git push -u origin master #以后每次提交可以直接git push
</code></pre>
<p>平时同步管理<br>
每次想写博客时,先执行:git pull进行同步更新。发布完文章后同样按照上面的 发布博客后同步 同步到远程仓库。</p>
<h3
id="_7"><a
class="headeranchor-link"
name="user-content-_7"
href="#_7"></a>中文乱码</h3>
<p>在 md 文件中写中文内容,发布出来后为乱码,原因是 md 的编码不对,将 md 文件另存为<code>UTF-8</code>编码的文件即可解决问题。</p>
<h2
id="_8"><a
class="headeranchor-link"
name="user-content-_8"
href="#_8"></a>结束语</h2>
<p>建站的系统有很多,如:<br>
- <a
href="https://hexo.io/zh-cn/">Hexo + GitHub Pages</a><br>
- <a
href="http://jekyll.com.cn/">Jekyll + GitHub Pages</a><br>
- <a
href="https://cn.wordpress.org/">WordPress + 服务器 + 域名</a><br>
- <a
href="http://www.dedecms.com/">DeDeCMS + 服务器 + 域名</a><br>
- …</p>
<p>使用 Hexo + GitHub Pages 建站,有优点也有缺点:<br>
- GitHub Pages 不支持数据库管理,所以你只能做静态页面的博客,不能像其他博客(如 WordPress)那样通过数据库管理自己的博客内容。<br>
- 但是,GitHub Pages 无需购置服务器,免服务器费的同时还能做负载均衡,github pages有300M免费空间。<br>
- 个人博客真的有必要用数据库吗?答案是否定的。博客静态化,评论记录使用第三方的 <a
href="https://gentie.163.com/info.html">网易云跟帖</a>就可以了。静态的博客更有利于搜索引擎蜘蛛爬取,轻量化的感觉真的很好。<br>
- 通过 Hexo 你可以轻松地使用 Markdown 编写文章,非常符合我的口味。Markdown 真的是专门针对程序员开发的语言啊,现在感觉没有 Markdown什么都不想写。什么富文本编辑器,什么word,太麻烦了!而且样式都好丑!效率太低!</p>
<p>推荐几个很好用的在线 Markdown 编辑器:<br>
- 作业部落:<a
href="https://www.zybuluo.com/mdeditor">https://www.zybuluo.com/mdeditor</a><br>
- 马克飞象:<a
href="https://maxiang.io/">https://maxiang.io</a></p>
<p>推荐图床:<br>
- <a
href="https://jiantuku.com/#/">极简图床 + chrome 插件 + 七牛空间</a>,七牛云储存提供10G的免费空间,以及每月10G的流量,存放个人博客外链图片最好不过了,七牛云储存还有各种图形处理功能、缩略图、视频存放速度也给力。</p>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: