基于Hexo搭建博客并部署到Github Pages

之前在简书上写东西,觉得自己还是太浮躁。本来打算用Flask自己写一个,以为是微框架就比较简单,naive。HTML、CSS、JS等都要学啊,我几乎没有这方面的基础,写到Web表单那儿果断弃了,转向简单的Hexo + Github Pages。不过要想搭建博客的同时巩固Python,Flask确实是一个不错的选择。

获取Github Pages

  1. Github官网注册账号

  2. 新建一个repo,注意名称一定是your_username.github.io这样的格式。

比如你的用户名为zhangsan,Repository name里面就填上zhangsan.github.io

  1. 进入刚新建的仓库,点击Setting,一直拖到最下面,选择Automatic Page Generator,随便选个主题然后发布即可。

详细步骤见这个博客

Hexo搭建静态博客

hexo是一款基于Node.js的静态博客框架,Github官方推荐的是Jekyll。对比了下,大多认为hexo比较简单,于是我选择了它。我们需要安装如下软件

配置SSH

使用Github for windows首次登录时就自动在本地生成了密钥,并远程添加到了Github。自动配置好SSH还是很省事的。

安装hexo

详细步骤见iHTCboy的简书以及岁月如歌的博客。我是跟着他们写的一步步来的,别人说的很详细的我也没必要再重复。我粗略写下来只是为了记录个人学习过程。

打开Git Shell,cd到你想搭建博客的路径,比如D:\My Documents\GitHub\blog。依次输入

  1. npm install hexo-cli -g #安装hexo
  2. hexo init # 初始化,安装所需包
  3. npm install # 其实此句不是必须,新版本的Hexo在初始化时就安装好了依赖包)
  4. hexo g # 生成
  5. hexo s # 运行

然后在浏览器输入localhost:4000就能在本地预览我们新搭建的博客了。hexo的常用指令不多,主要如下

  1. hexo n # 新建文章,在\source\_posts文件夹里
  2. hexo new page # 新建页面,比如想在导航栏新增一个“关于我”的页面
  3. hexo clean # 清除本地的数据库和生成的public文件夹
  4. hexo g # 生成博客文件
  5. hexo s # 运行在本地浏览器,可当预览使用
  6. hexo d # 部署博客到Github等

注意所有命令需要在cd后的新路径中进行

新建文章

键入hexo n "name"即可在\source\_posts文件夹里生成name.md的Markdown文件,文件结构如下

  1. ---
  2. title: HelloWorld # 文章页面上的显示名称,可以任意修改,不会出现在URL中
  3. date: 2015-11-09 15:56:26 # 文章生成时间,一般不改
  4. categories: # 文章分类目录,参数可省略
  5. - 随笔 # 此为一级目录
  6. - 瞬间 # 此为二级目录
  7. - 关于 # 此为三级目录
  8. tags: # 文章标签,参数可省略
  9. - hexo
  10. - blog # 个数不限,单个可直接跟在tags后面
  11. ---
  12. 这里开始是正文

如果想生成的文件默认带categories,那么打开根目录下\scaffolds\post.md新增一行categories :就修改好了模板文件。如果想在主页中以摘要形式显示你的文章,要么正文中加入<!--more-->即可屏蔽该语句下面的内容。

部署到Github Pages

在根目录下_config.yml里面任意位置新增以下语句

  1. deploy:
  2. type: git
  3. # 填上你自己的仓库名,注意后面有`.git`
  4. repository: git@github.com:your_username/your_username.github.io.git
  5. branch: master
  • 最好不要采用http形式的如https://github.com/your_username/your_username.github.io.git而采用SSH换版本的git@github.com:your_username/your_username.github.io.git,如下图点击Use SSH后再复制。

  • 所有冒号后面必须键入一个空格

好了现在可以部署到Github了。输入npm install hexo-deployer-git --save,然后再执行hexo d来部署。否则会出现Deployer not found:git的错误。耐心等待,出现Deployer done: git表示你部署成功了!输入网址your_username.github.io去看看吧。一般来说如果出现莫名的问题,按照以下步骤即可解决。

  1. 删除.deploy_git文件夹
  2. hexo clean
  3. hexo g
  4. hexo d

个性化你的博客

全局配置

在根目录_config.yml里进行全局配置。

  1. # Hexo Configuration
  2. ## Docs: https://hexo.io/docs/configuration.html
  3. ## Source: https://github.com/hexojs/hexo/
  4. # Site
  5. title: 海之声 #主页标题
  6. subtitle: 参差多态乃是幸福本源 #副标题
  7. description: 参差多态乃是幸福本源 # 网站描述,可以加一句自己喜欢的座右铭
  8. author: haiyusun #作者,左下角显示
  9. avatar: /images/avatar.jpg #设置头像,放在\themes\next\source\images里
  10. language: zh-Hans # 选择中文简体
  11. timezone:
  12. since: 2016 #建站日期,左下角显示
  13. # 多说 ShortName
  14. duoshuo_shortname: your_username # 多说评论,后面填写用户名
  15. # 百度分析
  16. baidu_analytics: your_id # 填写自己获得的id
  17. # Social links
  18. social:
  19. Github: https://github.com/haiyusun
  20. Email: mailto:haiyu19931121@163.com
  21. # title, chinese available
  22. links_title: 友情链接
  23. # links
  24. links:
  25. 我的简书: http://www.jianshu.com/users/4943cb2c6ea4
  26. # URL
  27. ## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
  28. url: http://haiyusun.github.io/ #填自己的github pages网址
  29. root: /
  30. permalink: :year/:month/:day/:title/
  31. permalink_defaults:
  32. # 本地搜索
  33. search:
  34. path: search.xml
  35. field: post
  36. # Directory
  37. source_dir: source
  38. public_dir: public
  39. tag_dir: tags
  40. archive_dir: archives
  41. category_dir: categories
  42. code_dir: downloads/code
  43. i18n_dir: :lang
  44. skip_render:
  45. # Writing
  46. new_post_name: :title.md # File name of new posts
  47. default_layout: post
  48. titlecase: false # Transform title into titlecase
  49. external_link: true # Open external links in new tab
  50. filename_case: 0
  51. render_drafts: false
  52. post_asset_folder: false
  53. relative_link: false
  54. future: true
  55. # 语法高亮
  56. highlight:
  57. enable: true
  58. line_number: true
  59. auto_detect: true
  60. tab_replace:
  61. # Category & Tag
  62. default_category: uncategorized
  63. category_map:
  64. tag_map:
  65. # Date / Time format
  66. ## Hexo uses Moment.js to parse and display date
  67. ## You can customize the date format as defined in
  68. ## http://momentjs.com/docs/#/displaying/format/
  69. date_format: YYYY-MM-DD
  70. time_format: HH:mm:ss
  71. # Pagination
  72. ## Set per_page to 0 to disable pagination
  73. per_page: 10
  74. pagination_dir: page
  75. # Extensions
  76. ## Plugins: https://hexo.io/plugins/
  77. ## Themes: https://hexo.io/themes/
  78. # 百度网站地图
  79. plugins:
  80. baidusitemap: # 需要安装插件 npm install hexo-generator-baidu-sitemap@0.1.1 --save
  81. path: baidusitemap.xml
  82. # 主题切换
  83. theme: next
  84. # RSS订阅
  85. feed:
  86. type: atom
  87. path: atom.xml
  88. limit: 0
  89. # Deployment
  90. ## Docs: https://hexo.io/docs/deployment.html
  91. deploy:
  92. type: git
  93. repo: git@github.com:your-username/haiyusun.github.io.git
  94. branch: master
  95. # ---------------下面选项需要对应插件的支持---------------
  96. # npm install hexo-generator-index --save
  97. # npm install hexo-generator-archive --save
  98. # npm install hexo-generator-category --save
  99. # npm install hexo-generator-tag --save
  100. index_generator:
  101. per_page: 10 ##首页默认10篇文章标题 如果值为0不分页
  102. archive_generator:
  103. per_page: 20 ##归档页面默认20篇文章标题
  104. yearly: true ##生成年视图
  105. monthly: true ##生成月视图
  106. tag_generator:
  107. per_page: 10 ##标签分类页面默认10篇文章
  108. category_generator:
  109. per_page: 10 ###分类页面默认10篇文章

主题配置

自带的landscape主题不太好看,我选了NexT。将其克隆到本地,在根目录下theme文件夹下新建next文件夹,把刚才下载的全放进去,然后在根目录_config.yml里找到theme: landscape将其替换成next即启用该主题。官方给出的NexT主题使用教程十分详细,建议先看看,配合着岁月如歌的博客应该能做出效果不错的个人博客了。至此我们的博客就带有RSS订阅、百度统计、来访/阅读次数统计、网站地图、评论系统、分享服务、本地搜索等功能了。

以下针对我自己的问题作个记录。

文章分类

新增导航

默认导航栏只有首页、归档、标签、分类四项。如果想增加其他如C++、随笔等。需要打开\themes\next\_config.yml找到如下

  1. # When running the site in a subdirectory (e.g. domain.tld/blog), remove the leading slash (/archives -> archives)
  2. menu:
  3. home: /
  4. categories: /categories
  5. tags: /tags
  6. archives: /archives
  7. # 这里是新增的,程序猿是一级目录,C是二级目录,同理随笔是一级目录
  8. c++: /categories/程序猿/C/
  9. python: /categories/程序猿/Python/
  10. essay: /categories/随笔/
  11. # 注意这里没有/categories
  12. about: /about

假如我想新建C++、Python、随笔三个导航按钮,并且打开他们的效果如下图。

需要注意的是前面要加上/categories,格式是这样python: /categories/这里是文章的一级目录/这里是文章的二级目录/。结尾要加上/分隔符。这几个页面是不需要通过hexo new page来生成的。关于导航栏及侧栏所用的图标来自fontawesome。在\themes\next\_config.yml里配置。

  1. # 导航栏的图标,输入网站内图标的对应单词
  2. menu_icons:
  3. enable: true
  4. #KeyMapsToMenuItemKey: NameOfTheIconFromFontAwesome
  5. home: home
  6. about: user
  7. categories: th
  8. tags: tags
  9. archives: archive
  10. c++: keyboard-o
  11. python: keyboard-o
  12. essay: pencil
  13. commonweal: heartbeat
  14. # 社交网络图标
  15. social_icons:
  16. enable: true
  17. # Icon Mappings.
  18. # KeyMapsToSocalItemKey: NameOfTheIconFromFontAwesome
  19. GitHub: github
  20. Email: envelope

写文章的时候只要分类目录对应就可以被正确归类到导航栏里。如下

  1. ---
  2. title: Python爬虫初学(三)—— 模拟登录知乎
  3. date: 2016-09-18 17:10:59
  4. # 对应于/categories/程序猿/Python/
  5. categories:
  6. - 程序猿
  7. - Python
  8. tags:
  9. - Python
  10. - 爬虫
  11. ---

新增关于我页面

这个需要hexo new page "about"生成一个新页面,menu里面新增about: /about。在新增的about文件夹可以看到index.md,对其直接编辑就可,注意不要对此文件加tagscategories,否则会出错。

公益404页面

HTTP 404Not Found错误信息是HTTP的其中一种“标准回应信息”(HTTP状态码),此信息代表客户端在浏览网页时,服务器无法正常提供信息,或是服务器无法回应且不知原因。

按照NexT主题使用教程添加404页面对我来说好像不可用。在知乎的这个回答中复制了某匿名用户的的代码,拷贝到\themes\next\source\404.html可行。代码如下,其中重定向链接改成你自己的主页,还可以自定义背景图片。

  1. <html>
  2. <head>
  3. <meta charset="utf-8">
  4. <title>404 Not Found</title>
  5. <style>
  6. *{margin:0;padding:0;outline:none;font-family:\5FAE\8F6F\96C5\9ED1,ו;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-khtml-user-select:none;user-select:none;cursor:default;font-weight:lighter;}
  7. .center{margin:0 auto;}
  8. .whole{width:100%;height:100%;line-height:100%;position:fixed;bottom:0;left:0;z-index:-1000;overflow:hidden;}
  9. .whole img{width:100%;height:100%;}
  10. .mask{width:100%;height:100%;position:absolute;top:0;left:0;background:#000;opacity:0.6;filter:alpha(opacity=60);}
  11. .b{width:100%;text-align:center;height:400px;position:absolute;top:50%;margin-top:-230px}.a{width:150px;height:50px;margin-top:30px}.a a{display:block;float:left;width:150px;height:50px;background:#fff;text-align:center;line-height:50px;font-size:18px;border-radius:25px;color:#333}.a a:hover{color:#000;box-shadow:#fff 0 0 20px}
  12. p{color:#fff;margin-top:40px;font-size:24px;}
  13. #num{margin:0 5px;font-weight:bold;}
  14. .plan{color: black;background: white;font-size: 30px; margin-top: 20px;}
  15. .plan:hover{color: white;background: black;font-size: 30px;}
  16. #gg {
  17. position: absolute;
  18. width: 654px;
  19. height: 470px;
  20. left: 50%;
  21. top: 50%;
  22. margin-left: -377px;
  23. margin-top: -235px;
  24. }
  25. </style>
  26. </head>
  27. <body onload="redirect();">
  28. <div id="gg">
  29. <!--以下网址为益播生成的404页面-->
  30. <iframe class="gg" scrolling='no' frameborder='0' src='https://yibo.iyiyun.com/Home/Distribute/ad404/1182245' width='654' height='470' style='display:block;'>
  31. </iframe>
  32. </div>
  33. <div class="whole">
  34. <!--这里是自定义图片的地址-->
  35. <img src="http://obvjfxxhr.bkt.clouddn.com/404.jpg">
  36. </div>
  37. </body>
  38. </html>

效果如图

继续美化博客

修改文章宽度

如果嫌博客页面两边大量留白,文章宽度不够,可以修改。见知乎-高爷的回答

如何修改文章宽度?

\themes\next\source\css\_common\components\post\post-expand.styl

  • @media (max-width: 767px)

    改为:

    @media (max-width: 1280px)

\themes\next\source\css\ _variables\base.styl中:

  • $main-desktop = 960px

    $content-desktop = 700px

    改成:

    $main-desktop = 1280px

    $content-desktop = 960px

我个人觉得这个又太宽了。于是改成@media (max-width: 1080px)$main-desktop = 1080px

$content-desktop = 810px,可凭喜好自己修改。我设置的文章宽度如下

配色与字体

继续在\themes\next\source\css\ _variables\base.styl折腾。

字号与行高

字号默认14px,虽然是主流,我个人觉得还是太小了点,看多了眼睛难受,设置成16px好多了。

找到$font-size-base = 14px,修改即可。该主题默认行高2.0,移动设备访问可见行高过高,找到$line-height-base = 2。修改成1.8个人觉得最为合适。至于代码块的字体,默认的13px确实有点小了。不过最好不要修改,否则会出现糟糕的滚动条。

配色

主要是修改网页背景色,修改超链接颜色。自定义颜色见颜色表

  1. //
  2. // Variables
  3. // =================================================
  4. // Colors
  5. // colors for use across theme.
  6. // --------------------------------------------------
  7. $whitesmoke = #f5f5f5
  8. $gainsboro = #eee
  9. $mycolor = #EEE5DE
  10. $gray-lighter = #ddd
  11. $grey-light = #ccc
  12. $grey = #bbb
  13. $grey-dark = #999
  14. $grey-dim = #666
  15. $black-light = #555
  16. $black-dim = #333
  17. $black-deep = #222
  18. $red = #ff2a2a
  19. $blue-bright = #87daff
  20. $blue = #0684bd
  21. // 这是我自定义的颜色
  22. $myblue = #4682B4
  23. $blue-deep = #262a30
  24. $orange = #fc6423
  25. $mylink = #36648B
  26. // Scaffolding
  27. // Settings for some of the most global styles.
  28. // --------------------------------------------------
  29. // Global text color on <body>
  30. $text-color = $black-deep
  31. // 修改超链接颜色
  32. // Global link color.
  33. $link-color = $myblue
  34. $link-hover-color = $mylink
  35. $link-decoration-color = $gray-lighter
  36. $link-decoration-hover-color = $mylink
  37. // Global border color.
  38. $border-color = $black-light
  39. // Background color for <body>
  40. // 背景色,默认white,我认为太刺眼就换成了烟灰色
  41. $body-bg-color = whitesmoke
  42. // 鼠标选择区域
  43. // Selection
  44. $selection-bg = $blue-deep
  45. $selection-color = white

我就折腾了这么多,至此博客搭建完成。


by @sunhaiyu

2016.9.22

基于Hexo搭建博客并部署到Github Pages的更多相关文章

  1. Note | 用Hugo搭建博客并部署到GitHub Pages

    目录 1. 本地搭建 1.1 安装Hugo 1.2 创建站点 1.3 新建页面和文章 1.4 使用主题 1.5 修改配置文件 1.6 预览 2. 部署 之前担心过现有博客平台(如博客园,CSDN)突然 ...

  2. Linux下使用 github+hexo 搭建个人博客02-hexo部署到Github Pages

    之前的这篇文章<Linux下使用 github+hexo 搭建个人博客01-hexo搭建>,相信大家都知道怎么搭建 hexo ,怎么切换主题,并且完成了一篇博文的创建,以及 MarkDow ...

  3. 手把手教从零开始在GitHub上使用Hexo搭建博客教程(一)-附GitHub注册及配置

    前言 有朋友问了我关于博客系统搭建相关的问题,由于是做开发相关的工作,我给他推荐的是使用github的gh-pages服务搭建个人博客. 推荐理由: 免费:github提供gh-pages服务是免费的 ...

  4. 将 Hexo 个人博客同时部署到 GitHub 和 Coding 上

    一.将个人博客托管到 GitHub 上 关于如何快速搭建自己的个人博客,如何完善自己的个人博客,什么是 GitHub ,如何将自己的博客代码托管到 GitHub 上面等等问题,我之前写过三篇文章已经做 ...

  5. 使用hexo搭建博客并上传GitHub

    之前在博客园.简书.CSDN等地儿都开过博,一篇文章写好了,我希望能在几个平台可以同步发布,可是操作起来成本不低.几个平台下的富文本编辑器比较起来还是博客园更顺手,看着更舒服,尤其是代码块的操作灵活. ...

  6. hexo搭建博客上传至github

    准备工作 ssh key 要先申请好,并且添加至github的ssh库中 安装插件 hexo-deployer-git npm install hexo-deployer-git --save 配置 ...

  7. 手把手教从零开始在GitHub上使用Hexo搭建博客教程(二)-Hexo参数设置

    前言 前文手把手教从零开始在GitHub上使用Hexo搭建博客教程(一)-附GitHub注册及配置介绍了github注册.git相关设置以及hexo基本操作. 本文主要介绍一下hexo的常用参数设置. ...

  8. 手把手教从零开始在GitHub上使用Hexo搭建博客教程(三)-使用Travis自动部署Hexo(1)

    前言 前面两篇文章介绍了在github上使用hexo搭建博客的基本环境和hexo相关参数设置等. 基于目前,博客基本上是可以完美运行了. 但是,有一点是不太好,就是源码同步问题,如果在不同的电脑上写文 ...

  9. 手把手教从零开始在GitHub上使用Hexo搭建博客教程(四)-使用Travis自动部署Hexo(2)

    前言 前面一篇文章介绍了Travis自动部署Hexo的常规使用教程,也是个人比较推荐的方法. 前文最后也提到了在Windows系统中可能会有一些小问题,为了在Windows系统中也可以实现使用Trav ...

随机推荐

  1. Ubuntu14.04配置3389远程桌面连接

    1.安装xrdp sudo apt-get install xrdp -y 2.安装vnc4server sudo apt-get install vnc4server -y 3.安装xfce4 su ...

  2. POJ 1459-Power Network(网络流-最大流-ISAP)C++

    Power Network 时间限制: 1 Sec  内存限制: 128 MB 题目描述 A power network consists of nodes (power stations, cons ...

  3. PHP扩展开发-1

    开发环境信息 1.基本环境信息如下: [root@localhost lib]# cat /etc/os-release NAME="CentOS Linux" VERSION=& ...

  4. php利用gd实现图片的边框

    <?php //实现两张图片合并 并内图片有一定的边框 $file = 'image/qr_1047.png'; $logo = 'image/logo_1047.jpg'; $code = ' ...

  5. 12.引入依赖项目的时候,如果找不到jar

    原因是bin没有生成,先clean依赖包,再clean原工程包,就可以了

  6. html网页的兼容性和css优先级

    网页不仅是在一个浏览器上显示的网页,也要多考虑其他浏览器的兼容性,火狐.谷歌.搜狗等浏览器总体来说,网页的变化不大,最主要的是还是IE浏览器. color:red\9; IE6  IE7   IE8  ...

  7. MyBatis源码解析【3】生命周期

    经过之前的项目构建,我们已经得到了一个可以使用的最基本的项目. 其中已经包括整个执行的过程.但是我们在完成之后也遇到了很多问题,我们就要慢慢的一步步解决这些问题. 讲道理,今天我们其实应该直接开始看源 ...

  8. 使用freemarker模板生成word文档

    项目中最近用到这个东西,做下记录. 如下图,先准备好一个(office2003)word文档当做模板.文档中图片.姓名.性别和生日已经使用占位符代替,生成过程中将会根据实际情况进行替换. 然后将wor ...

  9. HDOJ 2209 贪心

    翻纸牌游戏 Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  10. 使用three.js加载3dmax资源,以及实现场景中的阴影效果

    使用three.js可以方便的让我们在网页中做出各种不同的3D效果.如果希望2D绘图内容,建议使用canvas来进行.但很多小伙伴不清楚到底如何为我们绘制和导入的图形添加阴影效果,更是不清楚到底如何导 ...