技術指導:Subversion服務器在RHEL5上如何部署
如何快速建立Subversion服務器,并且在項目中使用起來,這是大家最關心的問題,在RHEL5上怎樣部署Subversion服務器
呢,就讓我們一起來學習吧。
這兩天部署Subversion,以下是整個過程:
1.重新安裝Apache服務器
RHEL5默認安裝的Apache沒有并包含--enable-so選項,所以無法產生mod_dav_svn.沒有這個模塊,SVN就無法采用http方式運行,所以必須重新編譯新的Apache。
#wgethttp://apache.mirror.phpchina.com/httpd/httpd-2.2.6.tar.gz
#tarzxvfhttpd-2.2.6.tar.gz
#cdhttpd-2.2.6
#./configure--enable-dav--enable-so--enable-maintainer-mode
#make
#makeinstall
此時會產生一個/usr/local/apache2系統目錄。
接著配置Apache服務器在RHEL5啟動時自動啟動
(1)在/etc/rc.d/rc.local中增加啟動apache的命令,例如:/usr/local/httpd/bin/apachectlstart
(2)將apache注冊為系統服務
首先將apachectl命令拷貝至/etc/rc.d/init.d目錄下,改名為httpd
使用編輯器打開httpd文件,并在第一行#!/bin/sh下增加兩行文字如下:
#chkconfig:357030
#description:Apache
接著注冊該服務
/sbin/chkconfig--addhttpd
一切OK了,啟動服務/sbin/servicehttpdstart
其中所增加的第二行中三個數字第一個表示在運行級別3和5下啟動apache,第二、三是關于啟動和停止的優(yōu)先級配置,無關緊要。
2.安裝Subversion服務器
#wgethttp://subversion.tigris.org/downloads/subversion-1.4.5.tar.gz
#tarzxvfsubversion-1.4.0.tar.gz
#cdsubversion-1.4.0
#./configure--prefix=/usr/local/subverion--with-apxs=/usr/local/apache2/bin/apxs
#make
#makeinstall
說明:--with-apxs指定apxs的安裝的目錄,可以在安裝過程中自動生成兩個必要的模塊文件mod_dav_svn.so和mod_authz_svn.so以及能夠支持它們可以正常地工作。
3.檢查Subversion服務器版本
#svn--version
svn,版本1.4.5(r25188)
編譯于Aug282007,07:38:39
版權所有(C)2000-2007CollabNet。
Subversion是開放源代碼軟件,請參閱http://subversion.tigris.org/
此產品包含由CollabNet(http://www.Collab.Net/)開發(fā)的軟件。
可使用以下的倉庫訪問模塊:
◆ra_dav:通過WebDAV(DeltaV)協議訪問倉庫的模塊。
-處理“http”方案
-處理“https”方案
◆ra_svn:使用svn網絡協議訪問倉庫的模塊。
-處理“svn”方案
◆ra_local:訪問本地磁盤的倉庫模塊。
-處理“file”方案 #p#
4.建立Subversion的數據庫
//創(chuàng)建庫文件所在的目錄(svnroot用戶進行下面的操作)
#mkdir/home/rhel/svnroot/
//進入subversion的bin目錄
//創(chuàng)建倉庫"test"
#./svnadmincreate/home/rhel/svnroot/test
#cd/home/rhel/svnroot/test
//看看是不是多了些文件,如果是則說明Subversion安裝成功了
#ls–l
#cd/usr/local/subversion/bin
//這條語句將把路徑/home/user/import下找到的文件導入到你創(chuàng)建的Subversion倉庫中去,
//提交后的修訂版為1。
#svnimport/home/rhel/wwwfile:///home/rhel/svnroot/test–m"注釋"
//不讓其他人有該目錄的權限
#chmod700/home/rhel/svnroot
5.使用Apache模塊方式運行Subversion
Subversion服務器有兩種運行方式,一是可以作為Apache2.x的一個模塊,以WebDAV/DeltaV協議與外界連通;另外,也可使用Subversion自帶的小型服務器程序svnserve。該程序使用的是自帶的通訊協議,獨立運行。
(1)檢查修改apache配置文件
#vi/usr/local/apache2/conf/httpd.conf
查看是否有下面這兩行,一般會自動加入,如果沒有則要手工加入
LoadModuledav_svn_modulemodules/mod_dav_svn.so
LoadModuleauthz_svn_modulemodules/mod_authz_svn.so
將ServerName修改為ServerName:80
在末尾加上以下參數
DAVsvn
SVNParentPath/home/rhel/svnroot///svn父目錄
AuthzSVNAccessFile/home/rhel/svnroot/authz.conf//權限配置文件
AuthTypeBasic//連接類型設置
AuthName"Subversion.Xustar"http://連接框提示
AuthUserFile/home/rhel/svnroot/authfile//用戶配置文件
Requirevalid-user//采用何種認證
//其中authfile是通過
"htpasswd[–c]/home/svnroot/repository/authfileusernamepassword"
//來創(chuàng)建的
//"Requirevalid-user"告訴apache在authfile中所有的用戶都可以訪問。如果沒有它,
//則只能第一個用戶可以訪問新建庫
6.權限管理
1)增加用戶
#htpasswd-c/home/rhel/svnroot/authfilexustar
//第一次設置用戶時使用-c表示新建一個用戶文件?;剀嚭筝斎胗脩裘艽a,
//完成對用戶的增加
#htpasswdauthfile用戶名(加入新的用戶)
2)權限分配
#vi/home/rhel/svnroot/authz.conf
[test:/]//這表示,倉庫test的根目錄下的訪問權限
xustar=rw//test倉庫xustar用戶具有讀和寫權限
wl=r//test倉庫wl用戶具有讀權限
[/]//這個表示在所有倉庫的根目錄下
◆=r//這個表示對所有的用戶都具有讀權限
#[groups]//這個表示群組設置
#svn1-developers=wooin,bao//這個表示某群組里的成員
#svn2-developers=wooin
#[svn1:/]
#@svn1-developers=rw//如果在前面加上@符號,則表示這是個群組權限設置
將這個設置完成后。重啟Apache,就可以通過
http://localhost/svn/test
這個URL來訪問倉庫了,當然,受權限的限制,必須是合法用戶才能訪問且具有相應的權限.在svn使用過程中牽扯到幾種權限:文件系統的權限,linux系統權限,svn用戶的權限,apache進程的權限。
文件系統的權限,linux系統權限:這里相同的意思,就是平時大家使用linux時文件夾和文件的訪問權限。在svn建立倉庫,文件夾,配置文件的時候用svnroot用戶,并將倉庫權限設置為700,不允許其他用戶直接通過文件系統查看,只能由svnroot進行管理。
apache進程的權限:因為所有跟倉庫傳輸的操作都是通過apache進程進行的,所以即使你給svn用戶設置了很大的權限,但是apache進程沒有訪問倉庫或者相關文件的權限也沒有用,apache進程的權限設置在/usr/local/apache2/conf/httpd.conf文件中配置,找到文件中的這兩行:
Userdaemon#將daemon改為svnroot,讓apache進程以svnroot的身份運行Groupdaemon
RHEL5上部署Subversion服務器介紹完畢。
【編輯推薦】