2012年11月9日 星期五

Trac 基本安裝設定

相關檔案下載
apache_2.0.59-win32-x86-no_ssl.msi 當做伺服器,這裡一定要用 2.0.x
svn-win32-1.4.3.zip
SVN程式
python-2.4.4.msi
Python程式
mod_python-3.2.10.win32-py2.4-apache2.0.exe 配合上面的 Apache Python 版本,並抓取最新版
svn-python-1.4.3.win32-py2.4.exe 透過 Python 操控 SVN
pysqlite-2.5.6.win32-py2.4.exe 透過 Python 操控 Sqlite
clearsilver-0.9.14.win32-py2.4.exe 樣版引擎
SilverCity-0.9.7.win32-py2.4.exe 程式碼上色模組
ez_setup.py setuptools 模組
trac-0.10.3.win32.exe
Trac程式
TortoiseSVN-1.7.10.23359-x64-svn-1.7.7.msi
TortoiseSVN程式
LanguagePack_1.7.10.23359-x64-zh_TW.msi
TortoiseSVN中文語言套件
svn2cl-0.7-win2



安排目錄結構
把相關的程式放在 C:\AppServ 底下,而檔案庫則放在 C:\Repository 底下
C:
|
|- AppServ (伺服器相關程式)
|        |
|        |- Apache2 ( Apache 的主要程式檔)
|        |
|        |- python ( Python 的主要程式檔)
|        |
|        |- svn ( Subversion 的主要程式檔)
|        |
|        |- trac ( Trac 的相關批次程式檔)
|
|- Repository (檔案庫)
|        |
|        |- svn
|        |
|        |- trac


安裝 Apache 2
1. 有使用 IIS 的話,請先把 IIS 停掉。然後執行 apache_2.0.59-win32-x86-no_ssl.msi
2. Apache HTTP Server 2.0.xx Install to 改到 C:\AppServ ,這樣下方 Apache Runtime Install to 會自動變成 C:\AppServ\Apache2
3. C:\AppServ\Apache\conf\httpd.conf 中把 Port 80 改成 Port 8000 (或其他不影響系統運作的數字) ,然後重新啟動 Apache IIS
4. C:\AppServ\Apache2\bin 加入系統變數 PATH 裡,這樣方便到時候直接使用指令來控制 Apache


安裝 Subversion
1. 解開 svn-win32-1.4.3.zip ,將 svn-win32-1.4.3 這個資料夾重新命名為 svn (裡面應該有 bin 等資料夾) ,並將它移至 C:\AppServ
2. C:\AppServ\svn\mod_authz_svn.so C:\AppServ\svn\mod_dav_svn.so 兩個檔案複製到 C:\AppServ\Apache2\modules
3. C:\AppServ\svn\bin 加到 PATH 系統環境變數裡
4. 在系統環境變數裡加上以下兩個變數:
APR_ICONV_PATH = C:\AppServ\svn\iconv
SVN_EDITOR = notepad.exe (或其他慣用的文字編輯器執行檔絕對路徑)


安裝Python 主程式
1. 安裝位置改在 C:\AppServ\python 底下,其他就使用預設值即可
2. C:\AppServ\python 加入 PATH 系統環境變數裡


安裝Trac相關模組執行
執行 svn-python-1.4.3.win32-py2.4.exe
執行 pysqlite-2.5.6.win32-py2.4.exe
執行 clearsilver-0.9.14.win32-py2.4.exe
執行 trac-0.10.3.win32.exe
執行 SilverCity-0.9.7.win32-py2.4.exe


安裝mod_python 模組
執行 mod_python-3.2.10.win32-py2.4-apache2.0.exe ,一樣是按照預設值安裝;但是當問到「 Where is Apache installed? 」時要選擇「 C:\AppServ\Apache2 」,這時安裝程式會把 mod_python.so 複製到 C:\AppServ\Apache2\modules 底下


安裝setuptools 模組
1. 直接點兩下 ez_setup.py 執行即可


安裝 TortoiseSVN
1. 執行 TortoiseSVN-1.7.10.23359-x64-svn-1.7.7.msi ,安裝完成後暫時不要重開機
2. 執行 LanguagePack_1.7.10.23359-x64-zh_TW.msi ,這時才需要重開機


安裝 Trac Plugins
webadmin安裝
easy_install http://svn.edgewall.org/repos/trac/plugins/0.10/webadmin 管理 Trac 專案相關設定的套件
AccountManager安裝
easy_install https://trac-hacks.org/svn/accountmanagerplugin/0.10 管理 Trac 專案的成員帳號
IniAdmin安裝
easy_install http://trac-hacks.org/svn/iniadminplugin/0.10 直接在 Web 介面上調整 trac.ini


Apache 使用者設定
C:\Repository>htpasswd -c project-users.db admin
Automatically using MD5 format.
New password: *****
Re-type new password: *****
Adding password for user admin


建立 website 帳號
開發的是網站專案,會需要自動更新測試環境的檔案時,就需要再建立一個 website 帳號:
C:\Repository>htpasswd project-users.db website
Automatically using MD5 format.
New password: ******
Re-type new password: ******
Adding password for user website


