網站製作學習誌

記錄學習製作網站的一切

在 Windows 上安裝 Trac 專案管理軟體

說明

記錄一下自己成功的經驗,因為參考的網址在有些小地方的實作上我不是看得很懂。

追加以下三個自己的實作紀錄:

  • 建立 tracd 的帳號
  • 設定 tracd 的權限。
  • 將 tracd 註冊成 Windows Service 。

檔案下載

全部以 Subversion 1.4.0 及 Python 2.4.4 為主。

  1. Subversion : (svn-win32-1.4.0.zip)
  2. Python 2.4.4 : (python-2.4.4.msi)
  3. Python bindings for Subversion : (svn-win32-1.4.0_py-2.4.exe)
  4. pysqlite : (pysqlite-2.3.2.win32-py2.4.exe)
  5. ClearSilver : (clearsilver-0.9.14.win32-py2.4.exe)
  6. Trac : (trac-0.10.win32.exe)
  7. Windows 2003 Resource Kits (rktools.exe)

安裝

  1. Subersion 安裝請參考:在 Windows 上安裝 Subversion 獨立伺服器,這裡我安裝在 D:\Appserv\svn\ 。

  2. 安裝 Python 2.4.4 ,我是將它安裝在 D:\Appserv\python 。

  3. 將 D:\Appserv\python 加到 PATH 系統環境變數裡。

  4. 執行 svn-win32-1.4.0_py-2.4.exe ,會在 Python 的安裝目錄中註冊 svn 模組。

  5. 執行 pysqlite-2.3.2.win32-py2.4.exe ,會在 Python 的安裝目錄中註冊 pysqlite 模組。

  6. 執行 clearsilver-0.9.14.win32-py2.4.exe ,會在 Python 的安裝目錄中註冊 clearsilver 模組。

  7. 執行 trac-0.10.win32.exe ,會在 Python 的安裝目錄中註冊 trac 模組。

  8. 執行 rktools.exe ,這會把 Windows Resource Kits 安裝在 C:\Program Files\Windows Resource Kits\Tools\ 下。

  9. 把 C:\Program Files\Windows Resource Kits\Tools 加到 PATH 系統環境變數裡。

建立專案

以下的步驟都是在 Command Line 模式執行,所以請先執行 cmd.exe 。

  1. 我們先在 D:\Repository 下建立一個名為 test 的 Subversion 專案。當然這邊 test 只是示範,請自行決定專案名稱。

    1
    
    D:\Repository>svnadmin create test
  2. 在 D:\Appserv 下建立一個 trac 資料夾。

  3. 切換到 D:\Appserv\python\Scripts 下,建立一個名為 test 的 trac 專案。

    1
    
    D:\Appserv\python\Scripts>python trac-admin D:\Appserv\trac\test initenv

    接著會出現以下提示文字,請依照下面的建議操作:

    1
    2
    3
    4
    5
    
    Project Name [My Project]> <strong>test</strong> (輸入專案名稱)
    Database connection string [sqlite:db/trac.db]> (直接按 Enter 使用預設值)
    Repository type [svn]> (直接按 Enter 使用預設值)
    Path to repository [/path/to/repos]> <strong>D:\Repository\test</strong> (輸入 Subversion 專案檔案庫的位置)
    Templates directory [D:\Appserv\python\share\trac\templates]> (直接按 Enter 使用預設值)

    記得 test 是專案名稱,不要照抄了。

  4. 我們可以重複前三個步驟來建立其他專案。

建立帳號

這裡的帳號權限僅適用在 Standalone 的 tracd 服務,所以可以的話,請儘量和 Subversion 建立同樣的帳號密碼。

  1. 接下來要先建立供 trac 使用的帳號,首先請先把以下內容存成 trac-digest.py ,並放到 D:\Appserv\python\Scripts 下。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    from optparse import OptionParser
    import md5
    # build the options
    usage = "usage: %prog [options]"
    parser = OptionParser(usage=usage)
    parser.add_option("-u", "--username",action="store", dest="username", type = "string",
    help="the username for whom to generate a password")
    parser.add_option("-p", "--password",action="store", dest="password", type = "string",
    help="the password to use")
    (options, args) = parser.parse_args()
    # check options
    if (options.username is None) or (options.password is None):
    parser.error("You must supply both the username and password")
    # Generate the string to enter into the htdigest file
    <strong>realm = 'trac'</strong>
    kd = lambda x: md5.md5(':'.join(x)).hexdigest()
    print ':'.join((options.username, realm, kd([options.username, realm, options.password])))

    注意這裡的 realm ,雖然我們可以將它換成別的文字,但是後面建立 Serivce 會用到,因此建議不用改。

  2. 現在,我們可以用以下指令來建立新的帳號:

    1
    
    D:\Appserv\python\Scripts>python trac-digest.py -u <username> -p <password> >> D:\Appserv\trac-user.txt

    其中 <username> 和 <password> 請自行決定;執行後,我們就能在 D:\Appserv 多出一個 trac-user.txt ,裡面就有剛剛建好的帳號以及編碼過後的密碼。

  3. 我們可以重複上面的兩個步驟來加入其他的使用者。

