还是在台湾兄弟处找到的资料,不过我在项目组中推广的SCM是HG,以后把HG+Trac+Apache补上。
SVN + Trac + Apache 完整安裝攻略
View comments / Print This Post
SVN + Trac + Apache 完整安裝攻略,而原本在 SVN 所欠缺的用戶及權限管理介面,也都可以由 Trac 的外掛程式來搞定,可謂兩全其美。
本文章適合熟悉 SVN 但沒用個任何線上專案管理的人做為參考。
請注意,本人使用的 Linux 是 CentOS 4.x,RHEL 4.x 也適用。
1. 伺服器環境及設置
在伺服器上,我的設置如下:
- SVN 相關設定檔: /etc/svn/
- SVN 檔案庫的根目錄: /var/svn/ (裡面可以存放多個檔案庫)
- Trac 專案的根目錄: /var/trac/ (裡面可以存放多個專案)
- SVN 用戶的帳號密碼檔: /etc/svn/account
- SVN 用戶的權限檔: /etc/svn/authz
- 伺服器 IP: 192.168.1.10
- SVN 的存取網址: http://192.168.1.10/svn
- Trac 的存取網址: http://192.168.1.10/trac
所以要先建立這些目錄及檔案:
mkdir /etc/svn
mkdir /var/svn
mkdir /var/trac
touch /etc/svn/account
touch /etc/svn/authz
chown -R apache /etc/svn
因為 “account” 及 “authz” 這兩個檔案都需要由 Trac 來管理,所以都要把擁有者改為 apache (包含 /etc/svn 這個目錄)
2. 增加 yum 的套件伺服器
編輯 /etc/yum.repos.d/CentOS-Base.repo,在檔案最後加入下列的 yum 套件伺服器(來自 dag 及 kbs):
[dag]
name=Dag RPM Repostory for RHEL
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag/
gpgkey=http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
gpgcheck=1
enabled=1
[kbs-CentOS-Misc]
name=CentOS.Karan.Org-EL$releasever - Stable
baseurl=http://centos.karan.org/el$releasever/misc/stable/$basearch/RPMS/
gpgkey=http://centos.karan.org/RPM-GPG-KEY-karan.org.txt
gpgcheck=1
enabled=1
增加了這兩個套件伺服器之後,就可以直接用 yum 安裝 SVN 及 Trac 了。
3. 安裝 SVN 及相關套件
以 yum 輕鬆安裝 SVN 主程式及相關套件:
yum -y install subversion subversion-perl mod_dav_svn apr apr-util
4. 安裝 Trac 及相關套件
以 yum 輕鬆安裝 Trac 主程式及相關套件:
yum -y install trac clearsilver python-clearsilver
5. 修改網頁配置:
編輯 /etc/httpd/conf/httpd.conf,在最後面加上:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn>
DAV svn
SVNParentPath /var/svn
Satisfy Any
# HTTP 用戶驗證
AuthType Basic
AuthName "SVN Repository"
AuthUserFile /etc/svn/account
AuthzSVNAccessFile /etc/svn/authz
Require valid-user
</Location>
<Location /trac>
SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /var/trac
PythonOption TracUriRoot /trac
# HTTP 用戶驗證
# AuthType Basic
# AuthName "Trac Project"
# AuthUserFile /etc/svn/account
# Require valid-user
</Location>
請注意上面註解(#)的部份,因為要用 Trac 的外掛程式來管理用戶的登入,所以就不需要 HTTP 用戶驗證,如果比較喜歡用 HTTP 驗證就把下面四行的註解拿掉即可,並且下面 trac.ini 的設定也要把 “trac.web.auth.LoginModule” 啟用。
6. 建立第一個 SVN 的儲存庫
先在 /var/svn 建立一個名為 “project1″ 的儲存庫:
svnadmin create /var/svn/project1
chown -R apache /var/svn/project1
7. 新增一個管理者帳號
先在 /etc/svn/account 新增一個名為 “admin” 的管理者:
htpasswd /etc/svn/account admin
是的,只要建立這一個管理者用戶即可,稍後可以在 Trac 的外掛程式來新增其它用戶及管理其權限。
8. 建立第一個 Trac 的專案
繼續在 /var/trac 建立一個名為 “project1″ 的專案:
trac-admin /var/trac/project1 initenv
執行時會問你一些東西,你需要輸入 “Project Name” 代表專案名稱,而 “Path to repository” 必須輸入 “/var/svn/project1“,代表 SVN 儲存庫的路徑,其它選項只要按 Enter 使用預設值即可。這裡面的值稍後可以在專案目錄底下的 conf/trac.ini 做修改。
接著仍需將專案的擁有者改為 “apache”:
chown -R apache /var/trac/project1
9. 安裝 Trac 的外掛程式
安裝 Trac 的外掛程式前,需安裝 python-setuptools 及建立 Python Egg 的快取目錄:
cd /tmp
wget http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py
mkdir /var/www/.python-eggs
chown apache /var/www/.python-eggs
以 easy_install 安裝五個實用的 Trac 外掛程式 (安裝 for Trac 0.10 的版本):
easy_install http://svn.edgewall.com/repos/trac/sandbox/webadmin
easy_install http://trac-hacks.org/svn/iniadminplugin/0.10
easy_install http://trac-hacks.org/svn/accountmanagerplugin/0.10
easy_install http://trac-hacks.org/svn/tracwysiwygplugin/0.10
easy_install http://trac-hacks.org/svn/svnauthzadminplugin/0.10
這五個外掛程式分別為:
- WebAdmin: Trac 的基本管理模組。
- IniAdmin: trac.ini 管理。
- Account Manager: Trac 的用戶管理。
- TracWiki WYSIWYG Editor: 讓 Wiki 編輯器變成 WYSIWYG 編輯器。
- Svnauthz File Administration: SVN 的帳號及存取權限管理。
然後繼續編輯 /var/trac/project1/conf/trac.ini,在最後加上:
[components]
#啟用 WebAdmin 外掛程式
webadmin.* = enabled
#啟用 IniAdmin 外掛程式
iniadmin.iniadmin.iniadminplugin = enabled
#啟用 TracWysiwyg 外掛程式
tracwysiwyg.* = enabled
#啟用 SvnAuthzAdmin 外掛程式
svnauthz.* = enabled
#啟用 AccountManager 外掛程式
acct_mgr.api.accountmanager = enabled
acct_mgr.htfile.HtPasswdStore = enabled
#關閉預設的 Http 登入認證方式,改用 AccountManager 的登入認證
trac.web.auth.LoginModule = disabled
acct_mgr.web_ui.LoginModule = enabled
#啟用帳號管理
acct_mgr.admin.AccountManagerAdminPage = enabled
#允許用戶變更密碼、刪除帳號
acct_mgr.web_ui.AccountModule = enabled
[account-manager]
password_format = htpasswd
password_file = /etc/svn/account