SVN + Trac + Apache 完整安裝攻略
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 Repository for RHEL baseurl=http://repoforge.cu.be/redhat/el$releasever/en/$basearch/dag/ gpgkey=http://repoforge.cu.be/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 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 的詳細使用方式,大家可以先參考下面的網頁連結。
參考網頁
- Trac 首頁 (中文翻譯, Configure File)
- SVN 首頁 (TortoiseSVN)
- Trac Hacks 外掛程式 (for Trac 0.10, for Trac 0.11)
- 網站製作學習誌: 在 Windows 上使用 Trac on Apache - 使用說明篇 (專案建置篇, 安裝與設定篇)
- 簡睿隨筆: Trac 的 Wiki 中文說明 (專案管理工具)
- Tsung’s Blog: Trac 基本功能介紹 (Debian Linux 架設 Trac + Virtual Host, Apache2(Virtual Host) + Subversion(SVN) + Trac 快速建置)
您好!我是第一次安裝 trac& svn,我OS使用red hat,
依照步驟安裝後,用IE 開啟http://myip/trac,卻出現下列錯誤,
請教是我缺那個步驟嗎?
Traceback (most recent call last):
File "/usr/lib/python2.4/site-packages/trac/web/api.py", line 436, in send_error
data, 'text/html')
File "/usr/lib/python2.4/site-packages/trac/web/chrome.py", line 809, in render_template
data = self.populate_data(req, data)
File "/usr/lib/python2.4/site-packages/trac/web/chrome.py", line 719, in populate_data
d.update({
File "/usr/lib/python2.4/site-packages/trac/web/api.py", line 212, in __getattr__
value = self.callbacks[name](self)
File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 306, in _get_locale
available = [locale_id.replace('_', '-') for locale_id in
File "/usr/lib/python2.4/site-packages/trac/util/translation.py", line 328, in get_available_locales
return [dirname for dirname
File "/usr/lib/python2.4/site-packages/setuptools-0.6c11-py2.4.egg/pkg_resources.py", line 899, in resource_listdir
return get_provider(package_or_requirement).resource_listdir(
File "/usr/lib/python2.4/site-packages/setuptools-0.6c11-py2.4.egg/pkg_resources.py", line 1191, in resource_listdir
return self._listdir(self._fn(self.module_path,resource_name))
File "/usr/lib/python2.4/site-packages/setuptools-0.6c11-py2.4.egg/pkg_resources.py", line 1282, in _listdir
return os.listdir(path)
OSError: [Errno 2] No such file or directory: '/usr/lib/python2.4/site-packages/trac/locale'
我用centos安裝時也會,後來發現把babel移除就不會出錯了。
主要是安裝trac的沒有附上i18n的語系。最後一行才應該是重點,前面的只是trackback。
我也是...
好像是trac的帳號密碼路徑錯誤
....
謝謝你的文章~ 寫的很詳細^^