說明
記錄一下自己成功的經驗,因為參考的網址在有些小地方的實作上我不是看得很懂。
追加以下三個自己的實作紀錄:
- 建立 tracd 的帳號
- 設定 tracd 的權限。
- 將 tracd 註冊成 Windows Service 。
檔案下載
全部以 Subversion 1.4.0 及 Python 2.4.4 為主。
- Subversion : (svn-win32-1.4.0.zip)
- Python 2.4.4 : (python-2.4.4.msi)
- Python bindings for Subversion : (svn-win32-1.4.0_py-2.4.exe)
- pysqlite : (pysqlite-2.3.2.win32-py2.4.exe)
- ClearSilver : (clearsilver-0.9.14.win32-py2.4.exe)
- Trac : (trac-0.10.win32.exe)
- Windows 2003 Resource Kits (rktools.exe)
安裝
Subersion 安裝請參考:在 Windows 上安裝 Subversion 獨立伺服器,這裡我安裝在 D:\Appserv\svn\ 。
安裝 Python 2.4.4 ,我是將它安裝在 D:\Appserv\python 。
將 D:\Appserv\python 加到 PATH 系統環境變數裡。
執行 svn-win32-1.4.0_py-2.4.exe ,會在 Python 的安裝目錄中註冊 svn 模組。
執行 pysqlite-2.3.2.win32-py2.4.exe ,會在 Python 的安裝目錄中註冊 pysqlite 模組。
執行 clearsilver-0.9.14.win32-py2.4.exe ,會在 Python 的安裝目錄中註冊 clearsilver 模組。
執行 trac-0.10.win32.exe ,會在 Python 的安裝目錄中註冊 trac 模組。
-
執行 rktools.exe ,這會把 Windows Resource Kits 安裝在 C:\Program Files\Windows Resource Kits\Tools\ 下。
-
把 C:\Program Files\Windows Resource Kits\Tools 加到 PATH 系統環境變數裡。
建立專案
以下的步驟都是在 Command Line 模式執行,所以請先執行 cmd.exe 。
我們先在 D:\Repository 下建立一個名為 test 的 Subversion 專案。當然這邊 test 只是示範,請自行決定專案名稱。
1D:\Repository>svnadmin create test在 D:\Appserv 下建立一個 trac 資料夾。
切換到 D:\Appserv\python\Scripts 下,建立一個名為 test 的 trac 專案。
1D:\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 是專案名稱,不要照抄了。
我們可以重複前三個步驟來建立其他專案。
建立帳號
這裡的帳號權限僅適用在 Standalone 的 tracd 服務,所以可以的話,請儘量和 Subversion 建立同樣的帳號密碼。
接下來要先建立供 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 會用到,因此建議不用改。
現在,我們可以用以下指令來建立新的帳號:
1D:\Appserv\python\Scripts>python trac-digest.py -u <username> -p <password> >> D:\Appserv\trac-user.txt其中 <username> 和 <password> 請自行決定;執行後,我們就能在 D:\Appserv 多出一個 trac-user.txt ,裡面就有剛剛建好的帳號以及編碼過後的密碼。
我們可以重複上面的兩個步驟來加入其他的使用者。
設定權限
接下來的步驟都需要用 trac-admin 這個指令檔,並在 Command Line 模式下操作,我們可以用以下指令來查看 trac-admin 的操作方式:
1
| |
每個專案預設都有一個 anonymous 的匿名帳號,它已經包含了許多預設的權限。輸入以下指令可以查看它在 test 專案裡所擁有的權限:
1
| |
而以下指令則可查看所有使用者的權限以及可用的權限選項:
1
| |
如果不想讓 anonymous 這個預設帳號擁有所有權限的話,可以一次把它們都拿掉。輸入以下指令:
1
| |
假設我們想讓某個帳號同時擁有查看及修改 WIKI 的權限,則可輸入:
1
| |
註:帳號一定要用小寫,權限則是一定要大寫;更多的權限設定可以參考 Trac Permissions 。
或者我們也可以先將一堆權限指定給一個群組,如下:
1
| |
其中 <groupname> 就是群組名稱,和帳號一樣一定要用小寫。群組不必真的建立出來,它只會存在於 trac 自己的設定裡。然後我們就可以用以下的指令來把使用者帳號加入群組裡:
1
| |
註:很麻煩的是 trac-admin 一次只能更改一個使用者 (或群組) 在一個專案上的權限,不曉得有沒有什麼方便的工具可以使用。
建立 Service
我找到了一篇以 Windows Service 啟動 Python Script 的文章,在實作後是可行的。記錄如下:
-
在 Command Line 模式下執行 (注意雙引號也要鍵入) :
1C:\>instsrv Trac "C:\Program Files\Windows Resource Kits\Tools\srvany.exe"完成後,可以打開服務管理員,裡面應該註冊好一個名為 Trac 的服務。
在 D:\Appserv 下建立一個 trac.bat ,內容為:
1D:\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 底下的專案全部納入管理。
再提醒一次,以上的設定請自行依照實際需要去更改,不要照抄了。
執行 regedit.exe (登錄編輯程式) ,找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Trac ,然後在上面按下滑鼠右鍵,新增一個名為 Parameters 的機碼。
接著再點選剛剛的 Parameters 機碼,然後在登錄編輯程式右半邊的空白處按下滑鼠右鍵,新增一個名為 Application 的字串值。
點兩下剛剛的 Application 字串值,數值資料上填入剛剛 trac.bat 的路徑:
1D:\Appserv\trac.bat完成設定後,應如下圖所示:

關掉登錄編輯器,回到服務管理員,就可以啟動 Trac 服務了。
執行
開啟瀏覽器,在網址列上輸入:
1
| |
應該就能看到以下畫面:


