星期六, 3月 18, 2006

lighttpd + WordPress 2.0 對於 Permlink 的處理

lighttpd + WordPress 2.0 使用 Permlink 的設定,重點在於 lighttpd.conf 裡的 mod_rewrite:
url.rewrite = ( "^/(archives|categories|comments|feed)/" => "/index.php" )

WordPress 裡 Permlink 則是設成:
/archives/%year%/%monthnum%/%day%/%post_id%/

Category 的部份則是:
/categories

星期三, 3月 01, 2006

FreeBSD NFS locking 問題

我們一直以為是 4.x 與 5.x/6.x 之間的問題,結果剛剛 ericlin 丟了一個這幾天的討論串過來,大光頭 Kris 還提供了一個 patch,是 lock_proc.c 這個檔案從 1.17 到 1.18 的 patch (6.0-RELEASE 是 1.18):NFS locking question

這個 patch 看起來是 transmit_result()transmit4_result() 的修正,不知道 4.x 有沒有 svc_getcaller(),如果有的話可以試著 patch 看看...

星期四, 2月 16, 2006

Slave News 與 Archive

由於硬碟故障,今天重新安裝 netnews4.csie.nctu.edu.tw...

Slave News 以前玩過 (上次是五年前剛接 netnews.nctu.edu.tw 的時候,當時要把 News 從現在 Group.NCTU.edu.tw 在用的機器換到現在在用的 1U server 上,為了降低搬移時對 BBS 以及 User 的衝擊,特地用 Slave 的架構同步兩邊的文章),沒想到在這麼多年後又有機會玩到了。

現在的 netnews4.csie (slave) 是跟 netnews.csie (master) 接,設定 xrefslave 以及 nnrpdposthost 後,把 active 與 newsgroups 複製到 netnews4 上,然後就開始跑... 看起來頗不賴 :p

另外這台 server 要當作資工的 archive server。舊的 archive 是學長直接改 INN 的 patch (我也不知道是誰改的),全文搜尋的部份 (很重要的功能) 其實不太好做。我今天跟 ericlin 討論了一下用 SQLite 的想法,他聽了一些以後覺得好像還蠻不錯的,於是我就開始規劃 Table 長什麼樣子,然後寫 SQLite 版本的 archive 了,已經寫完了,剩下還沒 debug 而已,另外就要寫 Web Interface...

剛好昨天看到 Yahoo! 釋出神祕 Library,一起來玩看看 :)

星期三, 2月 01, 2006

Firewall

剛剛在把 Firewall Spec 上的東西寫成 SQLite3 的 table。

邊看邊碎碎念:我當初怎麼會自己寫這些 Spec 啊,這些 Spec 要寫超多 code 的 XD

Anyway,只要 table 寫出來,其他刻 code 就很快了。第一版先用 Perl 寫,然後再開始改寫成其他語言... (應該不會發生第一個版本寫完就沒機會用其他語言寫的情況吧?@_@)

星期一, 1月 30, 2006

炸了整排的機器

過個年,整排機器炸掉:
  • csie.NCTU.edu.tw 的三台 NIS server 炸了兩台,mailgate 也炸掉 (於是 /var/mail 就沒掛上來),鑰匙管理系統因為是使用某台 NIS 上的 MySQL server,所以也上不去,於是不知道有誰有鑰匙,最後在 IRC 上問到在 lwhsu 那邊...
  • Deer.twbbs.org 也炸了,晚點回新竹看一看...
希望這樣就好...

星期日, 1月 29, 2006

OpenLDAP

OpenLDAP 官方網站的 A Quick-Start Guide 寫得很簡單,不過實際上到了 ldapadd 的地方就不會動了,會有錯誤訊息:
testbase [/home/staff/gslin/work] -gslin- ldapadd -x -D 'cn=Manager,dc=testbase,dc=gslin,dc=org' -W -f test.ldif
Enter LDAP Password:
adding new entry "dc=testbase,dc=gslin,dc=org"
ldap_add: Naming violation (64)
additional info: value of naming attribute 'dc' is not present in entry

其他的說明文件也都是照這份延伸出去的,所以就卡住了... 我超討厭這種情況 -_-

這代表又要用 Google 找半天了...

Update:我用 my-domain.com 的例子就成功了,至少知道問題在哪裡了 o_O

星期一, 1月 09, 2006

管理一堆 FreeBSD 的方法

以前在計中弄二三十台 FreeBSD 的時候就是用 screen + portupgrade 一次把幾十台機器升級,升級完整個重開機就好了,不用管什麼東西升級完要重跑。安裝新軟體如果需要指定 WITH_BLAH=yes 或是其他的東西,記得到每台上面的 /usr/local/etc/pkgtools.conf 改一下。(以前的 ports 還沒有 OPTIONS 這個功能)

