建站日志
一、为什么用Hexo
咱已经在自己注册的网站上用WordPress搭建了一个博客(虽然一篇博文都还没写),它有完善的后台,安装也挺简单的,评论会也有邮件提醒。但考虑到之前注册的域名和购买的主机都只有一年时间,后面终究要迁移的,用Hexo可以在GitHub上托管,支持Markdown,咱就本地用Typora写写日志,然后上传到网上记录下,也是可以的。
二、搭建过程
网上的教程挺多的,稍微搜索下基本都能实现,官方的文档挺详细的,也有中文翻译。
Hexo对Node.js的版本有要求,在安装相应版本的Node.js后,命令行就那么几条就能建站了
全局安装Hexo-cli
1 | npm install -g hexo-cli |
使用Hexo-cli初始化项目
1 | hexo init <folder> |
然后cd到目录
常用的命令(直接命令行hexo就出来了)
1 | Commands: |
有对应的缩写
1 | hexo server —> hexo s |
发布文章的过程应该是这样的:
生成相应的md文件,包含Front-matter 用来配置发布文章时显示的一些信息,列如标题、发布日期、类别、标签
1
hexo new '文章名'
在md上写文章
生成静态文件并在本地服务器上预览
1
heox g && hexo s
发布到Github仓库上
1
hexo d
此外Hexo也支持草稿,写在草稿的内容不会在生成的网页上显示,需要publish后才能行。
三、个性化配置
1.主题
其实官方提供的landscape主题也挺不错的,咱只是觉得没有夜间皮肤,所以换了一个Butterfly。
初始化的适合没有顶部的菜单栏,以为咱配置错了,在观看了别人的配置视频安心了,原来默认的都配置(主题目录下的_config.yml) 文件中都是被注释的,取消注释就行了。并且官方的安装教程也很详细,还是支持中文。
1 | #在项目路径下安装主题 |
文档都挺详细的,照配置文件,关闭了首页的大图,以及一些不必要的图片以提升加载速度,替换了链接、文字、头像。然后就是这个颜色,在项目路径\themes\butterfly\source\css\var.styl 这个文件开头几行
1 | $bright-blue = #ff7700 |
改成这样,主体界面的颜色就是橙色了
2.扩展功能
rss订阅功能,需要安装插件,主要参考这篇博文
1 | npm install hexo-generator-feed --save |
在项目路径的配置文件_config.yml中添加以下代码:
1 | plugin: |
在主题的配置文件_config.yml中的social属性下添加rss的icon配置:
1 | social: |
最后直接复制,手打的话要注意”:”后要加一个空格(可能是yaml的语法),不然会报错
四、遇到的一些问题
1.插入图片
咱写博文的目的就是记录,主要是给自己看的(估计也没有什么访客),前面提到的写作流程是现在本地写好,然后再发布。咱有些内容不太想公开,那本地也要存档,只有文本的Markdown挺好办的,就单个文件,直接复制走就行。但是对于有图片的需要配置下项目的配置文件_config.yml和Typora。
对于_config.yml
1 | post_asset_folder: true |
这样就能在new 文章的时候生成相应的目录
在偏好设置->图像->插入图片时,选择复制到制定路径,如下图所示,勾选优先使用相对路径,然后就能保存在hexo new ‘文章名’ 自动生成的相应文件夹下了。
对于Typora
但是在generate之后,图片在文章的html同级目录下,不是在同级目录下的 /文章名/ 文件夹中,和Markdown的路径并不一样,Stackoverflow能找到类似的问题,官方给出的解决方法是用另一种写法
1 | {% asset_img example.jpg This is an example image %} |
可是咱用Typora直接把截图的图片扔进来,它可不长这样,然道咱还要一个个改吗?
幸好有插件可以解决
1 | npm install hexo-image-link --save |
2.部署
官方文档给的
私有 Repository
- 安装 hexo-deployer-git。
1
$ npm install hexo-deployer-git --save
- 修改配置。
1
2
3
4
5deploy:
type: git
repo: <repository url> #https://bitbucket.org/JohnSmith/johnsmith.bitbucket.io
branch: [branch]
message: [message] - 运行
hexo clean && hexo deploy
。 - 查看 username.github.io 上的网页是否部署成功。
为什么是私有?因为字少,公开的有足足11条咱懒得看了,但是最初还是吃了亏。
首先是git连接仓库,怎么都连不上,不是网络的问题,一层层使尝,发现window的ssh-agent是默认没有在运行的
unable to start ssh-agent service, error :1058
需要以管理员身份运行PowerShell
1 | Set-Service -Name ssh-agent -StartupType automatic |
自动运行ssh-agent
可是在成功部署之后GitHub仓库上也有相应文件上传,访问GitHub Pages,依旧404
在查看仓库的设置界面
原来私有仓库的GitHub Pages 是要会员的,需要弄成公开参考才能访问。
五、其他的一些事项
1.公式
需要显示Markdown公式的时候要在Front-matter 加上 mathjax: true,Markdown公式转换成HTML界面显示似乎要加载额外的js,需要给hexo说明是否加载,这个在主题的配置文件有提示。
2.页面(page)
生成新的界面可以使用
1 | hexo new page “界面名称” |
但是对于像标签、类别等界面,在没写文章是都是空的,访问会显示404,需要hexo new 文章有对应标签、类别之后才会显示内容,如果在没提交就new一个page,会生成一个md,之后只会显示这个md文件上的内容 。至于其他界面比如友链、关于界面咱还没试过。在md文件的Front-Matter 加上type: tags 就是标签页了,About好像就是一个静态的自定界面。
3.代码块
代码块的段落最好要换行,不然会这样