模組設定
以文字編輯器開啟 C:\AppServ\Apache2\conf\httpd.conf
#LoadModule dav_module modules/mod_dav.so
將上面的註解 ( # 字號) 去除,然後在整個 LoadModule 區段的下方加入以下設定
# For Subversion
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
# For Trac
LoadModule python_module modules/mod_python.so
Apache 重新啟動時,就會載入 DAV SVN Python 等模組


SVN設定
假如希望某個專案(windows專案)的svn的路徑是長成這樣:
http://localhost:8000/svn/windows
httpd.conf 的最後面加上以下設定
<Location /svn>
DAV svn
SVNParentPath C:/Repository/svn
# <LimitExcept GET PROPFIND OPTIONS REPORT>
AuthType Basic
AuthName "CompanyName"
AuthUserFile "C:/Repository/project-users.db"
Require valid-user
# </LimitExcept>
</Location>


Trac 設定
如果希望用已下網址來連到某個專案(windows專案)的Trac管理系統 :
http://localhost:8000/trac/windows
httpd.conf 的最後面加上:
<Location /trac>
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir C:/Repository/trac
PythonOption TracUriRoot /trac
</Location>
<LocationMatch "/trac/[^/]+/login">
AuthType Basic
AuthName "CompanyName"
AuthUserFile "C:/Repository/project-users.db"
Require valid-user
</LocationMatch>


建立 Subversion 專案
要建立一個名為windows的專案,那麼就在命令提示列視窗中輸入以下指令
C:\Repository\svn>svnadmin create windows
這樣就能建立出屬於 windows 這個專案的檔案庫了
註:先前提過的權限設定改由 Apache 來控管,因此不用再修改 conf 底下的檔案了


設定 post-commit
post-commit 簡單來說就是在本地端 Commit 後,會自動執行的 hook 機制;通常是用來記錄更新的 log 或是發送 Email,這裡則是用來自動更新測試環境的 Web 檔案
假設 D:\wwwroot\windows 就是我們所要更新的目的地, IIS 是以它做為執行的根目錄;當我們在本地端開發的檔案Commit 後,就會同步這裡的檔案
把以下文字存成 post-commit.bat
@ECHO OFF
SET SVN="C:\\appserv\\svn\\bin\\svn.exe"
SET DIR="C:\\wwwroot\\windows\\"
CALL %SVN% update %DIR% --username website --password websitepassword --non-interactive
然後存到 C:\Repository\svn\windows\hooks\ 下即可,其中 website 帳號在前一篇說明裡已經建立了
註:這裡也可以更新記錄存到 log 檔案裡或是發送 Email 給相關組員,不過這邊暫時不打算弄得太複雜


建立 Trac 專案
建立Trac 的資料庫
1. 切換到 C:\AppServ\python\Scripts 路徑,建立一個名為 windows trac 專案。
C:\Appserv\python\Scripts>python trac-admin C:\Repository\trac\windows initenv
接著會出現以下提示文字,請依照下面的建議操作:
Project Name [My Project]>windows (輸入專案名稱,不必和目錄名稱相同)
Database connection string [sqlite:db/trac.db]> (直接按 Enter 使用預設值)
Repository type [svn]> (直接按 Enter 使用預設值)
Path to repository [/path/to/repos]> C:\Repository\svn\windows (輸入Subversion 專案檔案庫)
Templates directory [C:\Appserv\python\share\trac\templates]> (直接按 Enter 使用預設值)


使用者與群組設定
設定預設使用者
C:\Appserv\python\Scripts>python trac-admin C:\Repository\trac\windows permission add admin TRAC_ADMIN
這樣會將 admin 加入 Trac 專案管理者
設定不讓匿名使用者在 Trac 專案有任何權限
C:\Appserv\python\Scripts>python trac-admin C:\Repository\trac\windows permission remove anonymous '*'
註:之前我測試用 * 號可以刪掉所有權限,不曉得什麼時候改成要用單引號把 * 號包起來
建立一個 developer 群組,同時給它需要的權限 (請自行決定相關權限)
C:\Appserv\python\Scripts>python trac-admin C:\Repository\trac\windows permission add developer WIKI_VIEW WIKI_CREATE WIKI_MODIFY SEARCH_VIEW TICKET_APPEND TICKET_CREATE TICKET_VIEW TIMELINE_VIEW ROADMAP_VIEW
註:如果 developer 沒有對應到 Apache 所建立的帳號時,它對 Trac 而言就是一個群組


相關 Plugins 設定
建立好 Trac 資料庫後,就要在專案裡啟用 WebAdmin AccountManager 這兩個 Plugins 。請用文字編輯器打開 C:\Repository\trac\windows\conf\trac.ini ,把以下文字貼到 trac.ini 的最下方:
[account-manager]
password_file = C:\Repository\project-users.db
password_store = HtPasswdStore
[components]
acct_mgr.admin.accountmanageradminpage = enabled
acct_mgr.api.accountmanager = enabled
acct_mgr.htfile.htpasswdstore = enabled
acct_mgr.web_ui.accountmodule = enabled
acct_mgr.web_ui.loginmodule = enabled
acct_mgr.web_ui.registrationmodule = enabled
trac.web.auth.loginmodule = enabled
iniadmin.iniadmin.iniadminplugin = enabled
webadmin.* = enabled
這樣到時候用 admin 登入專案時,就能夠使用 Admin 功能了 (包含 WebAdmin AccountManager IniAdmin )
補充:如果用 admin 登入後,還是看不到 Admin 功能的話,請重新啟動 Apache
註:這時的 logout 功能因為前面 httpd.conf 設定的關係,所以只有重新載入 Trac 的動作而無法真正登出


重點總結
1.建立 Subversion 檔案庫並且配置 post-commit
2.建立 Trac 資料庫,並配置權限與相關 plugins
以上便是完整的 Trac/Subversion 專案建置方式,每新增一個專案都要做一次