2007年9月17日星期一

在 Windows 上使用 Trac on Apache - 安裝與設定篇

在 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 下,方法如下:

  1. 安裝到 Setup Type 時選 Custom ,並按 Next 。

  2. 把 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

第一次安裝

  1. 解開 svn-win32-1.4.3.zip ,將 svn-win32-1.4.3 這個資料夾重新命名為 svn (裡面應該有 bin 等資料夾) ,並將它移至 D:\AppServ 下。

  2. 將 D:\AppServ\svn\mod_authz_svn.so 及 D:\AppServ\svn\mod_dav_svn.so 兩個檔案複製到 D:\AppServ\Apache2\modules 下。

  3. 將 D:\AppServ\svn\bin 加到 PATH 系統環境變數裡。
  4. 在系統環境變數裡加上以下兩個變數:

    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

第一次安裝

  1. 執行 TortoiseSVN-1.4.3.8645-win32-svn-1.4.3.msi ,安裝完成後暫時不要重開機。

  2. 執行 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 後重新以另一個帳號登入。

總結

再把重點提示一次:

  1. 下載相關檔案。

  2. 安裝 Apache 、 Python (Trac) 、 Subversion 。

  3. 設定 Apache 。

以上就是 Trac/Subversion on Apache 的安裝與設定,通常只要做一次即可。而如果已經按照上面的說明將環境安裝好,那麼請再看第二篇有關第一次建立專案的說明。

註:這裡提到的方式也許不是最好的,希望有經驗的前輩能夠提點一下更好的方式。

没有评论: