hexo部署到github
本文是转载自别人的详细教程:
安装Node.js
首先下载稳定版
我这里给的是64位的。
安装选项全部默认,一路点击Next
。
最后安装好之后,按Win+R
打开命令提示符,输入node -v
和npm -v
,如果出现版本号,那么就安装成功了。
添加国内镜像源
如果没有梯子的话,可以使用阿里的国内镜像进行加速。
1 | npm config set registry https://registry.npm.taobao.org |
安装Git
为了把本地的网页文件上传到github上面去,我们需要用到分布式版本控制工具————Git
Git - Downloading Packagegit-scm.com
安装选项还是全部默认,只不过最后一步添加路径时选择Use Git from the Windows Command Prompt
,这样我们就可以直接在命令提示符里打开git了。
安装完成后在命令提示符中输入git --version
验证是否安装成功。
注册Github账号
接下来就去注册一个github账号,用来存放我们的网站。大多数小伙伴应该都有了吧,作为一个合格的程序猿(媛)还是要有一个的。
新建一个项目,如下所示:
然后如下图所示,输入自己的项目名字,后面一定要加.github.io
后缀,README初始化也要勾上。
然后项目就建成了,点击Settings
,向下拉到最后有个GitHub Pages
,点击Choose a theme
选择一个主题。然后等一会儿,再回到GitHub Pages
,会变成下面这样:
点击那个链接,就会出现自己的网页啦,效果如下:
安装Hexo
在合适的地方新建一个文件夹,用来存放自己的博客文件,比如我的博客文件都存放在D:\study\program\blog
目录下。
在该目录下右键点击Git Bash Here
,打开git的控制台窗口,以后我们所有的操作都在git控制台进行,就不要用Windows自带的控制台了。
定位到该目录下,输入npm i hexo-cli -g
安装Hexo。会有几个报错,无视它就行。
安装完后输入hexo -v
验证是否安装成功。
然后就要初始化我们的网站,输入hexo init
初始化文件夹,接着输入npm install
安装必备的组件。
这样本地的网站配置也弄好啦,输入hexo g
生成静态网页,然后输入hexo s
打开本地服务器,然后浏览器打开http://localhost:4000/,就可以看到我们的博客啦,效果如下:
按ctrl+c
关闭本地服务器。
连接Github与本地
首先右键打开git bash,然后输入下面命令:
1 | git config --global user.name "godweiyang" |
用户名和邮箱根据你注册github的信息自行修改。
然后生成密钥SSH key:
1 | ssh-keygen -t rsa -C "792321264@qq.com" |
打开github,在头像下面点击settings
,再点击SSH and GPG keys
,新建一个SSH,名字随便。
git bash中输入
1 | cat ~/.ssh/id_rsa.pub |
将输出的内容复制到框中,点击确定保存。
输入ssh -T git@github.com
,如果如下图所示,出现你的用户名,那就成功了。
打开博客根目录下的_config.yml
文件,这是博客的配置文件,在这里你可以修改与博客相关的各种信息。
修改最后一行的配置:
1 | deploy: |
repository修改为你自己的github项目地址。
写文章、发布文章
首先在博客根目录下右键打开git bash,安装一个扩展npm i hexo-deployer-git
。
然后输入hexo new post "article title"
,新建一篇文章。
然后打开D:\study\program\blog\source\_posts
的目录,可以发现下面多了一个文件夹和一个.md
文件,一个用来存放你的图片等数据,另一个就是你的文章文件啦。
编写完markdown文件后,根目录下输入hexo g
生成静态网页,然后输入hexo s
可以本地预览效果,最后输入hexo d
上传到github上。这时打开你的github.io主页就能看到发布的文章啦。
绑定域名
现在默认的域名还是xxx.github.io
,是不是很没有牌面?想不想也像我一样弄一个专属域名呢,首先你得购买一个域名,xx云都能买,看你个人喜好了。
以我的百度云为例,如下图所示,添加两条解析记录:
然后打开你的github博客项目,点击settings
,拉到下面Custom domain
处,填上你自己的域名,保存:
这时候你的项目根目录应该会出现一个名为CNAME
的文件了。如果没有的话,打开你本地博客/source
目录,我的是D:\study\program\blog\source
,新建CNAME
文件,注意没有后缀。然后在里面写上你的域名,保存。最后运行hexo g
、hexo d
上传到github。
备份博客源文件
有时候我们想换一台电脑继续写博客,这时候就可以将博客目录下的所有源文件都上传到github上面。
首先在github博客仓库下新建一个分支hexo
,然后git clone
到本地,把.git
文件夹拿出来,放在博客根目录下。
然后git branch -b hexo
切换到hexo
分支,然后git add .
,然后git commit -m "xxx"
,最后git push origin hexo
提交就行了。
当然我新建了一个仓库存放了源文件,具体效果可以看我的博客源文件仓库:
大家也可以先用下文hexo安装方法安装完hexo,然后直接git clone git@github.com:godweiyang/hexo-matery-modified.git
克隆我的所有源文件,然后这是我修改完的基本没bug的定制化的博客,就可以直接拿来用啦。
我这个源文件和原来的主题没有什么区别,只是我把插件都安装完了,有些小bug也修复了,所以拿来就能直接用,方便大家。
博客源代码下载
如果大家不想这么麻烦的装一堆东西,然后还要自己修改bug,那么只需要做好上面的准备工作,然后下载我的源代码,改改个人配置就行了。
大家可以直接下载下来使用,修改个人配置信息即可,当然环境要先搭好。
如果大家下载好了源代码,就可以直接使用了,基本可以跳过文章后面的部分了!喜欢的记得star并fork哦!
个性化设置(matery主题)
下面的个性化设置主要针对的是matery
主题,如果你想用我现在博客这个主题,可以直接看这个章节。
更换主题
这两天花时间将我的博客换了一个主题,现在这个主题看着更加的炫(zhuang)酷(bi),并且响应式更友好,点起来就很舒服,功能也多很多。https://link.zhihu.com/?target=https%3A//github.com/blinkfox/hexo-theme-matery)
它的文档写得也非常的详细,还有中英文两个版本,作者回复也很及时。效果图如下,可以看出非常合我的口味
但是我自己使用起来还是遇到了好几个问题,经过两天的不懈摸鱼,终于基本解决了,这里分享一下。
首先先按照文档教程安装一遍主题,然后是可以正常打开的,如果你是一般使用的话,基本没啥问题了。但是我是重度强迫症,一点小毛病就看着难受,下面列举一下我遇到的问题以及解决方法。
文章头设置
首先为了新建文章方便,建议将/scaffolds/post.md
修改为如下代码:
1 | --- |
这样新建文章后不用你自己补充了,修改信息就行。
添加404页面
原来的主题没有404页面,加一个也不是什么难事。首先在/source/
目录下新建一个404.md
,内容如下:
1 | --- |
然后在/themes/matery/layout/
目录下新建一个404.ejs
文件,内容如下:
1 | <style type="text/css"> |
“关于”页面增加简历(可选)
修改/themes/matery/layout/about.ejs
,找到<div class="card">
标签,然后找到它对应的</div>
标签,接在后面新增一个card,语句如下:
1 | <div class="card"> |
这样就会多出一张card,然后可以在/source/about/index.md
下面写上你的简历了,当然这里的位置随你自己设置,你也可以把简历作为第一个card。
解决mathjax与代码高亮的冲突
如果你按照教程安装了代码高亮插件hexo-prism-plugin
,单独使用是没有问题的,但如果你又使用了mathjax,并且按照网上教程,安装kramed
插件并修改了js文件里的正则表达式(为了解决markdown和mathjax的语法冲突),好了,那你的代码就无法高亮了。解决方法很简单,别用kramed
插件了,还用原来自带的marked
插件,直接改它的正则表达式就行了,改法如下:
打开D:\study\program\blog\node_modules\marked\lib\marked.js
escape:
处替换成:
1 | escape: /^\\([`*\[\]()#$+\-.!_>])/, |
em:
处替换成:
1 | em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/, |
这时在文章里写数学公式基本没有问题了,但是要注意: 数学公式中如果出现了连续两个{,中间一定要加空格!
增加建站时间
修改/themes/matery/layout/_partial/footer.ejs
文件,在最后加上
1 | <script language=javascript> |
然后在合适的地方(比如copyright声明后面)加上下面的代码就行了:
1 | <span id="sitetime"></span> |
修改不蒜子初始化计数
因为不蒜子至今未开放注册,所以没办法在官网修改初始化,只能自己动手了。和上一条一样,在/themes/matery/layout/_partial/footer.ejs
文件最后加上:
1 | <script> |
然后把上面几行有段代码:
1 | <% if (theme.busuanziStatistics && theme.busuanziStatistics.totalTraffic) { %> |
修改为:
1 | <% if (theme.busuanziStatistics && theme.busuanziStatistics.totalTraffic) { %> |
其实就是增加了两个style='display:none'
而已。
添加动漫人物
其实三步就行了,不用像网上有些教程那么复杂。
第一步:
1 | npm install --save hexo-helper-live2d |
第二步:
1 | npm install live2d-widget-model-shizuku |
第三步: 在根目录配置文件中添加如下代码:
1 | live2d: |
然后hexo g
再hexo s
就能预览出效果了,但是有个注意的地方,我发现这个动漫人物最好不要和不蒜子同时使用,不然不蒜子会显示不出来。
图片添加水印
为了防止别人抄袭你文章,可以把所有的图片都加上水印,方法很简单。
首先在博客根目录下新建一个watermark.py
,代码如下:
1 | # -*- coding: utf-8 -*- |
字体也放根目录下,自己找字体。然后每次写完一篇文章可以运行python3 watermark.py postname
添加水印,如果第一次运行要给所有文章添加水印,可以运行python3 watermark.py all
。
添加网易云音乐BGM
写文章的时候,想插入一段BGM怎么办?
首先打开网易云网页版,找到想听的歌曲,然后点击生成外链:
复制如下代码:
粘贴到文章里就行了,为了美观,设置一下居中,具体代码如下:
1 | <div align="middle">这里粘贴刚刚复制的代码</div> |
添加百度统计和谷歌统计代码
打开themes/matery/layout/_partial/head.ejs
,修改下面两行:
1 | <meta name="baidu-site-verification" content="fmlEuI34ir" /> |
其中content
内容改成你自己的就行了。
修复代码块行号不显示bug
修改themes/matery/source/css/matery.css
第95行左右的pre
和code
两段改为如下代码:
1 | pre { |
然后在根目录的_config.yml
中设置prism_plugin.line_number
为true
。
优化文章url路径
有教程认为,将博客目录结构改为如下,就能减少层级,有利于搜索引擎的SEO。其实不然,网站内容的层级是按照从首页开始点击几次能到达你的文章来算的,所以你改不改都是两层就到达了,不在首页的也可以通过index-archives-post
到达,跟文章url长度没有任何关系,所以如下操作作废,你想改也行,不改也行。但是建议已经建站一段时间的同学千万别改,不然会产生很多死链,并且评论issue全部会清空,很麻烦。
seo搜索引擎优化认为,网站的最佳结构是用户从首页点击三次就可以到达任何一个页面,但是我们使用hexo编译的站点打开文章的url是:sitename/year/mounth/day/title
四层的结构,这样的url结构很不利于seo,爬虫就会经常爬不到我们的文章,于是,我们可以将url直接改成sitename/title
的形式,并且title最好是用英文,在根目录的_config.yml
文件下修改permalink如下:
1 | # permalink: :year/:month/:day/:title/ |
常见问题及解答(FAQ)
这个章节主要更新许多同学在搭建博客的过程中咨询我的一些问题。
为什么本地生成完ssh key之后没有.ssh文件夹?
这是我没有想到会遇到的问题,但是很多人还是遇到了,主要问题就是在输入完ssh-keygen -t rsa -C "792321264@qq.com"
之后,很多同学没有按照提示继续输入,而是就这么结束了,然后报错了也没有发现。正确做法是按照提示,一路按回车就行了。
为什么代码块显示有问题?
代码要显示正确,要注意以下几个点: 根目录_config.yml
文件下的highlight
中的line_number
要设置为false
,因为暂时行号暂时有bug,还没有修复。 不要按照网上教程安装kramed
插件,已经装了的卸载掉。 * 修改node_modules/marked/lib/marked.js
文件中的escape
和em
两行(在538行左右),改成下面:
1 | escape: /^\\([`*\[\]()#$+\-.!_>])/, |
为什么博客本地预览没问题,push到github上就显示不正常?
这个问题可能原因有很多,我暂时列举遇到的情况: * github博客的仓库名称一定要和你的github名字完全一样,比如你github名字叫abc
,那么仓库名字一定要是abc.github.io
。这是大多数人会犯的错误,会导致显示不正常。
更换主题之后,配置文件是修改根目录下的还是主题目录下的?
这个其实都要修改,一般也不会出现重复的属性。具体使用哪个,要看主题的源代码,如果是config.xxx
那就是用的根目录配置文件,如果是theme.xxx
那就用的是主题目录的配置文件。
在哪建立github分支?
点击仓库的settings-branches
,右边点击add new branch
即可。
个性化设置(beantech主题,已停更)
下面的个性化设置主要针对的是我之前使用的beantech
主题,当然如果你想用我现在博客这个主题,可以不看这部分。这部分已经停止更新,今后我只会更新matery
主题的各种配置。
更换主题
网上大多数主题都是github排名第一的Next
主题,但是我个人不是很喜欢,我更喜欢beantech
主题,地址在传送门。
首先要注意的是,这个github项目不仅包含了主题文件,还包含了hexo的各种文件。
所以首先下载下来这个项目,然后推荐将下图所有文件全部替换你原本博客根目录下的文件:
当然一般的主题和这个主题有点不一样,只含有主题文件夹,所以把整个文件夹丢到theme
下就行了。
然后运行hexo clean
清空所有生成的网页缓存,hexo g
、hexo d
。这时候新的主题网页就生成好了,博客根目录的情况应该大致如下:
博客目录构成介绍
从上图可以看出,博客的目录结构如下:
1 | - node_modules |
node_modules
是node.js各种库的目录,public
是生成的网页文件目录,scaffolds
里面就三个文件,存储着新文章和新页面的初始设置,source
是我们最常用到的一个目录,里面存放着文章、各类页面、图像等文件,themes
存放着主题文件,一般也用不到。
我们平时写文章只需要关注source/_posts
这个文件夹就行了。
网站图片都保存在D:\study\program\blog\source\img
目录下,可以修改成自己的图片。
修复文档分类bug
这个主题文档分类功能有个bug,一直没有得到解决,直到最近,我才发现是源文件的单词拼错了。。。
打开D:\study\program\blog\scaffolds\post.md
,单词catagories
改为categories
。
添加畅言评论插件
主题自带了多说评论插件,但是多说已经关闭了,所以我换成了畅言评论插件。
首先你得注册一个畅言账号,
云评论 - 专业的社会化评论系统changyan.kuaizhan.com
然后打开如下页面,复制该段代码:
打开D:\study\program\blog\themes\beantech\layout\post.ejs
,将代码粘贴到如下位置:
然后重新生成一下网页,可以看到效果图如下: