本篇博客向大家介绍一下Markdown博客系统的搭建。关于搭建博客的具体细节大部分内容参考于:使用hexo+github搭建免费个人博客详细教程。笔者亲自尝试后,又做了一点补充,应该能够让大家很容易地学会如何利用hexo做一个博客系统。首先,给出效果:https://jack13163.github.io/。
目录
1. markdown简介
这里,笔者需要补充如下两点说明。
1.1 markdown是什么?
markdown是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的 HTML 页面。笔者的理解是,markdown是一种html代码生成引擎,为什么这样说?因为markdown最终要通过markdown解析器解释为html代码。
1.2 为什么我们要用markdown做博客系统?
笔者自己为什么喜欢markdown呢?主要是它太流行了,太方便了。你不需要了解html的相关知识,就可以生成非常漂亮的界面,这对于一个后端开发者来说是多么有吸引力。
还有一点,就是它具有非常通用性,因为这个社区非常活跃,所以大家开发了用markdown写各种各样的东西的轮子,例如,我们可以用Markdown写微信公众号,将公众号素材用 Markdown 编辑好后,贴到在线排版工具以后,复制到公众号编辑器里即可。有多种页面主题和代码主题可选择。一位大佬维护的工具地址:https://md.mazhuang.org。
传统的博客系统在搭建时往往比较复杂,除了搭建开发、运行环境之外,还得需要比较高深的相关编程语言,比如说前天用JS、CSS,后台用Java,数据库用MySQL等等等等。
除了这些之外,我们还需要了解项目的基础框架,比如说现今流行的SSM。还需要我们知道开发博客的业务逻辑,比如说我们得展示前台吧,这就需要前台的业务逻辑,而我们的前台数据是通过后台进行维护的,因而在后台有需要有一个后台管理的业务逻辑。同时,在实际的项目开发过程之中,光了解上面的那些是远远不够的,因为一个系统最起码得有一个登陆吧,而登录这方面就需要RBAC权限管理的技术支持,否则谁都能操作后台,岂不乱了套了,诸如此类的技术还有很多,这我就不一一举例了。
但是仔细一想的话,虽然搭建一个传统的博客网站系统其实就已经很复杂了,但是其实有很多的功能并不是我们一定需要的,有时我们仅仅只是用于记录日志,用于自己博客信息的展示,其不需要太多的功能,在实现自己基本需求的情况下,简洁而美观,使用搭建方便,这才是我们追求的目标,否则光一个博客系统的搭建就耗费大把的时间,恐怕很多的博客爱好者就会止步于此了。
通过上述描述,我们基本上可以看出Markdown博客系统的优点,那就是基于现成的模版,搭建迅速,使用简单,并且易于维护。
2. 搭建markdown博客系统
在开始一切之前,你必须已经:
- 有一个github账号;
- 安装了node.js、npm,并了解相关的基础知识;
- 安装了git。
2.1 hexo介绍
Hexo是一个简单、快速、强大的基于 Github Pages 的博客发布工具,支持Markdown格式,有众多优秀插件和主题。
- hexo 可以理解为是基于node.js制作的一个博客工具,不是我们理解的一个开源的博客系统。
- hexo 正常来说,不需要部署到我们的服务器上,我们的服务器上保存的,其实是基于在hexo通过markdown编写的文章,然后hexo帮我们生成静态的html页面,然后,将生成的html上传到我们的服务器。简而言之:hexo是个静态页面生成、上传的工具。
2.2 安装hexo
打开命令行工具cmd,输入下述脚本。
npm install -g hexo
2.3 初始化
在电脑的某个地方新建一个文件夹作为你存放代码的地方。
cd C:/code/hexo
hexo init
hexo会自动下载一些文件到这个目录,包括node_modules,目录结构如下图:
文件/文件夹 | 说明 |
---|---|
_config.yml | 配置文件,修改博客的基础配置、模板等; |
public | 生成的静态文件,这个目录最终会发布到服务器; |
scaffolds | 一些通用的markdown模板; |
source | 编写的markdown文件,_drafts草稿文件,_posts发布的文章; |
themes | 博客的模板。 |
用 npm 安装话经常出现卡住而导致无法正常安装,解决办法就是修改 npm 的安装源,这里选择淘宝 NPM 镜像。
npm config set registry https://registry.npm.taobao.org
一次解决所有卡顿问题!
2.4 生成html
hexo g # 生成
hexo s # 启动服务
执行以上命令之后,hexo就会在public文件夹生成相关html文件,这些文件将来都是要提交到github去的:
hexo s
是开启本地预览服务,打开浏览器访问 http://localhost:4000 即可看到内容,很多人会碰到浏览器一直在转圈但是就是加载不出来的问题,一般情况下是因为端口占用的缘故,因为4000这个端口太常见了,解决端口冲突问题请参考博客。
第一次初始化的时候,hexo已经帮我们写了一篇名为 Hello World 的文章:
2.5 修改主题
默认的主题比较丑,替换一个好看点的主题,这里推荐比较喜欢的2个主题:hexo-theme-jekyll 和 hexo-theme-yilia。
首先,下载主题:
cd C:/code/hexo/
git clone https://github.com/litten/hexo-theme-yilia.git themes/yilia
下载后的主题都在这里:
修改_config.yml
中的theme: landscape
改为theme: yilia
,如果直接重新执行hexo g
来重新生成,则会出现模块缺失的错误:
按照提示,我们需要在_config.yml文件中加入下述内容:
# yilia主题所需新增内容
jsonContent:
meta: false
pages: false
posts:
title: true
date: true
path: true
text: false
raw: false
content: false
slug: false
updated: false
comments: false
link: false
permalink: false
excerpt: false
categories: false
tags: true
如果还有其他莫名其妙的问题,可以先执行hexo clean
来清理一下public的内容,然后再来重新生成和发布。 需要注意的是,_config.yml文件中,冒号后面必须有一个空格,否则可能会出问题。 主题更换后,效果如下图所示。
2.6 上传到github
如果你一切都配置好了,发布上传很容易,一句hexo d
就搞定,当然关键还是你要把所有东西配置好。这里,假设各位您的github的ssh key
肯定已经配置好了。
2.6.1 创建github仓库
注意,这里的仓库名为:github用户名.github.io。
当创建仓库名为其他时:
无法在GitHub Pages中找到URL。
当创建仓库名为自己的github用户名.github.io时:
在GitHub Pages中可以看到URL。
2.6.2 配置部署信息
配置_config.yml
中有关deploy的部分:
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repository: https://github.com/jack13163/jack13163.github.io.git
branch: master
有很多人说这种方式不正确,但是笔者尝试过,这里这样就可以了,直接将自己仓库的URL复制过来即可。
2.6.3 安装hexo的git插件
直接执行hexo d
的话一般会报如下错误:
Deployer not found: github 或者 Deployer not found: git
原因是还需要安装一个插件:
npm install hexo-deployer-git --save
2.6.4 部署hexo
输入hexo d
就会将本次有改动的代码全部提交,没有改动的不会:
期间可能需要输入github的用户名和密码。
最后,在github中找到网站的地址并访问。
因为这里容易配置错误,所以这里给出笔者的配置文件。
# Hexo Configuration
## Docs: https://hexo.io/docs/configuration.html
## Source: https://github.com/hexojs/hexo/
# Site
title: Hexo
subtitle:
description:
keywords:
author: John Doe
language: en
timezone:
# URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
url: http://yoursite.com
root: /
permalink: :year/:month/:day/:title/
permalink_defaults:
# Directory
source_dir: source
public_dir: public
tag_dir: tags
archive_dir: archives
category_dir: categories
code_dir: downloads/code
i18n_dir: :lang
skip_render:
# Writing
new_post_name: :title.md # File name of new posts
default_layout: post
titlecase: false # Transform title into titlecase
external_link: true # Open external links in new tab
filename_case: 0
render_drafts: false
post_asset_folder: false
relative_link: false
future: true
highlight:
enable: true
line_number: true
auto_detect: false
tab_replace:
# Home page setting
# path: Root path for your blogs index page. (default = '')
# per_page: Posts displayed per page. (0 = disable pagination)
# order_by: Posts order. (Order by date descending by default)
index_generator:
path: ''
per_page: 10
order_by: -date
# Category & Tag
default_category: uncategorized
category_map:
tag_map:
# Date / Time format
## Hexo uses Moment.js to parse and display date
## You can customize the date format as defined in
## http://momentjs.com/docs/#/displaying/format/
date_format: YYYY-MM-DD
time_format: HH:mm:ss
# Pagination
## Set per_page to 0 to disable pagination
per_page: 10
pagination_dir: page
# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: yilia
# yilia主题所需新增内容
jsonContent:
meta: false
pages: false
posts:
title: true
date: true
path: true
text: false
raw: false
content: false
slug: false
updated: false
comments: false
link: false
permalink: false
excerpt: false
categories: false
tags: true
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repository: https://github.com/jack13163/jack13163.github.io.git
branch: master
2.7 保留CNAME、README.md等文件
提交之后网页上一看,发现以前其它代码都没了,此时不要慌,一些非md文件可以把他们放到source文件夹下,这里的所有文件都会原样复制(除了md文件)到public目录的:
由于hexo默认会把所有md文件都转换成html,包括README.md,所以需要每次生成之后、上传之前,都需要手动将README.md复制到public目录,并删除README.html。
2.8 常用hexo命令
常见命令
hexo new "postName" #新建文章
hexo new page "pageName" #新建页面
hexo generate #生成静态页面至public目录
hexo server #开启预览访问端口(默认端口4000,'ctrl + c'关闭server)
hexo deploy #部署到GitHub
hexo help # 查看帮助
hexo version #查看Hexo的版本
缩写:
hexo n == hexo new
hexo g == hexo generate
hexo s == hexo server
hexo d == hexo deploy
组合命令:
hexo s -g #生成并本地预览
hexo d -g #生成并上传
3. 写博客
定位到hexo根目录,执行命令:
hexo new 'my-first-blog'
hexo会帮我们在_posts
下生成相关md文件:
我们只需要打开这个文件就可以开始写博客了,默认生成如下内容:
当然你也可以直接自己新建md文件,用这个命令的好处是帮我们自动生成了时间。
一般完整格式如下:
---
title: postName #文章页面上的显示名称,一般是中文
date: 2013-12-02 15:30:16 #文章生成时间,一般不改,当然也可以任意修改
categories: 默认分类 #分类
tags: [tag1,tag2,tag3] #文章标签,可空,多标签请用格式,注意:后面有个空格
description: 附加一段文章摘要,字数最好在140字以内,会出现在meta的description里面
---
以下是正文
那么hexo new page 'postName'
命令和hexo new 'postName'
有什么区别呢?
hexo new page "my-second-blog"
生成如下:
最终部署时生成:hexo\public\my-second-blog\index.html
,但是它不会作为文章出现在博文目录。
那么用什么工具写博客呢?这个我还没去找,以前自己使用editor.md简单弄了个,大家有好用的hexo写博客工具可以推荐个。
默认情况下,生成的博文目录会显示全部的文章内容,如何设置文章摘要的长度呢?
答案是在合适的位置加上<!--more-->
即可,例如:
# 前言
使用github pages服务搭建博客的好处有:
1. 全是静态文件,访问速度快;
2. 免费方便,不用花一分钱就可以搭建一个自由的个人博客,不需要服务器不需要后台;
3. 可以随意绑定自己的域名,不仔细看的话根本看不出来你的网站是基于github的;
<!--more-->
4. 数据绝对安全,基于github的版本管理,想恢复到哪个历史版本都行;
5. 博客内容可以轻松打包、转移、发布到其它平台;
6. 等等;
最终效果:
转载:https://blog.csdn.net/zyxhangiian123456789/article/details/101797464