July 5, 2011

pmwiki + git

No comments:
身為一個記性不好的阿宅,最煩惱的一點莫過於工作上閱讀過的東西,過了一段時間就忘光光。當然我也有做筆記的習慣,但有時候某些指令就只記在本子裡,偏偏需要用到的時候本子就不在身邊。

於是乎,我在自己的電腦裡面弄一個簡單的 wiki 來作筆記。

非常感謝網路上許多朋友的幫忙,尋找 wiki 的時候給了很多建議。當時朋友給的建議我都有一個個去嘗試,最後根據我的需求決定了 pmwiki,一直用到現在有一年多的時間了。

我的需求大致如下,pmwiki 不見得全部涵蓋
  • 有搜尋功能,包括中文搜尋
  • 不要有 mysql 之類的 database
  • 容易備份
  • 容易重建
  • 最好不要有 Apache

作筆記這種事情,最昂貴的就是投注知識的時間,寫在紙本上如果弄丟就什麼都沒有了。雖然用數位的方式來紀錄,理論上來說要更容易保存。但我們都知道,硬碟很容易壞,事實上我們更常弄丟電腦裡的資訊。

解決這個問題的方法就是異地備援,但是身為一個人,尤其是現代人,最怕的就是麻煩。如果備份與回復的方式很麻煩,相信沒有人會持續備份。

選擇 pmwiki 的原因在於它不需要 mysql,所有的資料都用純文字儲存,而且支援中文搜尋。東西寫多了就是需要靠搜尋。

既然是純文字,搭配 git 來作管理就變得很方便。於是乎,備份或是重建 wiki 的動作,就僅僅只是 git 的 push 或是 clone 而已。這是我每天都在做的事情,太簡單了!

寫了一個很簡單的小 script,執行一次它就會以當下的時間為 log 做一次 commit,並且 push 到 remote server 去。

配合 crontab 每天執行一次,就此我只要專心寫我的筆記就好。換新電腦的時候,只要架好 apache,一個 git clone 的指令我就可以繼續筆記。

Installation

Apache
很不幸地,還是需要安裝 Apache。詳細的過程我忘記了,依稀記得需要兩個模組才能夠在自己的家目錄底下執行 pmwiki
$ sudo aptitude install libapache2-mod-suphp libapache2-mod-php5
$ sudo gedit /etc/suphp/suphp.conf  # 把 check_vhost_docroot 的值由 true 改成 false
Git
$ mkdir $HOME/public_html
$ cd $HOME/public_html
$ git clone git://github.com/walkingice/pmwiki.git
到這邊開始,就有 pmwiki 可以用了,在瀏覽器打開 127.0.0.1/~YOURID/pmwiki/pmwiki.php 應該就能看見。

How to backup
首先你要在別的機器上面有一個 git repository,假設那台機器的位置是 git.my.server,你在上面的帳號叫做 foo
$ ssh foo@git.my.server
$ mkdir mywiki
$ cd mywiki
$ git init --bare
接著進到自己電腦裡面的 pmwiki 目錄底下編輯 updater.pl,把幾個值改成
my $LOCAL_BRANCH  = 'master';
my $REMOTE_NAME   = 'brainless';
my $REMOTE_SERVER = 'foo@git.my.server';
my $REMOTE_BRANCH = 'master';
執行 ./updater.pl,它應該會開始把東西 push 上去,以後只要定期跑 updater.pl 就可以了。
其中 REMOTE_NAME 只是替 remote server 取一個名字而已,隨便取沒關係。如果你會使用 git,希望在自己家裡面弄好幾個筆記的 branch,才需要動到 LOCAL_BRANCH 跟 REMOTE_BRANCH。

Update:
Xdite 建議了 gollum,有興趣的鄉親也可以試試看
https://github.com/github/gollum