CentOS下安装Subversion&Trac
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-util4. 安裝 Trac 及相關套件
以 yum 輕鬆安裝 Trac 主程式及相關套件:
yum -y install trac clearsilver python-clearsilver5. 修改網頁配置:
編輯 /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/project17. 新增一個管理者帳號
先在 /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/project19. 安裝 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
Note: the plugin is no longer necessary starting with version 0.11 of Trac, as it has been integrated into the core package. However don't forget to give permissions to your user. This is accomplished on the command-line (the last command shows what your permissions are):
User age
:trac-admin /path/to/my/project
permission add username-from-htpasswd TRAC_ADMIN
permission list username-from-htpasswd
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
password_store = HtPasswdStore另外,你還要到 [trac] 區塊找到 “authz_file” 及 “authz_module_name” 這兩個參數,分別設為:
authz_file = /etc/svn/authz
authz_module_name = project1這兩個參數與 SVN 的存取權限有關,”authz_module_name” 要設成 SVN 的儲存庫名稱。
最後,你可能還要再修改 “default_charset” 參數,預設是 “iso-8859-15″,請改成與你 Checkin 到 SVN 儲存庫內的檔案相同文字編碼。
10. Trac 的用戶管理
通常我會先指定 Trac 的管理者、移除訪客的權限、增加一個一般用戶群組,指令如下:
trac-admin /var/trac/project1 permission add admin TRAC_ADMIN
trac-admin /var/trac/project1 permission remove anonymous '*'
trac-admin /var/trac/project1 permission add @user LOG_VIEW FILE_VIEW WIKI_VIEW WIKI_CREATE WIKI_MODIFY SEARCH_VIEW REPORT_VIEW REPORT_SQL_VIEW
trac-admin /var/trac/project1 permission add @user TICKET_VIEW TICKET_CREATE TICKET_MODIFY BROWSER_VIEW TIMELINE_VIEW CHANGESET_VIEW ROADMAP_VIEW MILESTONE_VIEW在 Trac 裡,用戶與群組的命名及管理方式是沒有什麼區別的,用戶也可以是群組,所以,你也可以把第一個用戶指定給第二個用戶,那第一個用戶就會擁有與第二個用戶一樣的權限。在上面的指令,我新增了一個名稱叫 “@user” 的群組以做為識別,並設定其權限,只要把用戶指定給 @user,就可以使用相同的權限。
11. 設定完成
所有的設定都完成了,請重新啟動 apache:
service httpd restart現在該裝的都裝好了,Trac 的存取位址為 “http://192.168.1.10/trac“,SVN 的存取位址為 “http://192.168.1.10/svn/project1“。
用瀏覽器連上 Trac 的存取位址,選擇進入 “project1″ 專案後,會顯示 Forbidden 說你沒有讀取權限,因為我們在上一個步驟已經把訪客所有的權限給移除了,現在你只能在網頁的右上角找到 “login” 來登入 “admin” 帳號。
成功登入 admin 之後,你可以從導覽列右邊的 [Admin] 進入管理介面,其中:
General 下的 “Permissions” 是用來管理 Trac 的使用權限
Account 下的 “Users” 可以用來管理 Trac 及 SVN 的用戶 (/etc/svn/account)
Subversion 下的 “Subversion Access” 才是用來管理 SVN 的路徑存取權限及 SVN 的用戶群組 (/etc/svn/authz)
現在你要進行的,除了新增用戶(Users)及修改權限(Permissions)之外,你如果點選導覽列上的 [Browse Source] 系統也會跟你說權限不足,同樣的,現在任何人都還不能存取 SVN 的專案(http://192.168.1.10/svn/project1),因為 “/etc/svn/authz” 這個檔案的內容還是空白的,你必須到 Trac 管理介面的 “Subversion Access” 去讓你的用戶擁有讀寫 “/” 這個路徑的權限才行。
稍後等我有空我再來發表 Trac 的詳細使用方式,大家可以先參考下面的網頁連結。