在 Windows 上使用 Trac on Apache - 安裝與設定篇
說明
最近公司的伙伴們變多了,專案的控管也變得越來越重要;原來的 Trac/Subversion 獨立伺服器在權限控制方面也變得有點礙手礙腳,所以這次我決定改以 Apache 為基礎伺服器的方式來安裝 Trac/Subversion 。
我打算把此系列文章分成三個部份:
-
第一部份是第一次的伺服器程式安裝步驟,及相關的 Trac 模組與 Subversion 的安裝。
-
第二部份是每次新建立一個專案時所必要的設定。
- 第三部份是 Trac 的使用方式。
以下先來看看如何安裝及設定。
檔案下載
Apache 2.0(apache_2.0.59-win32-x86-no_ssl.msi)
- 我們用它來當做伺服器,這裡一定要用 2.0.x 版。Subversion (svn-win32-1.4.3.zip)
- 基本上只要抓最新的 1.4.x 版Python (python-2.4.4.msi)
- 一定要用 2.4.x 版,因為相關套件的整合度較高。mod_python (mod_python-3.2.10.win32-py2.4-apache2.0.exe)
- 請配合上面的 Apache 及 Python 版本,並抓取最新版。Python bindings for Subversion (svn-python-1.4.3.win32-py2.4.exe)
- 這個可以讓我們透過 Python 操控 SVN ,要配合 Python 的版本抓取最新版。pysqlite (pysqlite-2.3.3.win32-py2.4.exe)
- 這個可以讓我們透過 Python 操控 Sqlite ,要配合 Python 的版本抓取最新版。ClearSilver (clearsilver-0.9.14.win32-py2.4.exe)
- 這個是一個樣版引擎,要配合 Python 的版本抓取最新版。SilverCity (SilverCity-0.9.6.win32-py2.4.exe)
- 這個是一個程式碼上色模組,要配合 Python 的版本抓取最新版。setuptools (ez_setup.py)
- 這個是方便我們安裝 Python 模組用的, Trac 的模組會用到。Trac (trac-0.10.3.win32.exe)
- 這個就是用 Python 開發的 Trac 主程式了。TortoiseSVN (TortoiseSVN-1.4.3.8645-win32-svn-1.4.3.msi)
- Windows 上的 Subversion 視覺化用戶端,找最新的就對了。TortoiseSVN Language Pack (LanguagePack-1.4.3.8645-win32-zh_TW.exe)
- TortoiseSVN 的正體中文語言套件,要配合上面的 TortoiseSVN 版本。-
svn2cl for win32 (svn2cl-0.7-win2.zip)
- 將 SVN 的記錄轉換成 ChangeLog 的工具 (Optional) 。
安排目錄結構
和之前一樣,我打算把相關的程式放在 D:\AppServ 底下,而檔案庫則放在 D:\Repository 底下。以下是我所規劃的目錄結構:
D:
|
|- AppServ (伺服器相關程式)
| |
| |- Apache2 ( Apache 的主要程式檔)
| |
| |- python ( Python 的主要程式檔)
| |
| |- svn ( Subversion 的主要程式檔)
| |
| |- trac ( Trac 的相關批次程式檔)
|
|- Repository (檔案庫)
|
|- svn
|
|- trac
繼續往下以前,請先按照上面的結構把目錄建立好。
註:放在 D: (或其他非 C: 分割區) 的好處是不用擔心重灌後,資料及相關設定會消失。
安裝 Apache 2
第一次安裝
如果有使用 IIS 的話,請先把 IIS 停掉。然後執行 apache_2.0.59-win32-x86-no_ssl.msi 。
然後要注意的是安裝位置,這裡我會把它安裝在 D:\AppServ\Apache2 下,方法如下:
-
安裝到 Setup Type 時選 Custom ,並按 Next 。
-
把 Apache HTTP Server 2.0.xx 的 Install to 改到 D:\AppServ ,這樣下方 Apache Runtime 的 Install to 會自動變成 D:\AppServ\Apache2 。
至於其他選項就按照當時情況自行決定囉。
安裝好後,在 D:\AppServ\Apache\conf\httpd.conf 中把 Port 80 改成 Port 8000 (或其他不影響系統運作的數字) ,然後重新啟動 Apache 及 IIS 。
後面的說明將會以 Port 8000 為主。
接著把 D:\AppServ\Apache2\bin 加入系統變數 PATH 裡,這樣方便到時候直接使用指令來控制 Apache 。
重灌系統後的安裝
假設我們的 D:\AppServ\Apache2 底下已經 Apache 的程式檔,只是重灌後使得系統設定消失。這樣的話,我們要先把D:\AppServ\Apache2\bin 加入系統變數 PATH 裡,接著再用以下方式重新建立服務 (粗體字部份) :
C:\>apache -k install -D Apache2
最後用:
C:\>apache -k start
來啟動服務。
安裝 Subversion
第一次安裝
-
解開 svn-win32-1.4.3.zip ,將 svn-win32-1.4.3 這個資料夾重新命名為 svn (裡面應該有 bin 等資料夾) ,並將它移至 D:\AppServ 下。
-
將 D:\AppServ\svn\mod_authz_svn.so 及 D:\AppServ\svn\mod_dav_svn.so 兩個檔案複製到 D:\AppServ\Apache2\modules 下。
- 將 D:\AppServ\svn\bin 加到 PATH 系統環境變數裡。
-
在系統環境變數裡加上以下兩個變數:
APR_ICONV_PATH = D:\AppServ\svn\iconv
SVN_EDITOR = notepad.exe (或其他慣用的文字編輯器執行檔絕對路徑)
後面會再說明 Apache 部份需要設定的部份。
更新
當 Subversion 推出新版時,一樣是把新版本的壓縮檔下載回來,而更新的步驟跟第一次安裝是一樣的。
安裝 Python 及 Trac 相關模組
Python 主程式
python 的主程式安裝也很簡單,除了安裝位置改在 D:\AppServ\python 底下,其他就使用預設值即可。
安裝好後,將 D:\AppServ\python 加入 PATH 系統環境變數裡。
相關模組
以下的模組直接執行該 exe 檔即可,沒有任何設定需要注意。
-
執行 svn-win32-1.4.3_py-2.4.exe ,會在 Python 的安裝目錄中註冊 svn 模組。
-
執行 pysqlite-2.3.3.win32-py2.4.exe ,會在 Python 的安裝目錄中註冊 pysqlite 模組。
-
執行 clearsilver-0.9.14.win32-py2.4.exe ,會在 Python 的安裝目錄中註冊 clearsilver 模組。
-
執行 trac-0.10.3.win32.exe ,會在 Python 的安裝目錄中註冊 trac 模組。
-
執行 SilverCity-0.9.6.win32-py2.4.exe ,會在 Python 的安裝目錄中註冊 SilverCity 模組。
mod_python 模組
執行 mod_python-3.2.10.win32-py2.4-apache2.0.exe ,一樣是按照預設值安裝;但是當問到「 Where is Apache installed? 」時要選擇「 D:\AppServ\Apache2 」,這時安裝程式會把 mod_python.so 複製到 D:\AppServ\Apache2\modules 底下。
後面會再說明 Apache 部份需要設定的部份。
setuptools 模組
如果剛剛已經有 Python 的安裝路徑設定在 PATH 系統變數裡的話,那麼直接點兩下 ez_setup.py 執行即可;或是開啟命令提示列視窗,並切換到 ez_setup.py 所存放的路徑下,並用以下指令執行 (粗體字部份) :
D:\downloads\python>python ez_setup.py
這樣 ez_setup.py 會自動從網路下載相關套件,並安裝到 Python 裡。
更新
如果上面的任何程式有更新版本的話,也是將個別的檔案下載回來,再按照上面的步驟重新做一次即可。
安裝 TortoiseSVN
第一次安裝
-
執行 TortoiseSVN-1.4.3.8645-win32-svn-1.4.3.msi ,安裝完成後暫時不要重開機。
執行 LanguagePack-1.4.3.8645-win32-zh_TW.exe ,這時才需要重開機。
安裝好以後,請參考此篇文章調整 TortoiseSVN 的效能。
更新
當 TortoiseSVN 有更新版本時,要分別下載主程式與對應版本的語言套件。然後直接按照第一次安裝的步驟執行,不必移除舊有版本。
安裝 Trac Plugins
Trac 0.10.x 預設並沒有安裝管理套件,所以這裡我們要手動為它安裝。
註:據 Trac 官方指出,在 0.11 版後會內建相關的管理套件。
補充:我找到了一篇不錯的 Blog 文章:「Trac 管理小記(一):安裝 plugin 注意事項」,裡面有介紹 Trac 應該安裝的 Plugins 。
安裝 WebAdmin (for Trac 0.10.x)
WebAdmin 是用來管理 Trac 專案相關設定的套件,安裝步驟如下:
先開啟 DOS 命令列模式視窗,並切換到一個暫時的目錄 (假設是 D:\downloads\trac\plugins ) ,然後輸入以下指令 (粗體字部份) :
D:\downloads\trac\plugins>mkdir webadmin
D:\downloads\trac\plugins>cd webadmin
D:\downloads\trac\plugins\webadmin>svn co http://svn.edgewall.com/repos/trac/sandbox/webadmin/ . (請注意最後有一個句點)
D:\downloads\trac\plugins\webadmin>python setup.py install
這樣就能將 WebAdmin 安裝到 Trac 裡了,後面會說明如何在專案中啟用它們。
補充:
上面的做法顯示我不曉得 easy_install 可以讓 plugin 的安裝更簡單,在看了 b6s 的介紹後,我才知道可以改用如下的方式。
先在命令列模式視窗中切換到 D:\AppServ\python 路徑,然後輸入以下指令:
D:\AppServ\python\Scripts>easy_install http://svn.edgewall.com/repos/trac/sandbox/webadmin/
是不是比上面的方式簡單多了?
安裝 AccountManager (for Trac 0.10.x)
AccountManager 是用來管理 Trac 專案的成員帳號,安裝步驟如下:
先開啟 DOS 命令列模式視窗,並切換到一個暫時的目錄 (假設是 D:\downloads\trac\plugins ) ,然後輸入以下指令 (粗體字部份) :
D:\downloads\trac\plugins>mkdir accountmanager
D:\downloads\trac\plugins>cd accountmanager
D:\downloads\trac\plugins\accountmanager>svn co http://trac-hacks.swapoff.org/svn/accountmanagerplugin/0.10 . (請注意最後有一個句點)
D:\downloads\trac\plugins\accountmanager>python setup.py install
這樣就能將 AccountManager 安裝到 Trac 裡了,後面會說明如何在專案中啟用它們。
補充:
跟 WebAdmin 一樣,我們把安裝方式改為:
D:\AppServ\python\Scripts>easy_install http://trac-hacks.swapoff.org/svn/accountmanagerplugin/0.10
補充:安裝 IniAdmin
這個 Plugin 是 b6s 介紹的,可以讓我們直接在 Web 介面上調整 trac.ini 。安裝方式如下:
D:\Appserv\python\Scripts>easy_install http://trac-hacks.org/svn/iniadminplugin/trunk/
相關的調整後面會再說明。
Plugins 的更新
更新 Plugins 很簡單,只要利用 svn update 把最新版的 Plugins 更新回本地端,然後重新安裝即可。以 WebAdmin 為例,更新方式如下:
D:\downloads\trac\plugins>cd webadmin
D:\downloads\trac\plugins\webadmin>svn update
D:\downloads\trac\plugins\webadmin>python setup.py clean (非必要)
D:\downloads\trac\plugins\webadmin>python setup.py install
這樣就可以了。
補充:
更新 Plugin 的方式就是重新執行上面補充的步驟即可。
Trac 的 plugins 更新後,一定要重新啟動 Apache 。如果這時有登入 Trac 管理畫面的話,也必須登出再重新登入。
Apache 設定
設定使用者
我們可以讓 Trac 和 Subversion 的使用者共用同一組帳號,而這些帳號可以由 Apache 的 htpasswd 指令來建立。
假設我們把帳號密碼檔放置在 D:\Repository\project-users.db 這個文字檔裡,那麼我們可以在命令提示列中輸入以下指令 (粗體字部份) :
D:\Repository>htpasswd -c project-users.db admin
Automatically using MD5 format.
New password: ******
Re-type new password: ******
Adding password for user admin
上面的指令會先建立一個 project-users.db 文字檔,這個就是我們存放帳號密碼的地方;然後我們需要為帳號 admin 設定一組密碼,這樣一來,帳號 admin 將會是往後我們為所有專案所預設的最高管理員。
假如開發的是網站專案,會需要自動更新測試環境的檔案時,就需要再建立一個 website 帳號:
D:\Repository>htpasswd project-users.db website
Automatically using MD5 format.
New password: ******
Re-type new password: ******
Adding password for user website
website 帳號的密碼請自行決定。
模組設定
首先要先以文字編輯器開啟 D:\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 設定
假如希望某專案的 svn 的路徑是長成這樣:
http://localhost:8000/svn/projectname
那麼就需要在 httpd.conf 的最後面加上以下設定:
DAV svn
SVNParentPath D:/Repository/svn
#
AuthType Basic
AuthName "CompanyName"
AuthUserFile "D:/Repository/project-users.db"
Require valid-user
#
這樣不論任何要存取檔案庫的動作 (例如 Checkout 或 Commit ) ,SVN 用戶端都會詢問帳號和密碼。如果希望 Checkout 時不詢問帳號密碼 (也就是匿名帳號可取得檔案) ,那麼就將 LimitExcept 部份的註解拿掉。
註:當然也可以配合 domainname 和 VirtualHost 來設定,不過內部使用的話這樣就夠了;以下的 Trac 設定也是一樣。
Trac 設定
如果希望用以下網址來連到某專案的 Trac 管理系統:
http://localhost:8000/trac/projectname
那麼也是在 httpd.conf 的最後面加上:
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir D:/Repository/trac
PythonOption TracUriRoot /trac
AuthType Basic
AuthName "CompanyName"
AuthUserFile "D:/Repository/project-users.db"
Require valid-user
這樣任何人在連線到該網址時,都會詢問帳號密碼;這樣在權限控管上會較為安全一點。不過這樣會有一個缺點,那就是到時 Trac 的 logout 功能會沒有作用。如果想讓匿名帳號可以先連進來,然後再使用 Trac 的 login 功能來登入的話,可以改成以下方式:
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir D:/Repository/trac
PythonOption TracUriRoot /trac
AuthType Basic
AuthName "CompanyName"
AuthUserFile "D:/Appserv/project-users.db"
Require valid-user
這樣一來,也可以 logout 後重新以另一個帳號登入。
總結
再把重點提示一次:
-
下載相關檔案。
-
安裝 Apache 、 Python (Trac) 、 Subversion 。
-
設定 Apache 。
以上就是 Trac/Subversion on Apache 的安裝與設定,通常只要做一次即可。而如果已經按照上面的說明將環境安裝好,那麼請再看第二篇有關第一次建立專案的說明。
註:這裡提到的方式也許不是最好的,希望有經驗的前輩能夠提點一下更好的方式。
没有评论:
发表评论