使用MkDocs搭建个人博客
使用MkDocs搭建个人博客
接触编程已经好几年了,阅读了无数大佬的博客文章,但是从来没有自己写过。这其中最重要的原因当然是懒惰,觉得写博客太费时间了,对自己的帮助也不大。可是如今发现自己的记性越来越捉急了,某样技术在一段时间不接触之后,就几乎完全忘记了。对此我很是苦恼,于是萌生了写博客的想法,毕竟好记性不如烂笔头嘛。曾经听说过GitHub上可以搭建博客,也看到很多人是这样做的,正好借这个机会好好研究下。
MkDocs介绍
根据MkDocs官网介绍:
MkDocs is a fast, simple and downright gorgeous static site generator that's geared towards building project documentation. Documentation source files are written in Markdown, and configured with a single YAML configuration file.
MkDocs是一个快速、简单、华丽的静态站点生成器,适用于构建项目文档。文档源文件使用Markdown编写,并使用单个YAML配置文件进行配置。
MkDocs的特点有:
- 多个漂亮主题
- 易于个性化
- 实时预览
- 随处托管
快速搭建
新建GitHub仓库
打开GitHub官网并登录,新建一个仓库,名称必须为 <username>.github.io

将这个仓库克隆到本地,这里重命名为 github-pages
git clone https://github.com/<username>/<username>.github.io.git github-pages
安装MkDocs程序
进入 github-pages 目录
cd github-pages
创建python虚拟环境,这里使用 pipenv
pipenv install
安装MkDocs程序
pipenv install mkdocs
进入python虚拟环境
pipenv shell
检查是否安装成功
mkdocs --version
如果安装成功,则应该会输出MkDocs的版本信息

创建MkDocs工程
在当前目录( github-pages )下新建工程
mkdocs new .
然后编译MkDos文档
mkdocs build
这时会在当前目录下生成 site 文件夹,里面保存着网站的静态文件
预览和部署
MkDocs支持在部署之前,实时预览网页内容
mkdocs serve -a 0.0.0.0:8000
其中的 -a 选项用于指定绑定的 <IP:PORT> ,如果不指定,则默认为 localhost:8000
如果预览发现问题,直接修改文档源文件,MkDocs检测到文件发生变化会自动更新预览内容
预览如果没有发现问题,接下来就可以部署到GitHub了
mkdocs gh-deploy --clean
执行结束后,查看GitHub仓库,发现多了一个 gh-pages 分支,这个分支里存放的就是 site 文件夹中的内容
最后一步,配置GitHub Pages的构建和部署分支,将 Settings -> Pages -> Build and deployment -> Branch 设置为 gh-pages/(root),点击 Save 保存设置

这时理论上就可以正常访问自己刚刚搭建的博客了,在浏览器地址栏中输入 https://<username>.github.io/ ,若出现MkDocs的欢迎页则说明部署成功

配置网页
MkDocs工程的所有配置都集成在 mkdocs.yml 文件中
修改网页名称
网页名称就是显示在浏览器标签以及网页左上位置的内容,默认为 My Docs,可以在 mkdocs.yml 文件中的设置 site_name 来改变
site_name: <网页名称>
修改主题
MkDocs支持多个主题,内置主题有 mkdocs 和 readthedocs ,第三方主题可以在MkDocs Wiki找到,也可以自定义主题
这里我是用的是比较受欢迎的 material 主题
pipenv install mkdocs-material
material 主题的详细配置说明可以参阅Material for MkDocs,这里我的配置如下
theme:
name: material
language: zh
hljs_languages:
- yaml
markdown_extensions:
- toc:
permalink: true
- pymdownx.highlight:
linenums: true
anchor_linenums: true
- pymdownx.inlinehilite
- pymdownx.superfences
name指定使用的主题名称language指定网页语言hljs_languages指定额外需要高亮的语言toc用于设置目录,permalink: true表示为网页中的一级/二级/三级/...标题生成链接pymdownx.highlight用于设置代码高亮,linenums: true表示显示行号,anchor_linenums: true用于为代码块的行号生成链接pymdownx.inlinehilite启用对内联代码高亮的支持pymdownx.superfences允许在代码和内容块之间任意嵌套
最终效果如下

