搭建我的wiki站點

原文請猛戳:http://galoisplusplus.coding.me/blog/2013/09/19/have-fun-with-vim-wiki/php

寫blog確實是一種消化和深刻理解知識的方式,但每每要整理一個完整的主題至關的耗時間。
平時我也想記一記一些有用然而散亂的tips,慢慢積累起來。
做爲一位Vim忠實粉,我理所固然找到了大名鼎鼎的Vim插件Vimwiki
並開始藉此搭建個人我的wiki。css

pathogen這個管理Vim插件的插件把Vimwiki安裝上後,須要在.vimrc中加入一些設置,其中最重要的是指定你所寫的wiki源文件的路徑和要發佈的html文件的路徑:html

let g:vimwiki_list = [{'path': '~/my_site/', 'path_html': '~/public_html/'}]

接下來就能夠在你所指定的'path'下建立.wiki文件,編輯完後是用如下Vim命令html5

:Vimwiki2HTML

Vimwiki插件就會自動將該.wiki文件轉化爲同名的html頁面(例如topic.wiki生成的是topic.html)並把html放到你所指定的'path_html'下。
若是要轉化全部條目能夠用如下的Vim命令:linux

:VimwikiAll2HTML

<!-- more -->git

有了html頁面,天然想發佈到某網站上。我選擇了提供pages服務的業界良心Github,建立一個名爲wiki的新repo(https://github.com/yszheda/wiki),把'path_html'上的html文件託管到上面,並經過gh-pages分支發佈個人Project pages(http://yszheda.github.io/wiki/)
頁面的樣式我偷懶直接使用了Github官方提供的Architect主題,爲了讓該主題應用到全部Vimwiki生成的html頁面上,須要修改Vimwiki插件目錄下的autoload/vimwiki/default.tpl模板文件:github

<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>

<!--
<link rel="Stylesheet" type="text/css" href="%root_path%%css%">
-->
<link href='https://fonts.googleapis.com/css?family=Architects+Daughter' rel='stylesheet' type='text/css'>
<link rel="stylesheet" type="text/css" href="stylesheets/stylesheet.css" media="screen" />
<link rel="stylesheet" type="text/css" href="stylesheets/pygment_trac.css" media="screen" />
<link rel="stylesheet" type="text/css" href="stylesheets/print.css" media="print" />

<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->

<title>%title%</title>
<meta http-equiv="Content-Type" content="text/html; charset=%encoding%">
</head>
<body>
<header>
<div class="inner">
<h1>Wiki</h1>
<h2>by yszheda</h2>
<a href="https://github.com/yszheda/wiki" class="button"><small>View project on</small>GitHub</a>
</div>
</header>

<div id="content-wrapper">
<div class="inner clearfix">
<section id="main-content">
%content%
</section>
<aside id="sidebar">
<p>Wiki maintained by <a href="https://github.com/yszheda">yszheda</a></p>
<p>This page was generated by <a href="pages.github.com">GitHub Pages</a> using the Architect theme by <a href="https://twitter.com/jasonlong">Jason Long</a>.</p>
</aside>
</div>
</div>
</body>
</html>

接下來要折騰的就是自動發佈Vimwiki生成的html頁面了。
我寫了一個簡單的auto-deploy.sh腳本:vim

#!/bin/bash
path_html=     # set your vimwiki html path
cd $path_html
git checkout gh-pages
git add *.html
git commit -m"syn at `date`"
git push origin gh-pages

再把它設置爲定時做業,能夠用經典的crontab,例如crontab -e後加入:api

* 20 * * * /<path>/auto-deploy.sh

設置每日晚上八點自動發佈。bash

不過做爲一名Arch user,很早之間就當小白鼠從sysvinit遷移到了systemd,天然要試試這個高大上的systemd
systemd也支持定時做業,以個人例子來說,我但願每日定時發佈,能夠從建立通常的daily event開始。

編輯/etc/systemd/system/timer-daily.timer文件:

[Unit]
Description=Daily Timer

[Timer]
OnBootSec=10min
OnUnitActiveSec=1d
Unit=timer-daily.target

[Install]
WantedBy=basic.target

編輯/etc/systemd/system/timer-daily.target文件:

[Unit]
Description=Daily Timer Target
StopWhenUnneeded=yes

建立如下目錄,做爲接下來要被執行的具體的定時做業的服務設置文件的路徑:

mkdir /etc/systemd/system/timer-daily.target.wants

在該目錄下添加具體要被執行的定時做業的服務設置文件/etc/systemd/system/timer-daily.target.wants/syn-vimwiki.service

[Unit]
Description=syn vimwiki

[Service]
Nice=19
IOSchedulingClass=2
IOSchedulingPriority=7
ExecStart= /<path>/auto-deploy.sh

最後執行

systemctl enable timer-daily.timer && systemctl start timer-daily.timer

便可。

設置按小時或按星期定時發佈也是能夠的,
萬能的Arch wiki上都有詳細的說明。

===我是分隔線===

後來我又改主意了,想頻繁更新,同時也不想像wiki那樣搞得那麼麻煩。因而我把syn-wiki單獨出來,syn-vimwiki.service文件移到它的父目錄(/etc/systemd/system/),同時給它設個獨立的timer。如下是/etc/systemd/system/syn-vimwiki.timer文件的內容:

[Timer]
OnUnitActiveSec=10s
OnBootSec=10s

[Install]
WantedBy=basic.target

最後執行

systemctl enable syn-vimwiki.timer && systemctl start syn-vimwiki.timer
systemctl restart syn-vimwiki.service

===我是分隔線===

關於systemd再多囉嗦幾句,遷移到systemd後天然仍是能夠用原來的cron服務的,若是某一天你打了雞血,忽然變激進了,想把cron撤掉換成純systemd(Arch發行版就常常幹這種事XD),在執行

systemctl stop cronie && systemctl disable cronie

以前,別忘了加入logrotateman-db-updatemlocate-updateverify-shadow這些服務的配置文件。
至於具體的內容,萬能的Arch wiki也早爲不折騰不死的你準備好了XD

相關文章
相關標籤/搜索