BUG's Living Diary

Icon

蟲的生活日誌

Trac – Page2Docbook on FreeBSD

Docbook 是一種來輸出書藉的 XML 格式
Trac 中可以將 Wiki 的部份轉換為 Docbook 的格式
這樣的功能可以很方便的將 Wiki 中積存已久的文件, 以書的型式輸出
當然 Docbook 輸出的型式包含了 pdf, html, chm… 依不且需求可以使用不同的格式發行
這使得我們不需要再為每種格式都製作一份文件,
附帶一提, freebsd 的文件也是以這種方式輸出

我們需要的套件叫做
Page2Docbook – http://trac-hacks.org/wiki/Page2DocbookPlugin

python 的安裝方式很件單只要透過 easy_install

easy_install http://trac-hacks.org/svn/page2docbookplugin/page2docbook/

就會幫你從 SVN 上將最新版本的 plugin 抓下來並且安裝
由於這個套件還需要一些 python 的 extensions 在它的說明文件中有提到

python-uTidyLib
python-libxml2
python-libxslt

在 FreeBSD 平台上的使用者不需要擔心, 這幾個套件 FreeBSD 都納進了 Ports 當中了
只需要進入 Ports 底下的目錄:

/usr/ports/www/py-utidy
/usr/ports/textproc/py-libxml2
/usr/ports/textproc/py-libxslt

使用 make install clean 分別安裝完以上的套件後
就可以在 Trac Admin 中的 Plugins 看到這個 Page2Docbook 的出現
接著就是將他打勾, 就能使用了

Filed under: 蟲的點點滴滴

the forward road

終於口試完了

累積了很久的時間才有空打這篇文章

也許是幸運吧

至少到目前為止, 我對未來的路並不感到迷惑

以前只是一個人獨自接著小小的案子

直到現在可以成立一家公司的規模

看著開發團隊一點一滴的茁壯

難免有一些想法和期望寄託

我很喜歡這種感覺

有好多好多的想法想要去實現

好像回到了國中跟大家一起開發 MUD 的時候

人總是會有好多的夢想

其實我很配服像 clode 一樣他能在出社會工作之後

還能一點一滴的去實現他對遊戲想法

也許這個東西不一定會熱賣或賺錢

重要的是這份心思

總是不希望自己是一個只著眼在利益觀點的人

比起這些我更期望能完成一些夢想

嗯…

加油吧大家

Filed under: 蟲的點點滴滴

trac + subversion + apache + ldap with multiple projects

這個標題還真長, 不過就如同標題所寫的

這是一個 tutorial, 如果你想要管理多個 project 用 trac & subversion & ldap

軟體版本:

  • Subversion 1.6
  • Apache 2.2
  • Trac 0.11
  • mod_python 3.3

先備的動作:

  • 安裝 subversion with mod_dav_svn option
  • 安裝 trac on Apache using mod_python

trac 跟 subversion 有一個共同的特色, 就是它們都可以透過 apache 作認證,
因此我們是透過 apache 去做 LDAP 的認證

首先你必須先建立一個存放 svn repoistories 的目錄, 我是建在 /home/svn
同樣的也需要一個存放多個 project 的 trac 目錄, 我是建在 /home/trac

接下來要做的就是 apache 的設定分別是
/usr/local/etc/apache22/Includes/mod_dav_svn.conf:

<Location /svn>

DAV svn
SVNParentPath /usr/home/svn
SVNListParentPath on

# our access control policy
AuthzSVNAccessFile /usr/home/svn/svn-access-file

AuthType Basic
AuthName “Subversion repository”

# Make LDAP the authentication mechanism
AuthBasicProvider ldap

# Make LDAP authentication is final
AuthzLDAPAuthoritative on

AuthLDAPURL “ldap://ldap-host:389/ou=People,dc=test,dc=domain?uid?sub?(objectClass=*)”
Require valid-user

</Location>

設定好了這些在重開 apache 之後應該是能在 http://hostname/svn  底下看到你的所有 repositories (當然要先登入)

再來就是 /usr/local/etc/apache22/Includes/trac.conf:

<Location /trac>

SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /usr/home/trac
PythonOption TracUriRoot /trac

</Location>
<LocationMatch “/trac/[^/]+/login”>

AuthType Basic
AuthName “Trac”

# Make LDAP the authentication mechanism
AuthBasicProvider ldap

# Make LDAP authentication is final
AuthzLDAPAuthoritative on

AuthLDAPURL “ldap://ldap-host:389/ou=People,dc=test,dc=domain?uid?sub?(objectClass=*)”
Require valid-user

</LocationMatch>

完成以上的動作, 也完成了三分之二的設置, 最後你會發現一個問題
如果你沒有仔細的在用或許不會發現

在管理多個 repositories 的過程中, 我們會透過 SVN Access File 來控管各個 repositories 以及 repository 中目錄的存取權
然而, 這個設定到目前為止只有 svn 在使用, 也就是說 trac 他仍然可以不受限制的讀 repository 中的所有檔案,
如果要把這份限制應用到 trac 上就必須在 trac 的設定檔

/usr/home/trac/<project_name>/conf/trac.ini 加入以下的設定:

