apache+svn+trac安裝及配置
svn簡介:
Subversion
是新一代的版本控制工具,它是一個自由、開放源碼的版本控制系統。它是一個通用系統,可用來管理任何類型的文件,其中包括程序源碼。Subversion是近年來崛起的版本管理工具,被譽爲是cvs的接班人
trac簡介:
Trac是一個爲軟件開發項目須要而集成了Wiki和問題跟蹤管理系統的應用平臺,是一個開源軟件應用。Trac以簡單的方式創建了一個軟件項目管理的Web應用,以幫助開發人員更好地寫出高質量的軟件;Trac應用力求不影響現有團隊的開發過程。
軟件環境:
操做系統:
Suse10 sp2 x_86
軟件包:
httpd-2.2.8.tar.bz2
pysqlite-2.5.5.tar.gz
subversion-1.4.6.tar.gz
subversion-deps-1.4.6.tar.gz
Trac-0.11.2.1.tar.gz
Genshi-0.5.1.tar.gz
swig-2.0.0.tar.gz
python-devel-2.4.2-18.13.i586.rpm
python-xml-2.4.2-18.13.i586.rpm
sqlite-3.2.8-15.2.i586.rpm
sqlite-devel-3.2.8-15.2.i586.rpm
注意:在搭建此環境時,要特別注意各類軟件對應版本,可能一個軟件的版本不對,都會致使環境搭建的失敗.
編譯安裝Apache:
# tar zxvf httpd-2.2.8.tar.gz
# cd httpd-2.2.8
# ./configure --enable-dav --enable-so --enable-ssl --enable-maintainer-mode --prefix=/usr/local/apache2 --enable-mods-shared=all --enable-rewrite
# make
# make install
#cp support/apachectl /etc/init.d/httpd
#
vi /etc/init.d/httpd
加入一下的代碼,是apache能夠用chkconfig方式啓動:
# Startup script for the Apache Web Server
# chkconfig: - 85 15
# description: Apache is a World Wide Web server. It
is used to serve
# HTML files and CGI.
# processname: httpd
# pidfile: /usr/local/apache2/log/httpd.pid
# config: /usr/local/apache2/conf/httpd.conf
#chmod 755 /etc/init.d/httpd
#chkconfig --add httpd
#chkconfig --level 3 httpd on
#service httpd start
打開瀏覽器
http://IP/
,若是出現Apache的測試頁面,能夠看到It works!說明apache已經能夠正常工做了.
編譯安裝Subversion:
注意:在安裝以前先確認你的OS上已經安裝了python和swig,若是沒有安裝的話能夠下載source code或rpm包來安裝,由於個人OS上只裝了python,因此下面還要裝下swig.
# tar zxvf swig-2.0.0.tar.gz
# cd swig-2.0.0
# ./configure
# make && make install
# tar zxvf subversion-1.4.6.tar.gz
# cd subversion-1.4.6
#./configure --with-apxs=/usr/local/apache2/bin/apxs --prefix=/usr/local/subversion --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2 --with-ssl --with-zlib --enable-maintainer-mode --without-berkeley-db PYTHON=/usr/bin/python --with-swig=/usr/local/bin/swig --enable-shared --enable-static --enable-swig-binding=python
# make
# make install
通過上面的步驟mod_dav_svn.so and mod_authz_svn.so將會被copy到/usr/local/apache2/modules/下,
同時在 /usr/local/apache2/conf/httpd.conf下,添加以下2行
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
檢查一下是否都正確,若是沒有的話可能就要手動加進去
同時執行了上面的make && make install後還要編譯安裝Subversion SWIG Python bindings
#cd subversion-1.4.6
#make swig-py
#make install-swig-py
能夠看到swig-py的install目錄是/usr/local/subversion/lib/svn-python.用以下命令講這個擴展包擴展到python:
# echo /usr/local/subversion/lib/svn-python >/usr/lib/python2.3/site-packages/subversion.pth
剩下的就是測試svn的swig-py包是否是正常
#python <--
啓動python
>>>import svn.repos
//
按ctrl+d退出
若是不報錯,那就說明OK了.
若是報錯,那麼檢查以下問題:
I. subversion
的configure是否是enable了shared和static,是否是帶--with-swig;
II. libsvn_swig_py-x.so
是否存在於/usr/local/subversion/lib目錄;
III. /usr/local/subversion/lib
是否已經增長到ld.so.conf文件 (/etc/ld.so.conf)
IV.
請使用ldconfig -v |grep swig來檢查是否有swig的下列動態庫
libsvn_swig_py-1.so.0 -> libsvn_swig_py-1.so.0.0.0
若是一切正常,這個安裝就完成了
安裝完成後,運行svnserver --version確認版本爲1.4.6
配置svn
最好不要讓root用戶參與到svn的權限管理和平常的運行和維護工做中來,因此咱們創建一個用戶(如svn)同時爲了處理好權限的問題,咱們能夠創建一個組(如svnrw),其餘但願使用svn的用戶加入這個組
在root權限下用下面的命令建立用戶和組:
#groupadd svnrw
#useradd svn -g svnrw
#passwd svn
而後切換到用戶svn來建立svn倉庫,對svn進行配置
選擇一個目錄位置做爲svn倉庫的存放位置,在這裏用/home/svn做爲存放位置
//
建立版本庫"my_project",默認指定倉庫的文件格式爲fsfs
svnadmin create /home/svn/my_project
chown -R svn:svnrw /home/svn
chmod -R g+w home/svn/my_project
chmod g+s home/svn/my_project/db
# vi /usr/local/apache2/conf/httpd.conf
### svn settings
#
<Location /svn>
DAV svn
SVNListParentPath on //
容許在網頁上顯示svn父目錄list
SVNParentPath /home/svn // /home/svn是我這邊的SVN的父目錄
AuthType Basic // 鏈接類型設置
AuthName "Subversion Repository" // 鏈接框提示
AuthUserFile /etc/svntrac.htpasswd // 用戶配置文件
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
這裏設置SVNParentPath而不是SVNPath的好處是能夠幾個svn倉庫同時訪問
加了LimitExcept這樣匿名用戶能夠瀏覽,check out代碼,可是不能commit, 認證用戶有commit權限,其中svntrac.htpasswd文件是經過htpasswd命令來建立的,第一次設置用戶時使用-c表示新建一個用戶文件
# /usr/local/apache2/bin/htpasswd -c /etc/svntrac.htpasswd admin
New password: xxxxxx
Re-type new password: xxxxxx
Adding password for user admin
另外要修改 apache進程的權限:由於全部跟版本庫傳輸的操做都是經過apache進程進行的,因此即便你給svn用戶設置了很大的權限,可是apache進程沒 有訪問版本庫或者相關文件的權限也沒有用,apache進程的權限設置在 /usr/local/apache2/conf/httpd.conf 文件中配置,找到文件中的這兩行:
User daemon //
將daemon用戶改成svn,讓apache進程以svn身份運行
Group daemon //將daemon組改成svnrw
# service httpd restart
測試SVN是否能夠正常使用
到svn倉庫文件夾裏,進入conf目錄,這裏須要修改3個配置文件.
# vi svnserve.conf
anon-access = read //取消這行前面的#
anon-access = neno //添加這行
auth-access = write //取消這行前面的#
password-db = passwd //取消這行前面的#
authz-db = authz //取消這行前面的#
# vi authz
[groups]
admin = admin // =號前面是組名,後面是用戶名,用戶名之間用逗號隔開
[my_project:/] // :號前面是svn庫的名字
@admin = rw // 給admin組設置讀寫權限
# vi passwd
[users]
admin = admin // =號前面是用戶,後面是用戶的密碼
啓動svn服務
# svnserve -d --listen-port 6000 --listen-host 10.10.1.3 -r /home/svn/
// -d表示在後臺運行 --listen-port是監控的端口 --listen-host是svn服務器的IP地址 -r是svn倉庫的路徑.
在一臺windows服務器安裝svn客戶端,我這裏使用的是TortoiseSVN,
鼠標右擊選擇SVN檢出,出現一個對話框,上面的url輸
入 svn://10.10.1.3:6000/my_project,下面任意選擇一
個當前磁盤
路徑,而後點擊肯定,若是沒有問題,就不報任何的錯誤,咱們還能夠
在檢出的文件夾建立一個文件,而後進行提交,看有沒有問題,要是沒
有問題,就說明svn配置是正常的.