当前位置: 首页 > 编程日记 > 正文

使用 mkdocs 搭建个人 wiki 站点

原文: https://rebootcat.com/2020/09/20/wiki/

why wiki

博客通常是用来记录一些完整的文章,每篇文章有一个主题。但是我想把平日里的一些笔记也记录到我的博客里,但笔记是零散的,随时的,不是完整的一个主题。所以打算构建一个 wiki 页面,专门用来存放我的笔记,wiki 页面类似于 维基百科的形式。

我的博客采用的是 hexo 构建的,如果打算 DIY 一个类似于 维基百科 的 wiki 页面的话,对于我来说,也许有点难度,毕竟我只会写简单的网页。那么有没有现成的方案或者替代的方案呢?

答案是有的,那就是 mkdocs

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. Start by reading the introduction below, then check the User Guide for more info.

mkdocs 是一个用 python 编写的静态站点生成工具,主要是用来编写项目文档,文档使用 Markdown 编写,只需要配合一个 YAML 配置文件,就能快速生成一个站点。

毫无疑问,对于我来说,它有以下几个优点:

  • 使用 python 编写(说明有 DIY 的可能)
  • 源文件使用 Markdown 编写
  • 只需要一个 Yaml 文件,非常简单了
  • 主题可选(当然目前来说不是特别多)

可以先看一下 我的wiki.

快速开始

可以参考官方文档:mkdocs.org,或者直接往下看:

首先安装 mkdocs:

$ pip install mkdocs

安装完成之后直接生成一个项目:

$ mkdocs new mysite                                                                    [23:33:49]
INFO    -  Creating project directory: mysite
INFO    -  Writing config file: mysite/mkdocs.yml
INFO    -  Writing initial docs: mysite/docs/index.md

看看都生成了啥:

$ cd mysite
$ tree                                                                                    [23:34:59]
.
├── docs
│   └── index.md
└── mkdocs.yml1 directory, 2 files

默认生成了一个 yml 配置文件以及一个 默认的 markdown 文件。

看看 mkdocs 支持哪些命令:

$ mkdocs -h                                                                               [23:36:21]
Usage: mkdocs [OPTIONS] COMMAND [ARGS]...MkDocs - Project documentation with Markdown.Options:-V, --version  Show the version and exit.-q, --quiet    Silence warnings-v, --verbose  Enable verbose output-h, --help     Show this message and exit.Commands:build      Build the MkDocs documentationgh-deploy  Deploy your documentation to GitHub Pagesnew        Create a new MkDocs projectserve      Run the builtin development server

构建站点:

$ mkdocs build

然后生成了一个 site 目录:

$ tree                                                                                    [23:37:23]
.
├── docs
│   └── index.md
├── mkdocs.yml
└── site├── 404.html├── css│   ├── base.css│   ├── bootstrap.min.css│   └── font-awesome.min.css├── fonts│   ├── fontawesome-webfont.eot│   ├── fontawesome-webfont.svg│   ├── fontawesome-webfont.ttf│   ├── fontawesome-webfont.woff│   ├── fontawesome-webfont.woff2│   ├── glyphicons-halflings-regular.eot│   ├── glyphicons-halflings-regular.svg│   ├── glyphicons-halflings-regular.ttf│   ├── glyphicons-halflings-regular.woff│   └── glyphicons-halflings-regular.woff2├── img│   ├── favicon.ico│   └── grid.png├── index.html├── js│   ├── base.js│   ├── bootstrap.min.js│   └── jquery-1.10.2.min.js├── search│   ├── lunr.js│   ├── main.js│   ├── search_index.json│   └── worker.js├── sitemap.xml└── sitemap.xml.gz7 directories, 28 files

可以看到 site 目录下就是站点的源码了,那么本地测试一下:

$ mkdocs serve

然后访问 http://127.0.0.1:8000,能看到默认的站点了:

是不是超级超级简单

那么这个是 mkdocs 最简单的使用,接下来分享下我的使用,经过了一些定制化,包括主题的选择,域名的绑定,站点的发布等。