設定權限

接下來的步驟都需要用 trac-admin 這個指令檔,並在 Command Line 模式下操作,我們可以用以下指令來查看 trac-admin 的操作方式:

1
D:\Appserv\python\Scripts><strong>python trac-admin help</strong>

每個專案預設都有一個 anonymous 的匿名帳號,它已經包含了許多預設的權限。輸入以下指令可以查看它在 test 專案裡所擁有的權限:

1
D:\Appserv\python\Scripts><strong>python trac-admin D:\Appserv\trac\test permission list anonymous</strong>

而以下指令則可查看所有使用者的權限以及可用的權限選項:

1
D:\Appserv\python\Scripts><strong>python trac-admin D:\Appserv\trac\test permission list</strong>

如果不想讓 anonymous 這個預設帳號擁有所有權限的話,可以一次把它們都拿掉。輸入以下指令:

1
D:\Appserv\python\Scripts><strong>python trac-admin D:\Appserv\trac\test permission remove anonymous *</strong>

假設我們想讓某個帳號同時擁有查看及修改 WIKI 的權限,則可輸入:

1
D:\Appserv\python\Scripts><strong>python trac-admin D:\Appserv\trac\test permission add <username> WIKI_VIEW WIKI_MODIFY</strong>

註:帳號一定要用小寫,權限則是一定要大寫;更多的權限設定可以參考 Trac Permissions

或者我們也可以先將一堆權限指定給一個群組,如下:

1
D:\Appserv\python\Scripts><strong>python trac-admin D:\Appserv\trac\test permission add <groupname> WIKI_VIEW  WIKI_MODIFY</strong>

其中 <groupname> 就是群組名稱,和帳號一樣一定要用小寫。群組不必真的建立出來,它只會存在於 trac 自己的設定裡。然後我們就可以用以下的指令來把使用者帳號加入群組裡:

1
D:\Appserv\python\Scripts><strong>python trac-admin D:\Appserv\trac\test permission add <username> <groupname></strong>

註:很麻煩的是 trac-admin 一次只能更改一個使用者 (或群組) 在一個專案上的權限,不曉得有沒有什麼方便的工具可以使用。

建立 Service

我找到了一篇以 Windows Service 啟動 Python Script 的文章,在實作後是可行的。記錄如下:

  1. 在 Command Line 模式下執行 (注意雙引號也要鍵入) :

    1
    
    C:\>instsrv Trac "C:\Program Files\Windows Resource Kits\Tools\srvany.exe"

    完成後,可以打開服務管理員,裡面應該註冊好一個名為 Trac 的服務。

  2. 在 D:\Appserv 下建立一個 trac.bat ,內容為:

    1
    
    D:\Appserv\python\pythonw.exe D:\Appserv\python\Scripts\tracd --port 8000 --auth *,D:\Appserv\trac-user.txt,trac -e D:\Appserv\trac
    • –port 8000 是指 tracd 監聽的 port 。
    • –auth *,D:\Appserv\trac-user.txt,trac 是讓所有的專案都擁有同樣的帳號,開頭的 * 號是指全部專案,中間的 D:\Appserv\trac-user.txt 是剛剛的帳號檔,最後的 trac 則先前提到的 realm 說明 。
    • -e D:\Appserv\trac 是把 D:\Appserv\trac 底下的專案全部納入管理。

    再提醒一次,以上的設定請自行依照實際需要去更改,不要照抄了。

  3. 執行 regedit.exe (登錄編輯程式) ,找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Trac ,然後在上面按下滑鼠右鍵,新增一個名為 Parameters 的機碼。

  4. 接著再點選剛剛的 Parameters 機碼,然後在登錄編輯程式右半邊的空白處按下滑鼠右鍵,新增一個名為 Application 的字串值。

  5. 點兩下剛剛的 Application 字串值,數值資料上填入剛剛 trac.bat 的路徑:

    1
    
    D:\Appserv\trac.bat

    完成設定後,應如下圖所示:

  6. 關掉登錄編輯器,回到服務管理員,就可以啟動 Trac 服務了。

執行

開啟瀏覽器,在網址列上輸入:

1
http://localhost:8000/

應該就能看到以下畫面:

參考

  1. Barsara's 2006: TRAC架設記錄
  2. Trac Standalone Server On Windows
  3. Tracd
  4. Running a Python script as a Windows service

Comments