BUG's Living Diary

Icon

蟲的生活日誌

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: 蟲的研究心得

subversion authentication with ldap and access control using apache 2.2

my operation system is FreeBSD 7

i place repositories in /usr/home/svn/

here is an example configuration fo apache at /usr/local/etc/apache22/Includes/mod_dav_svn.conf:

<Directory /usr/home/svn>
AllowOverride FileInfo AuthConfig Limit Indexes
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>

<Location /svn>
DAV svn
SVNParentPath /usr/home/svn
SVNListParentPath on

# specify 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://my-ldap-host:389/ou=People,dc=mis,dc=my-domain?uid?sub?(objectClass=*)”
Require valid-user

</Location>

now, we need to configure file /usr/home/svn/svn-access-file as following to control access right:

[groups]
#calc-developers = harry, sally, joe
admin = m1096345104, s1092137101

#[calc:/branches/calc/bug-142]
#harry = rw
#sally = r
# Groups can be granted access
#@paint-developers = rw

# possible to explicitly deny permission to someone via inheritance rules
#[calc:/branches/calc/bug-142/secret]
#harry =

[test:/]
@admin = rw

done.

reference: http://svnbook.red-bean.com/en/1.5/svn-book.html#svn.serverconfig.httpd.authz.perdir
http://svnbook.red-bean.com/en/1.5/svn-book.html#svn.serverconfig.pathbasedauthz

Filed under: 蟲的研究心得

Ubuntu – Evolution

Evolution 是一套 Ubuntu 內建的郵件及行事曆管理程式
本來不知道它有支援 Google Calender 還在那邊找 Plug-in 找半天
結果他己經有內建了 而且還是雙向的喔!!

ha, 他還可以整合在工作列的日期上
整個就是有加分

自從用了 ubuntu 9.04 後發現它改善了不少東西
也許是我剛好沒遇到什麼問題
但至少比起之前用 ubuntu 8 的時候好多了

像是 totem 的 codec 字幕的支援, 中文輸入法的問題, 還有行事曆, 即時通等的穩定度, 隨插即用的網路(這個比 windows 好多了), 介面的美觀及特效, Picasa 啊, netbeans, 也都能直上
我想都比以前成熟很多

MS Office 的東西也有 OpenOffice 的東西可以取代
Wine 的套件也能讓你執行不少 windows 的程式
平常真的只有在處理桌面事務的話其實是不錯的選擇

如果說要玩遊戲的話….看看就好

對於沒用過的人初此見面眼睛一定會為之一亮啊 XD

Filed under: 蟲的研究心得

Author

參觀人數

  • 19,615 人次

Flickr 相簿

DSCN1635

More Photos