svn+trac+apache (centos5.4)

Svn +trac+apache安装配置


   SVN + Trac + Apache 完整安裝攻略,而原本在 SVN 所欠缺的用戶及權限管理介面,也都可以由 Trac 的外掛程式來搞定,可謂兩全其美。
本文章適合熟悉 SVN 但沒用個任何線上專案管理的人做為參考。
請注意,本人使用的 Linux 是 CentOS 5.2.
1. 伺服器環境及設置
在伺服器上,我的設置如下:
1. SVN 檔案庫的根目錄: /var/svn/ (裡面可以存放多個檔案庫)
2. Trac 專案的根目錄: /var/trac/ (裡面可以存放多個專案) 
3. 伺服器 IP: 192.168.41.101
4. SVN 的存取網址: http://192.168.41.101/svn
5. Trac 的存取網址: http://192.168.411.101/trac
所以要先建立這些目錄及檔案:
mkdir /var/svn
mkdir /var/trac
chown -R apache:apache /var/trac
chmod 777 /var/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.安装及升级相关的软件
   yum -y install httpd*
   yum -y install php*
   yum -y install mysql*
   yum -y install python*
   yum -y install glib*
   yum -y install libc*
   yum -y install gd*
   yum -y install db*
   yum -y install sqlite*
   yum -y install genshi*
   yum -y install  clearsilver*
   yum -y install  mod_python*
   yum -y install docutils*
   yum -y install pygments*
   yum -y install pytz*
注意:yum安装不了,下载以下版本:Genshi-0.6-py2.4.egg  Pygments-1.4-py2.4.egg  pytz-2011b-py2.4.egg    setuptools-0.6c11-py2.4.egg和setuptools-0.6c11.tar.gz Trac-0.11.5.tar.gz  docutils-0.7.tar.gz
--------------------------我附件有下载----------------
到这个地址下载http://pypi.python.org/pypi/setuptools#downloads 下载setuptools
来安装"easy_install"命令
    $ tar xzvf setuptools.xx.tar.gz
    $ cd setuptools.xx
    $ python setup.py install
到 http://pypi.python.org/pypi/setuptools#downloads 网站下载跟python对应版本的setuptools.xxx.xx.egg ,安装在计算机中:
    easy_install setuptools-0.6c9-py2.4.egg 或者 sh setuptools-0.6c9-py2.4.egg –prefix=~ 进行安装

 

到这个地址下载 http://genshi.edgewall.org/wiki/Download  Genshi.x.x.tar.gz
    $ tar -xzvf  genshi.x.x.tar.gz
    $ cd genshi.x.x
    $ python setup.py install



4.安装SVN及相關套件
  
   以 yum 輕鬆安裝 SVN 主程式及相關套件:
    yum -y install subversion subversion-perl mod_dav_svn apr apr-util

5.安装submin插件
安装submin插件可以方便管理svn的库和用户群组的建立,以及用户群组对库的权限管理:
  到http://supermind.nl/submin/ 下载submin软件 这里submin版本:submin-1.2.4.tar.gz

   tar -xzvf submin-xx.tar.gz
   cd submin-xx
   sh bin/install.sh /usr/local
   /usr/local/bin/submin-admin create default
修改submin的配置文件,在/etc/submin的目录下,编辑default.conf文件
[svn]
authz_file = /var/lib/submin/authz
userprop_file = /var/lib/submin/userproperties.conf
access_file = /var/lib/submin/htpasswd
repositories = /var/svn
[www]
base_url = /submin
svn_base_url = http://192.168.41.101/svn
trac_base_url = http://192.168.41.101/trac
# the following section is optional and only needed if you want to use Trac
[trac]
enabled = true
basedir = /var/trac
[backend]
bindir = /usr/local/share/submin/bin
path = /bin:/usr/bin:/usr/local/bin:/opt/local/bin
[generated]
session_salt = B.k7zVGYSk0TC4jD
修改default-apache-cgi.conf
    Alias /submin /usr/local/share/submin/www
    <Directory /usr/local/share/submin/www>
        Order allow,deny
        Allow from all
        Options ExecCGI FollowSymLinks
        AddHandler cgi-script py cgi pl
        SetEnv SUBMIN_CONF /etc/submin/default.conf
        RewriteEngine on
        RewriteBase /submin
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.+)$ submin.cgi/$1
        RewriteRule ^/?$ submin.cgi/
    </Directory>
    <Location /svn>
        DAV svn
        SVNParentPath /var/svn
        AuthType Basic
        AuthName "SVN Repository"
        AuthUserFile /var/lib/submin/htpasswd
        AuthzSVNAccessFile /var/lib/submin/authz
        Satisfy Any
        Require valid-user
    </Location>