使用 github pages 发布 wiki

我的博客使用了 github pages 进行托管(目前不是,目前已经迁移到香港虚拟空间),但是如何把上面 mkdocs 生成的站点源码和博客源码放到一起呢?

有很多方法,比如可以手动把 wiki 站点源码放到博客根目录下;

但其实 github pages 是可以支持多个站点的,不知道有没有同学还不知道?

简单来说,使用一个 github 账号,能创建一个 用户站点,格式为 <user>.github.io,比如我的博客源码仓库: smaugx.github.io;

但是除了一个用户站点之外,还能创建任意多个 普通站点,仓库名字任意,没有要求。

也就是说一个 github 账户其实是可以创建多个博客站点的

关于如何创建一个普通站点,可以参考 github 官方文档:创建 GitHub Pages 站点.

或者往下看。

wiki 仓库设置

这里以我的 wiki 为例: https://github.com/smaugx/wiki,站点效果可以直接查看我的 wiki: https://rebootcat.com/wiki。

1 在 github 上创建一个仓库,命名为 wiki 或者其他的任意名字

2 克隆我的项目: git clone https://github.com/smaugx/wiki.git

3 更改仓库 remote-url 为你刚创建的 wiki 的 github url

cd wiki
git remote rm origin
git remote add origin  https://github.com/yourname/your-wiki.git

上面改成你自己的 wiki 地址(或者使用 ssh 的方式)

4 推送本地仓库 wiki 到远程 wiki

git push -u origin master

至此,你的 github 上应该有一个和我的 wiki 仓库一样的仓库了。

接下来讲一下怎么设置仓库。

5 首先去到刚创建好的 wiki 仓库 https://github.com/yourname/your-wiki

6 点击设置,往下拉到 GiHub Pages 配置项,选择 master 分支,选择 /docs 目录,然后点击 save 保存

7 上面一部之后,再次回到 Github Pages 配置项,找到下面的 Custom domain,填入你的域名或者 url 地址,比如我直接写了: http://rebootcat.com/wiki

8 不出意外,你就能正常访问了。

上面的前提当然是你已经有了个人博客,也就是已经有了一个命名为 <user>.github.io 的仓库了,不然是不会成功了,你要先创建一个这样的仓库。

编写wiki,更新 wiki

