Github Pages+Hexo博客教程

谷歌搞定一切,搞不定,问GF。
能找到一个自己写点东西而且不用被注册手机号码的平台,不易。
所以,有了今天的第一篇博文。

前言

如果想拥有自己的公开博客,程序员也好,文字爱好者也罢,通常有三种方式:
1 在现有博客平台上注册,方便上手主题直接用,博客园、CSDN、新浪、腾讯和网易LOFTER(有一点小逼格,以摄影爱好者为主)
2 利用博客框架搭建,专注内容,WordPress,Jekyll,hexo
3 自己写一个网站

1-简单,会被删帖删号。2-比较折腾,需要购买自己的服务器,如果内容太多而的话。3-对前端编程能力要求比较高,当然也需要自己维护,如果你想,就去吧。这里我用的是第二种github pages+hexo,花费了两个小时搭建完成。

环境

Windows:
安装node.js和git,node.js无脑下载双击安装,git也是。下载后,可以稍微研究下git,以及github使用。简单来说,它的作用是完成多人协同工程和版本管理,以及分享你的代码到网络,你要是简单理解为工程文件的双向云同步,也没问题。
记住,账号是核心,git全局账号、名称最好跟github一致。鉴于github有个人资源大小1GB的限制,单独为自己的博客注册一个github账号。
建立和注册github账号。教程网上一大堆,小懂点英语的人都可以,不懂,猜也行。

完成这些后,你最好也习惯下在cmd/git bash下敲命令行,对当前的工作目录/工作文件夹有个概念,所有东西都离不开内容,这个意思。

如果想快速知道如何使用和建立起概念,点击Git, github

Mac:
由于mac系统自带了npm工具,所以只需要安装git,同理无脑安装。其后所有过程基本和windows差不多,有不一样的我会特别指出来。

建立个人主页

利用Github Pages构建免费站点,网址以username.github.io结尾,如果嫌丑,以后自己买域名。
假设你已经熟悉github,在github上新建repo,工程名写成USERNAME.github.io,名字注意和自己GitHub的用户名保持一致,否则会出问题。其他设置不用管。如果需要用hexo建博客,到此为止。

以下可选(如果需要自己编辑网页):
然后,setup-desktop/或者使用git建立链接,本地编辑并保存index.html–此时为一静态网页,上传至github远程仓库
Done!此时你已经有自己的网站了,可以直接访问,然而,没什么内容,你还需要研究排版、样式等很多html知识,所以,我的方案是githubio+hexo。

Hexo

检查安装环境

进入cmd/git bash

1
2
npm -v
node -v

命令行安装hexo:

1
npm install hexo-cli -g

建立Hexo工程

windows:
在当前目录创建文件夹MyHexoProj,同时也是工程目录
新建hexo工程,也就是你的网页内容所在,往后你所有的内容编辑、样式修改都跟这个工程有关。

1
hexo init MyHexoProj

cd进入该MyHexoProj目录后
Mac:

1
2
3
mkdir YourFolder
cd YourFolder
hexo init

安装github的发布插件

1
npm install hexo-deployer-git --save

本地发布和查看

1
2
3
hexo clean
hexo g(enerate)
hexo server

到这,你的hexo网页已经构建好了,可以在本地Local4000端口查看构建好的静态网页。

发布到githubio

修改发布方式:
根目录下的_config.yml,当然,细心的你还可以修改其他无关紧要的内容。
deploy:
type: git
repo: git@github.com:kangzhi/kangzhi.github.io.git
branch: master
(冒号后空格,注意这里我们一般是通过ssh访问,所以链接贴ssh,不是https)

1
2
hexo clean
hexo g

发布到githubio

1
2
3
hexo d
//或者一行代码代替
hexo d -g

中途可能遇到无法链接到GitHub的问题(其实就是建立远程仓库链接问题,如果之前没建立过,可能会有这个坑)输入:

1
ssh git@github.com

检测是否连接到远程,如出现’Hi XXX! You’ve successfully authenticated, but GitHub does not provide shell access.Connection to github.com closed.’说明你链接成功了。
如果不是,恭喜,顺便陪你再复习下和github远程仓库建立ssh链接:

1
ssh-keygen -t rsa -C "your_email@youremail.com"

一路回车,然后打开C/users/你的用户名/.ssh/文件夹里面id_rsa.pub,记事本打开全部复制。在github->settings里新建SSH连接,随便起个名字,粘贴内容。
再次检测,Done。
此时,可以到网站上去查看你全新的网页了。

编辑和个性化

hexo支持markdown编辑,在你的MyHexoProj/source/_post目录下,有一个hello-world.md的markdown文本,他就是你的默认第一篇博客。
新建你自己的第一篇文章:

1
hexo new "Your Title"

此时,该目录下会有一个新的“Your Title.md”文件,开启你的书写之旅吧。

如果想了解下markdown,可以推荐几个好用的编辑器:
markdown编辑器

hexo支持markdown编辑,关于他的争议见仁见智,如果你只想专注于你的内容而非排版,花十分钟了解和上手还是很值得的。
cmd markdown(登陆体验差)
Haroopad

