建立网站
Github配置
输入命令 ssh-keygen -t rsa -b 4096 -C "myname@gmail.com"
。
密码 T1
。(下列展开后复制)
将文件 ~/.ssh/id_rsa.pub 中的内容复制到 Github 的SSH-Key 内就可以了。(备份文件已上传百度网盘)
- 在Github上新建SSH-Key名称为
gmail
1 | ssh-keygen -t rsa -b 4096 -C "username@gmail.com" |
- 测试公匙
1 | $ ssh -T git@github.com |
安装Hexo
- 安装node.js 因为以前已经安装过,所以跳过。
- 安装 Hexo
$ npm install hexo-cli -g
- 创建网站
1 | mkdir mywiki |
- 生成静态页面
hexo g
orhexo generate
- 启动本地网站服务
hexo s
orhexo server
网站一般会运行在 http://localhost:4000/
Press Ctrl+C to stop.
- 用pow做服务本地运行
Install
1 | $ curl get.pow.cx | sh |
Setup
Symlink the folder into ~/.pow
1 | $ cd ~/.pow |
发布到Github
终于搭建好站点部署环境啦,那么要怎么样将我们本地生成预览好的页面发布到github上呢?很简单,Follow!
首先,打开blog目录下的_config.yml
,找到deploy段,配置成这样
deploy:
type: git
repository: git@github.com:yourname/yourname.github.io.git
branch: master
注意将代码里面的yourname换成你账号的username。
设置git身份信息
git config --global user.name “你的用户名”
git config --global user.email “你的邮箱”
执行以下指令进行部署
hexo d -g
如果提示没找到git,请先执行以下指令
cnpm install hexo-deployer-git --save
再次部署后,浏览器打开 https://yourname.github.io 就可以看到刚才本地预览页面。
网站基本配置
Next 主题
主题配置文件说明
1 | # Hexo 站点配置文件 |
Wikitten主题
具体配置参考开发者说明,更详细的描述参阅hexo-theme-icarus。为了与主题Next不冲突,作以下修改。
- 自行修改
tags
,about
,categories
等index.md
,而不能从主题复制,覆盖站点原有设置。 languages\zh-CN.yml
重命名为zh-Hans.yml
_config.yml
菜单作以下更改
1 | menu: |
thumbnail: true
使得每个post在快速列表里,显示图标。但就是每个帖子都要设定,很麻烦。- post 中的 toc 要设置为 true,如果需要显示目录的话。
同时部署两个项目
第一个项目使用 Github 上面默认的 Github Pages,即 username.github.io
。在站点配置文件中如下:
1 | url: http://username.github.io |
第二个站点开通一个 普通的repository,添加名为gh-pages
的Branch,并将gh-pages设为默认Branch。我将第二个仓库命名为 wiki ,那第二个站点就运行在
https://username.github.io/wiki`次级目录下面。
站点配置文件更改如下:
1 | url: http://username.github.io/wiki |
同样用 hexo d -g
部署命令发布,两个站点就都运行起来了。
为了使得两个项目使用同一个笔记资源,将站点中的 source 文件夹移到项目意外,将配置文件里的 source_dir: source
改为 source_dir: ../source
(这里使用了相对目录)。
参考文章 (细节已经失效,但思路值得参考)
站内搜索
- 安装插件
1 | npm install hexo-generator-search --save |
- 配置hexo站点主配置文件
_config.yml
, 添加
1 | search: |
- 修改next主题配置文件
_config.yml
,启用local_search
1 | local_search: |
- 生成
search.xml
文件以及发布
1 | hexo g |
去除主题字样
关于添加头像、标签、分类、「关于」等具体的修改,跟着参考资料2里面的步骤做就好了。最后说说如何去掉底部强力驱动及主题字样。
- 找到
\themes\next\layout_partials\
下面的footer.swig
文件,打开:
1 | <div class="powered-by"> |
第一条是“由Hexo驱动” 的Hexo链接,把xml段删除,只留两个单引号’’。
第二条是“主题-Next.XX”,将xml段都删掉,不留引号。
1 | <div class="powered-by"> |
- 找到这个地方
\themes\next\languages\
下面的语言文件zh-Hans.yml
(以中文为例):
1 | footer: |
将上面的文字改成自己想要的即可。
添加评论功能
Gitment
**此项目已经终止!**改为Disqus,以及其它评论服务。
- 安装功能模块。在项目的根目录:
1 | npm i --save gitment |
- 在Github申请应用。
settings -> Developer Settings -> OAuth Apps
1 | Application name:随便写 |
申请好之后点注册,然后就可以看到两个东西ClientID
和Client Secret
,后面会用到。
- 配置Gitment,打开
themes/next/_config.yml
:
1 | # Gitment |
注意到这里基本上已经OK了,再看你的博客应该可以显示评论了.不过每篇博客都需要你手动初始化评论功能(如果你的历史博客很多那就一篇一篇去点吧,不过貌似有人写了批量处理脚本,没试过哈).
而由于 github 中 Issues
的 label
长度限制为最大 50
个字符,当 文章标题长度过长时,该label就会生成失败,而导致初始化错误,弹出 Validation Failed
的提示。
通过网上的搜索,发现可以使用文章创建时的时间来代替文章标题,作为这个唯一的label标签。
找到giment的配置:/themes/next/layout/_third-party/comments/gitment.swig
文件, 并找到如下部分:
1 | var gitment = new {{CommentsClass}}({ |
将id
后面的路径值修改为 ‘itfanr_blog_<!–1–>’ 就可以了。
Disqus
目前只开通Disqus的评论。
- 开通Disqus账号,并添加一个点 应用。具体步骤参看Hexo搭建博客系列:(六)Hexo添加Disqus评论。
- 在
主题配置文件
(_config.yml)文件中找到以下代码,添加你Disqus设置的Website Name在shortname。
1 | # Disqus |
更详细请参阅网上。
新文章命名规则
发表新文章后系统崩溃。
在根目录的配置文件中找到类似的:
1 | # Writing |
将其改为由时间和题目组成:
1 | # Writing |
进阶设置
显示
首页文章显示预览
默认设定下。首页的文章每一篇都显示全文,不方便浏览。需要到主题的配置文件里将auto_excerpt
的 enable
改为 true
。而length
字节表示文章预览的长度。
1 | # Automatically Excerpt. Not recommand. |
永久链接
新文章的名字采用了中文(见上),中文出现在地址栏上不美观。也不利于SEO,以及增加了博文URL的层数。解决办法是给每篇文章制定链接地址。
- 修改网站的配置文件中永久地址的设定:
1 | permalink: :urlname.html |
- 给每篇文章指定
urlname
1 | title: 《少有人走的路》笔记 |
编译后新的地址为 http://mywiki.test/road-less-traveled-summary.html
。看起来就清爽多了。
图片链接
- 开通资源文件夹,创建新文章的时候会自动建立一个与文章同名的文件夹。可以将图片或者其它资源文件放到里面(打算将思维导图放到这里)。因为自定义了文件名的方式,所以根据官方描述无效。
- 安装第三方插件
hexo-asset-image
1 | npm install hexo-asset-image --save |
在文章中图片的链,可以省略路径,直接引用图片名:
1 | ![mypicture](mypicture.jpg) |
- 修改插件代码
我在使用永久链接的时候在每篇文章的实际地址都加上了.html
。文章的地址显示如下
1 | http://mywebsite.com/my-articel-url.html |
而插件生成的图片地址如下:
1 | http://mywebsite.com/my-articel-url.htm/mypicture.jpg |
多出了 .htm
这几个字符,而实际图片的地址应该是:
1 | http://mywebsite.com/my-articel-url/mypicture.jpg |
找到 node_modules/hexo-asset-imge
目录下的 index.js
文件,将以下代码中的 1
改成 5
,就可以正常显示图片了。
1 | var endPos = link.length - 1 |
考虑到将来项目膨胀,应该将图片放到图床,比如七牛。
站内链接
导航到站内别的文章使用以下方式就可以。
链接方式 [文章名](urlname.html)
设定代码区的高度
Hexo自身的式样暂时还没找到。其实也不太需要。如果代码不长直接显示全部就好了。太长的话不如放到$Gits$,通过限制gist的高度实现。Net主题修改 next/themes/next/source/css/_custom/custom.styl
,Wikitten主题则在文件 wikitten/themes/Wikitten/source/css/_partial/article.styl
中修改。
1 | .gist |
添加注脚支持
- 安装插件
npm install hexo-footnotes --save
- 项目配置文件 添加
1 | # 注意第二行的前面没有 "-" 符号,官方说明有. 但是会导致无法编译. |
更换Markdown渲染
如果更换了这个渲染,就无需上面那个注脚插件, 因为已经支持了. 首先卸载掉旧的渲染, 然后安装新的.
1 | npm un hexo-renderer-marked --save |
然后在项目配置文件, 添加下面文字. 更深入的设置, 参看 markdown-it-plus 项目的说明文档.
1 | markdown_it_plus: |
辅助功能
本地运行服务
在Mac中可以用本地服务Pow运行网站,不用每次更改重启服务器hexo s
。
- 安装Pow
1 | $ curl get.pow.cx | sh |
- 建立项目链接,
myapp
是项目的名字。比如真实路径~/Project/mywiki
1 | $ cd ~/.pow |
- 执行完以上步骤后在浏览器打开链接
http://myapp.test/
就能看到网站。更改内容后要执行==生成== 命令才能看到更新hexo generate
orhexo g
。 - 不想运行,直接把项目文件夹删除就可以。
绑定个人域名
- 在万网买一个顶级域名,开通后添加两个域名解释
1 | #记录名 主机记录 记录值 |
- 在项目的根目录添加一个名为
CNAME
的文件,然后填入万网注册的域名, 这里是goldentianya.pub
。第一次我是手动添加的。添加后进入 repository 的 setting, 往下混动到 Custom domain ,可以看到系统已经自动把用户域名加进去了。 - 将来不希望用这个域名,域名重定向后,在浏览器输入 username.github.io 后 Chrome 会一直转向 goldentianya.pub 。需要打开
开发者工具
,选中disable cache
,再刷新一遍地址就好了。 next
项目要将CNAME
文件复制到/themes/next/source
目录下个,编译的时候会拷贝到public
目录。wikitten
项目不需要,域名定向以后能找到goldentianya/wiki
站点,十分神奇。
隐藏文章
全隐藏
根据插件hext-sage-posts
作者的博文9中描述,安装插件
1 | npm install hexo-sage-posts --save |
并将初创时的Hello-world.md
文章的Metadata中加入sage: true
,文章就从网站上消失了。但在别的文章下面导航栏中,通过“下一篇”或者“上一篇”还是能被找到。被隐藏的文章其地址仍旧没有改变,只是不不出现在首页导航,和分类中而已。
从首页隐藏
为了不让太琐碎的文章充斥首页,但又可以在分类中找到。可以采用这种方式。
- 在文章的Metadata部分添加关键字
notshow: true
。 - 找到
Hexo\themes\next\layout\index.swig
文件中以下部分:
1 | {% block content %} |
将以上代码第四行修改为
1 | {% if post.notshow != true %} |
文章加密
- 安装插件
hexo-blog-encrypt
1 | npm install --save hexo-blog-encrypt |
并在站点配置文件中启用该插件:
1 | encrypt: |
- 然后在文章的头部添加上对应的字段
1 | --- |
-
password: 是该博客加密使用的密码
-
abstract: 是该博客的摘要,会显示在博客的列表页
-
message: 这个是博客查看时,密码输入框上面的描述性文字
Hexo Admin
安装后台管理插件 hexo-damin
1 | npm install --save hexo-admin |
初次运行后,设置管理账户。
1 | admin: |
访问量统计
介绍文章 (有图)
-
第一步, 到Lean Cloud增添一个应用,并创建类似Counter 的类。设置成 $ 所有人可读可写 $
-
在安全中心添加 Web 安全域名, 添加Blog域名,防止有人Hack我们的数据库。
-
按上面的文章修改 Hexo 以及主题配置。
在线交流
使用 道客 Daovoice
接入方式
- 将下面代码粘贴在页面的 之前。
1 | <script>(function(i,s,o,g,r,a,m){i["DaoVoiceObject"]=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;a.charset="utf-8";m.parentNode.insertBefore(a,m)})(window,document,"script",('https:' == document.location.protocol ? 'https:' : 'http:') + "//widget.daovoice.io/widget/5e5fa370.js","daovoice")</script> |
- 调用下面的 JavaScript 与注册用户沟通
1 | daovoice('init', { |
- 调用下面的 JavaScript 与匿名访客沟通
1 | daovoice('init', { |
完成代码粘贴后,检测是否成功接入: Ping 一下
待解决问题
-
[x] 文章评论
-
[x] 在线编辑?
-
[x] 使用七牛图床
-
[ ] 脑图摆放 (官方文档/数据文件)
-
[x] 文件下载(可能还是要靠七牛)
-
[x] 用submodule管理主题 在 hexo 中使用 git submodules 管理主题
-
[ ] SEO
-
[ ] 访问量统计
-
[ ] 加速 Github Pages + CDN全站加速
有趣插件
-
[x] 短地址 & 指定摘要
-
[ ] 农历/很好的学习做插件的例子
-
[ ] 插入pdf 可以学习如何插入epub
-
[ ] hexo-include 加载文本内容, html, js, text
-
[ ] include markdown