修改httpd.conf文件,在后面加上
Include /etc/submin/default-apache-cgi.conf
6. 安裝 Trac 及相關套件
以 yum 輕鬆安裝 Trac 主程式及相關套件:(这里要注意:要安装trac0.11.5版本)
yum -y install trac clearsilver python-clearsilver
7. 修改網頁配置:
編輯 /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 /var/lib/submin/htpasswd
  AuthzSVNAccessFile /var/lib/submin/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” 啟用。

编辑/etc/httpd/conf.d/trac.conf文件
###### Sample Trac configuration taken from http://trac.edgewall.org/wiki/TracModPython
###
### The recommended Trac web interface requires mod_python
<IfModule mod_python.c>
### Create your Trac environments as subdirectories of /var/trac
### They will appear in a listing on your website at /trac/, and be available
### at /trac/PROJECTNAME/
<Location /trac>
  SetHandler mod_python
  PythonInterpreter main_interpreter
  PythonHandler trac.web.modpython_frontend
  PythonOption TracEnvParentDir /var/trac
  PythonOption TracUriRoot /trac
</Location>
### Use htpasswd to add Trac accounts to the AuthUserFile
<LocationMatch "/trac/[^/]+/login">
  AuthType Basic
  AuthName "Trac"
  #AuthUserFile /var/www/trac/.htpasswd
  #修改对应保存用户的文件
   AuthUserFile /var/lib/submin/htpasswd
   Require valid-user
</LocationMatch>

8. 建立第一個 SVN 的儲存庫
先在 /var/svn 建立一個名為 “project1″ 的儲存庫:
svnadmin create /var/svn/project1
chown -R apache:apache /var/svn/project1
( 新增一個管理者帳號
先在 /etc/svn/account 新增一個名為 “admin” 的管理者:
htpasswd /etc/svn/account admin
是的,只要建立這一個管理者用戶即可,稍後可以在 Trac 的外掛程式來新增其它用戶及管理其權限。) 如果安装submin这步不用做,因为已经默认生成了admin的帐号。
9. 建立第一個 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:apache /var/trac/project1
10. 安裝 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.11 的版本):
easy_install http://trac-hacks.org/svn/iniadminplugin/0.11
easy_install http://trac-hacks.org/svn/accountmanagerplugin/0.11
easy_install http://trac-hacks.org/svn/tracwysiwygplugin/0.11
easy_install http://trac-hacks.org/svn/svnauthzadminplugin/0.11
easy_install -Z -U http://trac-hacks.org/svn/xmlrpcplugin/trunk # 0.11
這五個外掛程式分別為:
1. WebAdmin: Trac 的基本管理模組,这个trac11版本以后已经兼容了这个插件
2. 。
3. IniAdmin: trac.ini 管理。
4. Account Manager: Trac 的用戶管理。
5. TracWiki WYSIWYG Editor: 讓 Wiki 編輯器變成 WYSIWYG 編輯器。
6. Svnauthz File Administration: SVN 的帳號及存取權限管理。
7. Xmlrpcplugin: 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
#啟用 Xmlrpcplugin 外掛程式
tracrpc.* = 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 = /var/lib/submin/htpasswd
password_store = HtPasswdStore
另外,你還要到 [trac] 區塊找到 “authz_file” 及 “authz_module_name” 這兩個參數,分別設為:
authz_file = /var/lib/submin/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  anonymous  WIKI_VIEW TICKET_VIEW SEARCH_VIEW
#Xmlrpcplugin插件需要这个权限
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-admin /var/trac/DoNet/ permission add  Programmer MILESTONE_VIEW REPORT_VIEW TICKET_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] 進入管理介面,其中:
1. General 下的 “Permissions” 是用來管理 Trac 的使用權限
2. Account 下的 “Users” 可以用來管理 Trac 及 SVN 的用戶 (/var/lib/submin/htpasswd)
3. Subversion 下的 “Subversion Access” 才是用來管理 SVN 的路徑存取權限及 SVN 的用戶群組 (/var/lib/submin/authz)

現在你要進行的,除了新增用戶(Users)及修改權限(Permissions)之外,你如果點選導覽列上的 [Browse Source] 系統也會跟你說權限不足,同樣的,現在任何人都還不能存取 SVN 的專案(http://192.168.41.101/svn/project1),因為 “/var/lib/submin/authz” 這個檔案的內容還是空白的,你必須到 Trac 管理介面的 “Subversion Access” 去讓你的用戶擁有讀寫 “/” 這個路徑的權限才行。

你可能感兴趣的:(apache,SVN,centos,python,配置管理)