[trac]
authz_file = /usr/home/svn/svn-access-file
authz_module_name = <project_name>

  1. authz_file 用來指定到 svn 所定義的 access file 引用相同的限制
  2. authz_module_name 是用來設定, 這個 trac project 所使用的 repository name

一般來講在只有一個 project 的情況下是不需要設 authz_module_name 的,
但 svn 在管理多個 repositories 的 acl 的時候, 用了 [repository name:path] 的格式
來定義各別 repository 的存取權, 因此為了讓 trac 能明白自己所使用的 repository name 因此要再定義此項設定
否則存取權的設定結果可能不會如你所預期的運作

有關 SVN Access FILE 的設定說明可以參考此處:

  1. Bug’s Living Diary – Subversion Authentication with LDAP and access control using apache 2.2
  2. Svnbook – HttpD Authz PerDir
  3. Svnbook – Path based Authz

有關 Trac 設定的參考文獻如下:

  1. Bug’s Living Diary – Trac + Apache + LDAP at FreeBSD 7
  2. Trac – TracPythonMod
  3. Trac – TracFineGrainedPermissions
  4. Trac – TracIni

Filed under: 蟲的研究心得

trac using apache2 + mod_python + ldap at FreeBSD 7

FreeBSD 的 Ports collection 很貼心把 trac 都準備好了
你會需要的 ports 有:

www/apache22
www/trac
www/mod_python3

我把 trac 的 projects parent dir 放在 /usr/home/trac
你可以用 trac-admin 在這個目錄下開 project
你可以參考 TracAdmin

然後加上一點設定在 /usr/local/etc/apache22/httpd.conf:

LoadModule python_module libexec/apache22/mod_python.so

以及新增一個檔案 /usr/local/etc/apache22/Includes/trac.conf 如下:

SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /usr/home/trac
PythonOption TracUriRoot /trac

如果要登入驗證一樣用 apache ldap 的方式在 trac.conf 的檔案中加上:

AuthType Basic
AuthName “Trac”
AuthBasicProvider “ldap”
AuthLDAPURL “ldap://adserver.company.com:3268/DC=company,DC=com?sAMAccountName?sub?(objectClass=user)”
AuthLDAPBindDN ldap-auth-user@company.com
AuthLDAPBindPassword “the_password”
require valid-user

其實這些這裡都有教:
TracModPython

Filed under: 蟲的研究心得

trac vs mantis

why so many people is using trac to development project
為了一探究竟, 只好自已著手來試試了

目前我所使用的 issue tracker 是 mantis, trac 與 mantis 同樣對於 VCS(Version Control System) 都有可以 reference 的功能

但在專案的處理上是有點差異的我將兩個做一個比較:

mantis: 它易於安裝使用, 單純的環境 php + mysql 如同大多數的網站系統, 這個 issue tracker 在 workflow 的部份是有做控管, 你可以指派的方式去 assign somebody to do something, 它可以同時掌管多個 project, 也有統計的資訊可供管理者參考, 不過談到與 VCS 整合的部份, 它比 trac 弱, 也許是由於語言的特性, 在與 VCS 整合時只能做到 reference 的功能透過 SVN 的 post-commit

trac: 這個 issue tracker 給人的感覺就是一種 open source 的感覺, 這是什麼樣的感覺? 它沒有太大的限制與條件, 你可以用 wiki 的方式去編寫你的頁面與相關文件, 簡單的 new ticket 可以提出新的需求或問題, 以及 milestone 的功能做為開發的版本依據, 但沒有多專案控管以及 workflow 等功能, 如果單純談 issue track 我覺得它比 mantis 略遜一籌, 但在與 VCS 的整合方面又比 mantis 人性了許多, 它直接支援 SVN 的 repository, 你可以從 timeline 以及 browse source 的地方看到最近 VCS 上的編修, 以 diff 的方式呈現, 可讓管理者較易於去監控每個修改的狀況及內容, 另外一點值得注意的是在 trac 的套件資源, 是比 mantis 還要來的多的, 大部份主要是 plugin 是可以擴充 wiki 的功能, 與其他應用的整合為主, 像對於 SVN 的 repository/access 控管都有對應的 plugin, 這也是 mantis 有所不及的

conclusion:

整體而言

trac 比較適合在單一 project, 且給內部人員在使用的 issue tracker, 使用的人對於開發的經驗要足夠, 要能夠了解整個 open source 的開發方式與流程, 例如說: 主動的去維護 wiki, 或者 repository 內一些修改的錯誤與問題

而 mantis 對於 PM 掌控多個 project 而且對於問題的分派與流程控管這方面是較強的, 也比較適用於開放外部的顧客去回應一些問題及建議, 因此開發人員能夠較 focus 在自己的問題之下, 管理人員也能隨時監控, 了解一般使用者對於系統的需求

額外的一點:
針對了 LDAP 支援的部份由於在使用上的需要, 我也在此做一點比較

trac 使用的驗証方式跟 subversion 是類似的, 需要透過 apache web server 的 ldap module 來做到這個功能

而 mantis 是能夠直接支援 ldap 透過在設定檔上的設定

上述的差異可能是由於語言限制所產生的, 但需要修改 apache 的方式相較之下會較為麻煩, 但基本上都是支援 ldap 的

Filed under: 蟲的研究心得

Author

參觀人數

  • 19,615 人次

Flickr 相簿

DSCN1635

More Photos