发布文章
MkDocs的文章以markdown文件的形式存储在docs文件夹下,其中 index.md 为主页
发布新文章时,在docs目录下新建 <article>.md 文件并编辑
然后修改 mkdocs.yml 文件,将新文章加到导航栏中
nav:
- 主页: index.md
- <标题>: <article>.md
标题可以不设置,MkDocs按照 nav配置的标题 > 文章中定义的标题(h1) > 文件名 的顺序进行推断
如果要使用多级导航,则可以这样配置
nav:
- 主页: index.md
- <分类>:
- <标题>: <aritle>.md
然后执行 mkdocs gh-deploy 命令部署到GitHub
自动部署
一般会将MkDocs源文件也推送到GitHub以防止丢失,这里我就直接推送到 main 分支
新建 .gitignore 文件,忽略掉除 docs 、 mkdocs.yml 以及 git 相关文件之外的文件
/*
!/docs
!/mkdocs.yml
!/.gitignore
!/.github
然后我们在编写完文章后,一般至少都要执行这些命令
git add .
git commit -m 'new article'
git push # 第一次push时执行git push -u origin main
mkdocs gh-deploy
本着省一点是一点的原则,前面几个 git 相关的命令无法省略,但 mkdocs gh-deploy 可以通过GitHub Actions来帮助我们自动完成
在仓库根目录下新建 .github/workflows 文件夹
mkdir -p .github/workflows
在 .github/workflows 文件夹下新建 gh-deploy.yml 文件,其他文件名也可以,内容如下,具体含义可以参考Deploy MkDocs
name: Publish docs via GitHub Pages
on:
push:
branches:
- main
jobs:
build:
name: Deploy docs
runs-on: ubuntu-latest
steps:
- name: Checkout main
uses: actions/checkout@v2
- name: Deploy docs
uses: mhausenblas/mkdocs-deploy-gh-pages@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
EXTRA_PACKAGES: build-base
在GitHub仓库页面中,将 Settings -> Actions -> General -> Workflow Permissions 设置为 Read an write permissions,点击 Save 保存设置

这样每次编写完文章,只需成功执行 git push ,GitHub就会自动帮助我们部署
参考资料
使用MkDocs搭建个人博客的更多相关文章
- windows上使用mkdocs搭建静态博客
windows上使用mkdocs搭建静态博客 之前尝试过用HEXO搭建静态博客,最近发现有个叫mkdocs的开源项目也是搭建静态博客的好选择,而且它支持markdown格式,下面简要介绍一下mkdoc ...
- 【原】Github+Hexo+NextT搭建个人博客
摘要 GitHub 是一个开源项目的托管网站,相信很多人都听过.在上面有很多高质量的项目代码,我们也可以把自己的项目代码托管到GitHub,与朋友们共享交流.GitHub Pages 是Github为 ...
- hexo+github搭建个人博客
最近用hexo+github搭建了自己的个人博客-https://liuyfl.github.io,其中碰到了一些问题,记录下来,以便查阅. hexo+github在win7环境下搭建个人博客:hex ...
- 【一】Ubuntu14.04+Jekyll+Github Pages搭建静态博客
本系列有五篇:分别是 [一]Ubuntu14.04+Jekyll+Github Pages搭建静态博客:主要是安装方面 [二]jekyll 的使用 :主要是jekyll的配置 [三]Markdown+ ...
- 利用Hexo搭建个人博客-博客发布篇
通过 <利用Hexo搭建个人博客-环境搭建篇> 以及 <利用Hexo搭建个人博客-博客初始化篇>,我们了解到了利用Hexo搭建个人博客需要的环境以及配置,下面这篇文章将会介绍如 ...
- 利用Hexo搭建个人博客-博客初始化篇
上一篇博文 <利用Hexo搭建个人博客-环境搭建篇> 中,我们讲解了利用Hexo搭建个人博客应该要配置哪些环境.相信大家已经迫不及待的想要知道接下来应该要怎么把自己的博客搭起来了,下面,让 ...
- 利用Hexo搭建个人博客-环境搭建篇
我是一个爱写博客进行总结分享的人.然而,有着热爱写博客并且深知写博客好处的我,却没有好好的把这个习惯坚持下来.如今毕业已经一年多了吧,每一次与师弟师妹们聊天,我总会意味深长的建议他们,一定要定期梳理总 ...
- hexo在git上搭建个人博客
公司实习第一天接到的任务是:搭建一个基于Nodejs的开源项目的开发环境,接到任务时以为不是很困难,后来才知道该项目已于去年被废弃,搭配环境的时候遇到了不少问题,折腾了两天还是没有最终完成... 不过 ...
- 使用jekyll在GitHub Pages上搭建个人博客【转】
网上有不少资源,但大多是“授人以鱼”,文中一步一步的告诉你怎么做,却没有解释为什么,以及他是如何知道的.他们默认着你知道种种专业名词的含义,默认着你掌握着特定技能.你折腾半天,查资料,看教程,一步步下 ...
- 使用github与jekyll搭建个人博客(一)
虽然使用博客园还没有多久,但是最近看到一些大神的博客觉得很是炫酷.于是突发奇想,想要搭建自己的博客站点儿.编程菜鸟一枚,还是想要记录下最近的搭建博客经历. 使用github搭建个人博客的方式有很多,百 ...
随机推荐
- 音视频八股文(11)-- ffmpeg 音频重采样
1重采样 1.1 什么是重采样 所谓的重采样,就是改变⾳频的采样率.sample format.声道数等参数,使之按照我们期望的参数输出. 1.2 为什么要重采样 为什么要重采样?当然是原有的⾳频参数 ...
- JavaWeb之day01html
目录: 1.html简介 - html的操作思想(*****) 2.文字标签和注释标签 3.标题标签.水平线标签和特殊字符 4.列表标签 5.图像标签(********) 6.路径介绍(相对路径*** ...
- 2023-02-13:力扣数据中心有 n 台服务器,分别按从 0 到 n-1 的方式进行了编号 它们之间以「服务器到服务器」点对点的形式相互连接组成了一个内部集群 其中连接 connections 是
2023-02-13:力扣数据中心有 n 台服务器,分别按从 0 到 n-1 的方式进行了编号 它们之间以「服务器到服务器」点对点的形式相互连接组成了一个内部集群 其中连接 connections 是 ...
- 2020-11-07:已知一个正整数数组,两个数相加等于N并且一定存在,如何找到两个数相乘最小的两个数?
福哥答案2020-11-07: 1.哈希法.2.排序+双指针夹逼. golang代码如下: package main import ( "fmt" "sort" ...
- 2022-06-03:a -> b,代表a在食物链中被b捕食, 给定一个有向无环图,返回这个图中从最初级动物到最顶级捕食者的食物链有几条。 来自理想汽车。
2022-06-03:a -> b,代表a在食物链中被b捕食, 给定一个有向无环图,返回这个图中从最初级动物到最顶级捕食者的食物链有几条. 来自理想汽车. 答案2022-06-03: 拓扑排序. ...
- 【GiraKoo】面向对象开发系列之【封装】
[技术分享]面向对象开发系列之[封装] 理解 封装是面向对象程序开发的基石. 程序开发,最核心价值,是数据. 程序其实是读取数据,操作数据,保存数据等一系列操作. 那么经过良好组织过的数据,将使编程事 ...
- Python分割多空格字符方法
问题: 现有一个字符串 "1 + 5" ,想要获取 1,+,5 这三个元素 做法: str.split(' ') ['1', '', '', '', '', '', '+', '' ...
- [SWPUCTF 2021 新生赛]no_wakeup
[SWPUCTF 2021 新生赛]no_wakeup 考点 反序列化 一.题目 打开题目发现如下代码 <?php header("Content-type:text/html;cha ...
- Bash 编程
原文:https://seankross.com/the-unix-workbench/bash-programming.html[1] 数学 创建math.sh: #!/usr/bin/env ba ...
- C++'s most vexing parse
本文地址 https://www.cnblogs.com/wanger-sjtu/p/16876846.html C++'s most vexing parse 是 Scott Meyers 在其名著 ...