windows平台:
markdown pad
论文幻灯片用Modoko
MarkPad

Mac平台:
Mou,暂时不支持OSX Sieera,强推
macdown

IOS:
Drafts,Day one(收费)

马克飞象

最终使用:Typora(mac+windows)

设置主题

更换主题:
hexo默认的主题是landscape,比较简约大气的一个主题,你可以自己更换背景图片之类的。当然,各有所爱,你可以选择设置成自己喜欢的主题,基本就是下载资源,然后修改相应的配置文件就可以了,这是主题的集合链接
这里推荐几个比较符合中国人习惯的主题:iissnan/yilia/jacman/packman
以yilia举例说明下如何设置:

1
git clone https://github.com/litten/hexo-theme-yilia.git themes/yilia

相当于将资源下载到你的工程目录,然后设置根目录了yml文件下:
theme: yilia
更换背景图片:
添加一张图片到themes/next/spource/images
themes/next/source/css/_custom/custom.styl增加:
body
{
background-image:url(/images/background1.png);
background-repeat: no-repeat;
background-attachment:fixed;
background-position:50% 50%;
}
添加动态特效:
在主题文件config.yml中设置canvas_nest:true
Done!发布你的网站,就成另外一个样子了。如果想做其他细节的设置,到themes/yilia目录的yml文件,修改里面的各种配置参数就可以。

个人使用主题记录:
1Next.Pisces
2hexo-theme-Butterfly

域名和备案

source下面有CNAME文件

博客迁移和部署

hexo的宗旨是不管你在哪里,只要拥有博客内容(比如说md文件),都可以在半个小时之搭建起你的博客,迁移非常方便和省事。
开始之前,你需要先搞清楚两件事,博客的备份+迁移,博客的异地部署是两件事。如果你搞混淆了,那么网络上所有的教程只会越看越乱。

备份和迁移

首先,假设已经有完整的工程了,hexo整个工程目录结构如下:

  • .deploy_git : 执行hexo deploy命令部署到GitHub上的内容目录
  • node_modules
  • public : hexo generate的输出,输出的静态网页内容目录
  • scaffolds : layout模板文件目录,其中的md文件可以添加编辑
  • source : 文章源码目录,该目录下的markdown和html文件均会被hexo处理。该页面对应repo的根目录,404文件、favicon.ico文件
  • themes : 主题文件目录
  • .gitignore
  • _config.yml : 全局配置文件,大多数的设置都在这里
  • db.json
  • package.json : 应用程序数据,指明hexo的版本等信息,类似于一般软件中的关于按钮
  • package-lock.json

可以看到,理论上,迁移博客你需要迁移的核心内容是:
scaffolds+source+themes+.gitignore+_config.yml+package.json+packagelock.json
所以迁移的过程如下:
将上述目录copy到新的电脑/目录
A 暴力拷贝
完事了,直接copy过去,就完成迁移了。百度云、坚果云、硬盘、U盘随意用。

B 在github上新建分支hexo

  • 先进行远程同步,再拉去到异地的目录。所有你编辑、同步、拉取的都是你要迁移的文件目录。所以这里唯一需要注意的就是,设置正确的gitignore,管理好你的资源内容,而不是博客的发布/生成内容。
  • githubio有默认的master分支,这就是静态的网站。也就是config.yml里配置好的部署目标。
  • 增加一个新的分支,hexo,gitignore里设置只需要同步
    scaffolds/source/themes/config.yml/package.json
  • 管理仓库,编写更新推送就完事了。

注意事项
如果你之前克隆过theme中的主题文件,那么应该把主题文件中的.git文件夹删掉,因为git不能嵌套上传,最好是显示隐藏文件,检查一下有没有,否则上传的时候会出错,导致你的主题文件无法上传,这样你的配置在别的电脑上就用不了了。

博客部署

所以,部署要做的事情,就是在本地安装好环境,然后通过SSH建立和githubio托管服务器的远程连接。

  1. 在新的电脑/目录配置环境
    安装node
    安装npm
    安装hexo

    1
    2
    npm install
    npm install -g hexo-cli

    以下不一执行,因为npm install已经执行了所有必要包的操作。

    1
    2
    3
    npm install hexo-deployer-git --save
    npm install hexo-generator-feed --save
    npm install hexo-generator-sitemap --save

这里遇到hexo command not found 的问题:

1
2
3
sudo apt-get update
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs

先把node升级到最新版本12
然后重新安装hexo

1
2
sudo npm install hexo -g
hexo -v