這個模式在我一個人管的時候很好,但是當要傳承的時候就糟糕了:要瞭解這種方法的人大概都需要玩過一陣子 FreeBSD,知道只靠系統基本的套件管理是不夠的,才會有感覺。D2 上面是到了 ronnywang 才接下去。現在在交大資工當系計中助教也遇到同樣的問題。

一種想法是利用 package 更新 (這個在將 ccbsd*.csie.nctu.edu.tw 重灌成 FreeBSD 6 已經實行一段時間了),但目前最大的問題在於使用 package 會:
  • 無法善用每台機器的 CPUTYPE。
  • 某些 ports 無法產生 package,像是 screen (技術問題)、jdk (授權問題)。
另外,有時候會發生套件安裝好,但是無法產生 package 的慘劇。這個方法其實問題還蠻多的。

我昨天又想到了另外一個作法,我不知道可不可行,不過看起來會比原來的方法好,但是重新安裝機器時的速度一定會比 package 的方法慢:
  • 每天在 ccduty 上產生 package list (像是 sysutils/screen 這種字串,一行一個),排序後塞入 svn repository。另外將 /usr/local/etc/pkgtools.conf 也塞進去。
  • 要安裝新機器的時候,先將 /usr/local/etc/pkgtools.conf 抓回來,再用 cat ports-list.txt | xargs portinstall 把軟體安裝進去。
也許 ccbsd8 可以試看看這種方式。

星期二, 1月 03, 2006

The GNU Problem Report Management System

The GNU Problem Report Management System 就是 GNATS,我打算拿這套系統給系上用。

初期 (等下先弄的部分) 可能先做:
  • 將每次開會完所決定的事項到 GNATS 上面指定,下次開會的時候就知道到底做的如何了。
  • 值班系統會負責 submit pr 給每一班的值班助教,請他們檢查一些東西 (第一班與最後一班會多一些東西),如果值班助教有遇到問題,但是自己解決不了的,可以利用 Change Responsible 的功能交棒給下一班,如果自己能解決,只是要比較久的也可以註明上去。(這樣就不會有上一班以為交給下一班,下一班以為上一班自己要解決的事了 o_O)
再來可能會做的:
  • 將鑰匙管理系統移到上面,兩把鑰匙變成兩個狀態永遠是 open 的 pr,鑰匙的移交透過 Change Responsible 的功能實做。如果怕一個 pr 太長,那就每次開會的時候總管檢查過鑰匙後把舊的 pr close 掉,再開一個新的 pr。
  • 訂閱 CERT、{FreeBSD,Linux} Security Advisory,寫一個 Shell Script 接,然後每次收到以後就送 pr 進去,要求每個 TA 檢查系統。
目前大概只想到這樣...

星期一, 12月 19, 2005

很被動

在外面工作以後就會發現自己非常不適合當主管類型的人,倒是很適合在下面當小囉囉讓人使喚。尤其是在進度上面超級被動,一定要被催了以後才會弄 @_@ (我要向 hlb 懺悔 :~)

星期二, 11月 29, 2005

FreeBSD 6.0

上個禮拜系計中三樓機房開會時,談到將部分工作站換成 FreeBSD 6.0 的可行性,我就向總管借了兩台機器 (ccbsd6 與 ccbsd7),在公告停機升級後,打算把整台機器重新安裝。

選這兩台主機的原因是因為前面的 ccbsd1 ~ ccbsd3 用的人都還蠻多的,而 ccbsd5 是 qkmj Server,再後面的 ccbsd8 ~ ccbsd10 是學生的 WWW Server,ccbsd11 與 ccbsd12 是 AMD64 (目前是跑 FreeBSD 5.4),所以從中間抽兩台 :p

但是安裝前發現 ccbsd6 是 Gopher Server,於是暫時決定不要動這台,只重新安裝了 ccbsd7。ccbsd7 不快 (開機時顯示的是 AMD Duron(tm) processor (853.51-MHz 686-class CPU)),不過還好,上面用的人本來就不多,可以慢慢裝。

以前 ccbsd* 維持軟體更新都是透過 rsync/usr/local 整個複製過去 (...),於是 /var/db/pkg 下都是空的,而且有些軟體會因為沒有對應的 uid/gid 或是目錄而有問題。所以這次重新規劃的時候就決定用 packages 的方式建立,一方面可以知道這台機器上的到底是跑哪個版本,另外一方面則可以透過 packages 建立好相關的環境。

再來就是文件的問題,之前留下來的文件就是教你透過 rsync 直接複製整個 /etc 或其他需要設定的檔案 (gosh!),而且之前的 CMS 沒有搜尋的功能 (大家最後都是跑到目錄下用 grep 找 -_-),趁著 Wiki 有個樣子,把文件丟上去...