上面如果顺利的话,你能看到和我的 wiki 一样的内容:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uQ6zJqkk-1601038121725)(https://cdn.jsdelivr.net/gh/smaugx/MyblogImgHosting_2/rebootcat/wiki/1.png)]

那么如何编写你自己的 wiki 文章呢?

我们回到本地的 wiki 仓库:

cd wiki

注意,我的文档都放在了 source 目录下:

$ ls source
git.md    index.md  other.md  python.md rsync.md

所以你只需要删除我的 Markdown文档,把你的 Markdown 文档放到该目录,然后执行:

$ python run.py
warning: found not support file type:.DS_Store
############### begin dump mkdocs.yml ###############
copyright: "Copyright \xA9 2020-2020 smaug"
docs_dir: source
extra:article_nav_bottom: truehistory_buttons: trueversion: v1.0.4
markdown_extensions:
- admonition
nav:
- Home: index.md
- python: python.md
- rsync: rsync.md
- git: git.md
- "\u5176\u4ED6": other.md
repo_url: https://github.com/smaugx/wiki
site_author: smaugx
site_description: "My Wiki | \u6797\u5915\u6C34\u5171"
site_dir: docs
site_name: "My Wiki | \u6797\u5915\u6C34\u5171"
site_url: http://rebootcat.com/wiki
theme:custom_dir: mkdocs_windmillinclude_search_page: truename: nullsearch_index_only: truestatic_templates:- 404.html############### update mkdocs.yml done ############################## begin mkdocs build ###############
INFO    -  Cleaning site directory
INFO    -  Building documentation to directory: /Users/smaug/centos7/SmaugDemo/wiki/docs
INFO    -  Documentation built in 0.18 seconds
############### mkdocs build done in dir:docs ############################## begin git push:git add --all . && git commit -m "update mkdocs site" && git push ###############
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 443 bytes | 443.00 KiB/s, done.
Total 5 (delta 4), reused 0 (delta 0)
remote: Resolving deltas: 100% (4/4), completed with 4 local objects.
To github.com:smaugx/wiki.gitba3b15e..4131b86  master -> master
[master 4131b86] update mkdocs site2 files changed, 1 insertion(+), 1 deletion(-)
############### git push done ###############

这个脚本的功能是根据 source 目录下的 Markdown 文档,更新 yaml 站点配置文件,然后生成站点源码,然后推送站点源码到 github 上。

如果执行出错,可以自行调试一下,一般问题不大。

博客首页引导栏添加 维基

这个过程就省略了。

The End

wiki 站点搭建完毕,

Blog:

  • rebootcat.com

  • email: linuxcode2niki@gmail.com

2020-09-20 于杭州
By 史矛革

相关文章:

追忆童年,教你用Python画出儿时卡通人物

作者 | 张同学来源 | 凹凸数据大家好&#xff0c;我是张同学。又到一年一度的国际儿童节&#xff0c;作为逢节必过的程序猿&#xff0c;怎么可以放过这个学习技能的机会呢&#xff1f;于是&#xff0c;今天我们来学习 Python 的 Turtle 库绘制童年的卡通人物&#xff0c;一起做…

xx学OD -- 消息断点 RUN跟踪(上)

这一篇讲的是 消息断点和RUN跟踪的简单知识这一篇没怎么看明白 大概使用知道了 怎么用不太清楚。介绍本次软件特点输入后木有反应(纱布垃圾的。。哈哈)启动OllyDBG载入这个程序&#xff0c;F9让它运行。这个程序按我们前面讲的采用字串参考或函数参考的方法都很容易断下来。…

iOS-UIWebView添加头部和尾部

2019独角兽企业重金招聘Python工程师标准>>> 前言 项目中使用UIWebView显示本地或者是服务器上的页面很容易&#xff0c;但是仅限于显示页面&#xff0c;可控性并不高&#xff0c;如果有需要在头部和尾部加上原生的view&#xff0c;显示部分信息相对于全部使用UIWeb…

epoll 入门例子 tcp server/client

原文&#xff1a; https://rebootcat.com/2020/09/26/epoll_examples/ 复习一下 上一篇博文 epoll原理深入分析 详细分析了 epoll 底层的实现原理&#xff0c;如果对 epoll 原理有模糊的建议先看一下这篇文章。那么本文就开始用 epoll 实现一个简单的 tcp server/client。 本…

张红忠:智慧化时代,如何通吃5G模组、AIoT?

受访者 | 张红忠&#xff0c;日海智能副总裁、云AIoT创新中心总经理记者 | Aholiab&#xff0c;编辑 | 邓晓娟出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;日海智能是目前国内AIoT领域的头部企业&#xff0c;以AIoT为核心&#xff0c;形成了5G&AI物联网终端、…

JQUERY打造隐藏在左侧的弹性弹出菜单

代码简介&#xff1a; 隐藏在左侧的弹性弹出菜单&#xff0c;从淘宝扣下来的&#xff0c;也可作为JAvaScript缓冲动画的典型教程。本弹性菜单可扩展性强&#xff0c;实际上不光可以做成菜单&#xff0c;也可布局一些图文混排的内容或一段视频&#xff0c;总之被弹出的内容是在一…

Num55 boss09(activiti安装以及API)

2019独角兽企业重金招聘Python工程师标准>>> 安装流程设计器插件&#xff1a; 使用框架提供的方式创建23张表&#xff1a; 流程部署&#xff0c;定义&#xff0c;启动&查询&#xff0c;办理任务&#xff1a; 流程的部署&#xff0c;查询&#xff0c;删除 & …

模仿nginx修改进程名

个人博客原文&#xff1a; https://rebootcat.com/2020/10/25/setproctitle/ nginx 进程名 使用 nginx 的过程中&#xff0c;我们经常看到 nginx 的进程名是不同的&#xff0c;如下&#xff1a; $ ps -ef |grep nginx smaug 1183 1115 0 05:46 pts/2 00:00:00 grep …

机器学习模型的超参数优化 | 原力计划

作者 | deephub责编 | 王晓曼出品 | CSDN博客头图 | CSDN付费下载自东方IC引言模型优化是机器学习算法实现中最困难的挑战之一。机器学习和深度学习理论的所有分支都致力于模型的优化。机器学习中的超参数优化旨在寻找使得机器学习算法在验证数据集上表现性能最佳的超参数。超参…

准备IE--复习NP,NP从头开始,每天学一点,就多一点收获

2011-07-07 今天开始重新开始NP&#xff01;每天一实验&#xff0c;加油&#xff01;写下心路历程&#xff0c;为自己加油&#xff01;转载于:https://blog.51cto.com/sunchangsheng/605482

[20160608]自治事务引起死锁.txt

[20160608]自治事务引起死锁.txt --链接http://www.itpub.net/thread-2060966-2-1.html上的讨论,很久以前也遇到过 --(http://blog.itpub.net/267265/viewspace-721262/),时间有点久远,自己重复测试看看: 1.环境: SCOTTtest> &r/ver1 PORT_STRING V…

动感效果的TAB选项卡 jquery 插件

动感效果的TAB选项卡 jquery 插件 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns"http://www.w3.org/1999/xhtml"><head><me…

Linux上隐藏进程名(初级版)

缘起 上一篇博文 模仿nginx修改进程名 中提到了一种修改进程名的方法&#xff0c;就像 nginx 一样&#xff0c;给不同进程命名为 master 以及 worker 等。那么能不能把新进程名设置为空字符串呢&#xff1f;如果能&#xff0c;又会有哪些应用场景呢&#xff1f; 答案可能是能…

神操作!一行Python代码搞定一款游戏?给力!

来源&#xff1a;pypl编程榜一直以来Python长期霸占编程语言排行榜前三位&#xff0c;其简洁&#xff0c;功能强大的特性使越来越多的小伙伴开始学习Python 。甚至K12的同学都开始学习Python 编程。新手入门的时候趣味性其实最重要的。那么一行Python 代码到底能玩出什么花样&a…

jquery对所有input type=text的控件赋值

function resetData() { $("input[typetext]").each( function() { $(this).attr("value",""); } ); }

free not return memory

个人博客&#xff1a;https://rebootcat.com/2020/11/05/free_mem/ 内存泄露&#xff1f; 观察到一台机器上的内存使用量在程序启动之后&#xff0c;持续增长&#xff0c;中间没有出现内存恢复。怀疑是不是出现了内存泄露的问题&#xff1f; 然后使用相关的内存分析工具进行了…

成大事必备9种能力

挑战生存的能力&#xff1a;善于在现实中寻找答案 1、摆正心态&#xff0c;敢于面对现实 对于那些不停地抱怨现实恶劣的人来说&#xff0c;不能称心如意的现实&#xff0c;就如同生活的牢笼&a…

懂语言者得天下:NLP凭什么被称为人工智能的掌上明珠?

受访者 | 简仁贤&#xff0c;竹间智能创始人&CEO记者 | 邓晓娟出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;随着技术的发展&#xff0c;大数据、云计算、人工智能、区块链都慢慢地为人熟知。2016 年 Google 推出 AlphaGo&#xff0c;让人工智能走进了大众的视…

[转]SIFT特征提取分析

SIFT&#xff08;Scale-invariant feature transform&#xff09;是一种检测局部特征的算法&#xff0c;该算法通过求一幅图中的特征点&#xff08;interest points,or corner points&#xff09;及其有关scale 和 orientation 的描述子得到特征并进行图像特征点匹配&#xff0…

博客大事记之迁移博客到香港主机

个人博客&#xff1a;https://rebootcat.com/2020/11/10/move_blog_hk/ 前言 之前其实已经写过一篇博文&#xff1a; 迁移博客到香港虚拟空间&#xff0c;那为什么又要写这篇博客呢&#xff1f; 上次其实是把我的博客迁移到一个香港的虚拟空间里&#xff0c;但是不到半年的时…

限时福利:腾讯高级专家手把手教你打造 OCR 神器!

OCR&#xff0c;英文全称即 optical characters recognition&#xff08;光学字符识别&#xff09;&#xff0c;通过服务器把图片上的文字识别出来&#xff0c;以供大家编辑使用&#xff0c;比如进出火车站的时候&#xff0c;已经可以自动识别的身份证&#xff1b;在道路行驶中…

C++与.net的编译方式

C和.Net程序采用了两种不同的编译方式。 通常一个C编写的程序&#xff0c;都是一次编译成二进制的代码&#xff0c;在相应的操作系统平台上直接执行即可。 而.Net程序采用两次编译的方式&#xff0c;用C#&#xff0c;VB.Net等语言写成的程序被编译成IL代码&#xff0c;通过CLR在…

awk (一)

示例文件&#xff1a;[rootorclsrv ~]# catsample Heigh-ho! sing,heigh-ho! unto the green holly: Most friendship isfeigning, most loving mere folly: Then, heigh-ho, theholly!使用感叹号(!) 作为字段分隔符(FS)打印示例数据的第1 个字段&#xff1a;[rootorclsrv~]# …

TCP全连接和半连接的问题探讨

个人博客&#xff1a; https://rebootcat.com/2020/11/14/tcp_accept/ 从何说起 说起 tcp 的连接过程&#xff0c;想必 “3次握手4次挥手”是大家广为熟知的知识&#xff0c;那么关于更细节更底层的连接过程也许就很少人能讲清楚了。 所以本文会先简单回顾一下 tcp 的 3次握手…

[转] ASP.NET MVC3 路由和多数据集的返回

1.ASP.NET MVC3 中的路由 同前边一样本篇并不会过多的介绍理论知识&#xff0c;我们在Global.asax.cs文件中可以看到如下代码&#xff1a; routes.MapRoute("Default", // Route name"{controller}/{action}/{id}", // URL with parametersnew { controlle…

给Python代码加上酷炫进度条的几种姿势

作者 | 刘早起来源 | 早起Python&#xff08;ID: zaoqi-python&#xff09;大家好&#xff0c;在下载某些文件的时候你一定会不时盯着进度条&#xff0c;在写代码的时候使用进度条可以便捷的观察任务处理情况&#xff0c;除了使用print来打印之外&#xff0c;今天本文就介绍几种…

(转)mongodb分片

本文转载自&#xff1a;http://www.cnblogs.com/huangxincheng/archive/2012/03/07/2383284.html 在mongodb里面存在另一种集群&#xff0c;就是分片技术&#xff0c;跟sql server的表分区类似&#xff0c;我们知道当数据量达到T级别的时候&#xff0c;我们的磁盘&#xff0c;内…

深入浅出paxos

原文 https://rebootcat.com/2020/12/05/paxos/

Uber 前无人驾驶工程师告诉你,国内无人驾驶之路还要走多久?

受访者 | Graviti 创始人&CEO 崔运凯记者 | Aholiab&#xff0c;编辑 | Carol出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;经过数年的发展&#xff0c;现在的人们谈到“AI”已经不再像过去一般感到遥不可及。但 AI 在国内发挥的作用仍然只是冰山一角&#xff…

oracle服务

OracleOraDb11g_home1ClrAgent服务&#xff0c;在网上查找到了资料 http://download.oracle.com/docs/cd/B19306_01/win.102/b14306/install.htm Configuring Extproc Agent Using Windows Service As part of Oracle Database Extensions for .NET installation, a Windows se…