输出正确信息,OK

  1. 由于编辑的博客本质上还是要通过github pages托管,所以你需要配置git上的ssh密钥。
  • 查看ssh是否存在 到~/.ssh 目录下查看,或者直接输入 ls -al ~/.ssh
    如果不存在,则只有known_hosts
  • 任意路径 ssh-keygen -t rsa -C “your_email@example.com“ //这里邮箱随便填,不一定必须跟githubio的账户邮箱一致,这里甚至是表明你以一个本地git用户的身份和远程建立连接
    现在,生成了id_rsa文件和id_rsa.pub文件,前面是私有密钥,后面是公有密钥,可以任意公开。
  • 在githubio的博客账户settings里找到增加SSHKey项目,新建一个SSHKey,将id_rsa.pub的内容复制进去。
    这样你的本地git就和远程仓库建立了连接。如果你有多台设备,你可以将这些设备都添加到github上去。
  • 验证 ssh-T git@github.com
    3. git init 如果之前不小心生成了.deploygit目录,全部删除,重新生成
  1. 正常的hexo发布流程 hexo clean/ hexo g -> hexo d // hexo d -g

个人迁移记录

  • 备份文件:直接复制原工程下必要的文件夹,到ubuntu的新系统
  • 安装:安装node/npm/hexo,期间遇到问题 node/npm安装版本太低,导致hexo一直安装不成功。 解决办法如上述。
  • 环境:git全局是一个账号,github博客是另一个账号。SSHkey使用的是非githubio邮箱。
  • 全局账号配置:git config –global user.name “Mona Lisa”
  • 局部配置:git config user.name “Mona Lisa”

之后hexo clean-hexo g 均没有问题,但是hexo d 报错:
Error: EACCES: permission denied, unlink ‘/home/cs18/_Blog/.deploy_git/archives/index.html’
看提示应该是权限问题,到文件夹下查看.deploygit的很多文件都上了锁。猜测可能是在git初始化以前就生成了某些文件。
删除该目录,重新生成发布。
OK。

进一步测试:是否必须是git仓库才可以发布。
hexo clean 删除public文件夹,deploygit仍然存在
删除.git文件夹,hexo d -g 一切OK。
所以博客的文件目录不是必须为git,hexo的部署命令和git push到远程仓促并不是同一性质。

附件未整理

hexo+阿里云https://blog.csdn.net/NoCortY/article/details/99631249?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

picGo+Aliyun搭建图床 - 将网站托管到阿里云并进行备案?https://www.cnblogs.com/Gentleaves/p/12615168.htmlhttps://blog.csdn.net/kai123wen/article/details/104027802https://blog.csdn.net/qq_35742333/article/details/103652796

【github详细使用教程】一个博客详细介绍 winhttps://blog.csdn.net/Hanani_Jia/article/details/77950594mac githubhttps://www.jianshu.com/p/6d9e581a720d

【githubio+hexo】https://zhuanlan.zhihu.com/p/26625249https://zhuanlan.zhihu.com/p/22191919
https://commitlogs.com/2016/09/03/how-to-build-blog-with-hexo/(包含极简github上手https://zhuanlan.zhihu.com/p/21438729)
https://zhangslob.github.io/2017/02/28/%E6%95%99%E4%BD%A0%E5%85%8D%E8%B4%B9%E6%90%AD%E5%BB%BA%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2%EF%BC%8CHexo-Github/https://zhuanlan.zhihu.com/p/22274983https://www.zhihu.com/question/39183612/answer/80082259

附带多电脑终端的解决方案mac上配置详细 https://blog.csdn.net/yanzi1225627/article/details/54566792其他参考:https://blog.csdn.net/liu_wentao/article/details/70174508https://blog.csdn.net/qianqianstd/article/details/55823691
【主题】jackman/pacman考虑最终两个主题nexthttps://github.com/iissnan/hexo-theme-next/blob/master/README.cn.mdyiliahttps://github.com/litten/hexo-theme-yilia
https://dandyxu.me/https://acris.me/ 比较推荐我的配置,详细:http://theme-next.iissnan.com/getting-started.html
一个好看的背景图片网站https://blog.csdn.net/lemonxq/article/details/78578650[https:](https://source.unsplash.com/)[//source](https://source.unsplash.com/)[.unsplash](https://source.unsplash.com/)[.com](https://source.unsplash.com/)[/](https://source.unsplash.com/)【迁移和备份】https://www.jianshu.com/p/4e068f4dd726https://blog.csdn.net/qq_27803491/article/details/78132920https://www.jianshu.com/p/beb8d611340a

【插入图片解决方案】一直上传到HEXO目录的话,时间久了以后太占空间了,所以,用其他解决方案:https://www.v2ex.com/t/298315
总结来就是:Mweb外部文档模式 +七牛 markeditorhttps://github.com/liyaodong/image-uploader
https://blog.csdn.net/crazy1235/article/details/78570367https://www.jianshu.com/p/c859ead1b493
最后用的贴图库,一键生成markdown外链地址【建立相册】https://blog.csdn.net/u013082989/article/details/70162293https://blog.csdn.net/weixin_42556146/article/details/80825258
https://timding.top/http://lawlite.me/https://blog.jamespan.me/favorite/?spm=a2c4e.11153940.blogcont4200.4.7af2567aXlE89Ghttps://yq.aliyun.com/articles/4200
这个不错图床实现:https://www.jianshu.com/p/7f6425b3ffb2