2008年5月26日星期一

安裝Trac

公司的開發團隊漸漸成形,有同事提出是時候需要建立一個Issue tracking的系統,我當然支持這個提議,問題是到底應該用那套系統呢?

第一個想到的是Trac,然後是GForge,後者許久以前裝過,大概是3.0時候的事情,那時痛苦的經驗讓我決定先試Trac。

Trac是現今開源界裏十分常用的Wiki與Issue tracking系統,優點是架構輕巧,易於安裝及管理。但相對開發的日子較短,有些地方的支援略嫌不足,例如是工作管理的功能較陽春,幸好系統本身的設計有彈性,不足的地方可以自行修改。

優點:
  • Wiki與Issue tracking整合,可以用簡單的語法將二者的資料連結。例如說在Wiki裏打#1就可以直結到1號的ticket/issue。
  • 安裝簡單,容易備份:資料庫可選用sqlite,直接存放在Project repository內,備份就只需把目錄內所有的檔案抄走。

缺點:
  • Trac 1.0本身並沒有web的admin module,由增減Milestone到permission等等圴需依懶指令模式輸入,不過可以安裝webadmin plugin去解決,而該plugin已經在1.1裏被整合到trac內。
  • Wiki的功能有點陽春,不過已足夠應用

同事對系統有以下的要求:
  • 為每個項目開一個Trac的Repository
  • 每位同事在不同項目的權限並不一樣
  • 統一的密碼,所有Trac的repoistory應該使用同一個密碼檔。
  • SSL支援

Web伺服器的限制:
  • 沒有domain name,只有內部的IP地址。

基本設定

系統: Ubuntu 7.10
Trac版本 : 1.0

路徑:
/var/lib/trac #Trac的Repository
/var/lib/private # 放置密碼的地方。

Trac的安裝方式:
  1. 採用Apache而非Standalone的trac
  2. mod_python代替cgi
  3. Trac layout為Multiple Trac Projects - Multiple Repositories - Multiple Databases。 詳見 http://trac.edgewall.org/wiki/TracCaseStudies
  4. 版本控制:沒有,因為代碼放在其他地方

以下是我安裝的方法:

Apache

第一步是安裝及設定Apache,在Ubuntu/Debian裏是相當之簡單的。

$ apt-get install apache2 libapache2-mod-python libapache2-mod-python-doc

跟著是設定網站有關的設定,因為沒有domain的關係,所以無法使用Virtual Host,故我的設定跟一般的文件的會有所分別:

設定檔: /etc/apache2/sites-available/trac

NameVirtualHost *:443
<VirtualHost *:443 >
ServerAdmin webmaster@localhost

<location /trac> #set up Trac handling
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /var/lib/trac
PythonOption TracUriRoot /trac

AuthType Basic
AuthName "Trac Projects"
AuthUserFile /var/lib/private/passwd
SetEnv PYTHON_EGG_CACHE /tmp/trac-eggs
Require valid-user
</location>

SSLEngine on
SSLCertificateFile /etc/apache2/apache.pem

ErrorLog /var/log/apache2/error.trac.log
CustomLog /var/log/apache2/access.trac.log combined
</VirtualHost>
$ a2ensite trac

安裝Trac的套件

$ apt-get install trac

路徑設定

sudo mkdir /var/lib/trac
sudo chown -R www-data:www-data /var/lib/trac
sudo chmod -R go-rwx /var/lib/trac

sudo mkdir /var/lib/private
sudo chown -R www-data:www-data /var/lib/private
sudo chmod -R go-rwx /var/lib/private

建立Admin帳戶
sudo htpasswd -c /var/lib/private/passwd admin

安裝插件

視乎裝的是什麼版本的Trac,如果是1.0的話我會強烈建議安裝Webadmin,大於1.0就已經整合進去了故不需要。

這個插件最主要的功用是提供Web的管理,沒有它的話就會連增減項目的Milestone都要經指令介面進行。

sudo apt-get install python-setuptools
easy_install http://svn.edgewall.com/repos/trac/sandbox/webadmin/
easy_install http://trac-hacks.org/svn/accountmanagerplugin/0.10

設定Trac

雖然我所採用的Trac Layout為Multiple Trac Project,但不代表每次增加Project都要把所有設定寫一遍,你可以把一些基本的設定放在/etc/trac/trac.ini裏,以下我的設定:

[attachment]
max_size = 1048576

[account-manager]
password_file = /var/lib/private/passwd
password_store = HtPasswdStore

[components]
webadmin.* = enabled
acct_mgr.admin.accountmanageradminpage = enabled
acct_mgr.api.accountmanager = enabled
acct_mgr.db.sessionstore = enabled
acct_mgr.htfile.htpasswdstore = enabled
acct_mgr.pwhash.htpasswdhashmethod = enabled
acct_mgr.pwhash.htdigesthashmethod = enabled
acct_mgr.web_ui.accountmodule = enabled
acct_mgr.web_ui.loginmodule = enabled
acct_mgr.web_ui.registrationmodule = enabled

- 增加附件的大小限制
- 所有Trac Project均使用同一個密碼檔案
- 使用webadmin plugin

基本的Trac管埋

1. 建立Trac Project

假設這個項目叫ProjectA,那麼要先用以下指令建立Trac Project

CODENAME=ProjectA
PROJECT=/var/lib/trac/$CODENAME

sudo -u www-data trac-admin $PROJECT initenv

因為要給Apache存取,所以要用www-data用戶來建立,不過之後的指令用root來跑也沒什麼問題.

2. 設定權限

在我們的系統裏有三種權限,一是admin,能為所欲任,什麼事都能做到,跟著是項目的manager,可以修改項目的設定,增減milestone、修改其他人權限等等,然後是權限最低的developer。

cd $PROJECT
trac-admin . permission remove anonymous '*' #首先移除anonymouse,不讓沒有權限的人觀看

trac-admin . permission add developer MILESTONE_VIEW REPORT_SQL_VIEW REPORT_VIEW ROADMAP_VIEW SEARCH_VIEW TICKET_CREATE TICKET_MODIFY TICKET_VIEW TIMELINE_VIEW WIKI_CREATE WIKI_MODIFY WIKI_VIEW

trac-admin . permission add manager MILESTONE_ADMIN CONFIG_VIEW WIKI_ADMIN SEARCH_VIEW TICKET_ADMIN ROADMAP_ADMIN TIMELINE_VIEW ROADMAP_VIEW TICKET_VIEW REPORT_ADMIN

trac-admin . permission add admin TRAC_ADMIN

3. 增加用戶

Trac本身沒有自己的帳戶管理,複雜的可以選擇使用ldap,簡單的什麼都沒有,任所有人修改,當然在公司的立場裏是不可能的,那麼進一步,直接用htaccess來管理亦可以,故此增加帳戶不過是……

htpasswd -c /var/lib/private/passwd username

然後記得為該用戶設定權限

trac-admin $PROJECT add username developer

大功告成!

1 則留言:

Haggen So 說...

This may be helpful to you

Collaborative Development Environment: A State Of The Art

http://www.qualipso.org/index.php?option=com_content&task=view&id=19&Itemid=31

Creative Commons License
本網誌Ben Lau製作,以共享創意署名-非商業性-相同方式共享 3.0 香港 授權條款釋出。