2009年12月5日星期六

Trac + lighttpd 的安裝方法

上一次裝Trac已經是年多前的事,最近轉了工作環境,又要再裝一次,但這次設定有點不同,首先換成了Debian,然後由Apache變成了lighttpd,以下是我的安裝方法:


用戶要求:
  • 為每個項目開一個Trac的Repository
  • 每位同事在不同項目的權限並不一樣
  • 統一的密碼,所有Trac的repoistory應該使用同一個密碼檔。
  • SSL支援
  • 內部使用,不許公眾查閱
系統資料:

系統: Debian Lenny
網頁伺服器:Lighttpd
Trac版本 : 1.1

路徑:
TRAC_ENV=/var/lib/trac #Trac的Repository
PRIVATE=/var/lib/private # 放置密碼的地方。
CODENAME=test # 首個Trac repo的名字
PROJECT=$TRAC_ENV/$CODENAME #那個Trac repo的放放目錄

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

以下是我安裝的步驟:

1. 安裝Lighttpd

第一步是安裝及設定lighttpd:

$ apt-get install lighttpd

把以下設定加入 /etc/lighttpd/lighttpd.conf


$HTTP["host"] =~ "your-domain.com$" {
        server.document-root = "/var/lib/www/html"
        server.errorlog = "/var/log/lighttpd/your-domain.com.err.log"
        accesslog.filename = "/var/log/lighttpd/your-domain.com.access.log"
        var.fcgi_binary = "/usr/bin/python /usr/share/pyshared/trac/web/fcgi_frontend.py"
        auth.backend = "htpasswd"
        auth.backend.htpasswd.userfile="/var/lib/private/passwd"
        auth.require = ("/" =>
                ("method"  => "basic",
                 "realm"   => "First project",
                 "require" => "valid-user"
                ))

        fastcgi.server = ("/trac" =>
                   ("trac" =>
                     ("socket" => "/tmp/trac-fastcgi.sock",
                      "bin-path" => fcgi_binary,
                      "check-local" => "disable",
                      "bin-environment" =>
                        ("TRAC_ENV_PARENT_DIR" => "/var/lib/trac")
                     )
                   )
                 )
}

2. 安裝及設定Trac

$ apt-get install trac

插件

Trac 1.1預設已經提供了不少插件,但仍不足夠,最起碼都要裝Account Manager,那樣用戶才能在網頁上更改自己的密碼。


sudo apt-get install python-setuptools
sudo easy_install http://trac-hacks.org/svn/accountmanagerplugin/0.11 


路徑設定
sudo mkdir $TRAC_ENV
sudo chown -R www-data:www-data $TRAC_ENV
sudo chmod -R go-rwx $TRAC_ENV

sudo mkdir $PRIVATE
sudo chown -R www-data:www-data $PRIVATE
sudo chmod -R go-rwx $PRIVATE

建立Admin帳戶
sudo -u www-data htpasswd -c $PRIVATE/passwd admin



雖然我所採用的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均使用同一個密碼檔案
  • 使用account manager及webadmin plugin

基本的Trac管埋

1. 建立Trac Project

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

CODENAME=ProjectA
PROJECT=$TRAC_ENV/$CODENAME

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

因為lighttpd會用www-data存取資料,所以要用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 $PRIVATE/passwd username

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

trac-admin $PROJECT permission add ${username} developer

沒有留言:

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