RHEL6.4下搭建apache和subversion(SVN)

1、說明

rhel6.4系統下搭建apache+svn


2、實現

1)在服務器上安裝配置SVN服務;

2)SVN服務支持svnserve獨立服務模式訪問;

3)SVN服務支持Apache的http模式訪問。


3、安裝svn服務器

[root@reedoracle ~]# yum install -y subversion
[root@reedoracle ~]# rpm -qa|grep subversion
subversion-1.6.11-15.el6_7.x86_64


4、安裝apache服務器

[root@reedoracle ~]# yum install -y httpd
[root@reedoracle ~]# rpm -qa|grep http
httpd-2.2.15-56.el6.centos.3.x86_64


5、配置SVN版本庫

[root@reedoracle ~]# mkdir /svn
[root@reedoracle ~]# svnadmin create /svn/reed  #創建版本庫命令
[root@reedoracle ~]# cd /svn/reed/
[root@reedoracle reed]# ll
total 24
drwxr-xr-x 2 root root 4096 Apr  6 05:09 conf
drwxr-sr-x 6 root root 4096 Apr  6 05:09 db
-r--r--r-- 1 root root    2 Apr  6 05:09 format
drwxr-xr-x 2 root root 4096 Apr  6 05:09 hooks
drwxr-xr-x 2 root root 4096 Apr  6 05:09 locks
-rw-r--r-- 1 root root  229 Apr  6 05:09 README.txt


6、用戶密碼passwd配置

[root@reedoracle reed]# cd conf/
[root@reedoracle conf]# ll
total 12
-rw-r--r-- 1 root root 1080 Apr  6 05:09 authz
-rw-r--r-- 1 root root  309 Apr  6 05:09 passwd
-rw-r--r-- 1 root root 2279 Apr  6 05:09 svnserve.conf
[root@reedoracle conf]# vim passwd
[root@reedoracle conf]# grep '^[^#]' passwd
[users]
admin=123 #管理員
reed=123  #普通用戶
deer=123  #普通用戶


7、權限控制authz配置

[root@reedoracle conf]# vim authz
[root@reedoracle conf]# grep '^[^#]' authz
[aliases]
[groups]
#根目錄下(即/svn/reed)管理員可讀寫,其它用戶只讀
[/]
*=r
admin=rw
#public目錄,任何用戶都可以讀寫
[/public]
*=rw
#reed目錄,只允許admin/reed讀寫,其他用戶無任何權限
[/reed]
admin=rw
reed=rw
*=
#deer目錄,只允許admin/deer讀寫,其他用戶無任何權限
[/deer]
admin=rw
deer=rw
*=


8、服務svnserve.conf配置

[root@reedoracle conf]# vim svnserve.conf
[root@reedoracle conf]# grep '^[^#]' svnserve.conf
[general]
anon-access = none   #禁止匿名訪問,設置爲none。默認爲read,參數:read,write,none
password-db = passwd  #指向用戶信息文件
authz-db = authz      #指向權限信息文件
realm = /svn/reed    #每個SVN項目的認證名,會在認證提示裏顯示,建議寫項目名稱。
[sasl]
[root@reedoracle conf]#


9、啓動SVN服務

[root@reedoracle conf]# svnserve -d -r /svn


10、使用checkout導出文件

10.1、使用TortoiseSVN客戶端測試

wKioL1jm3bnjO2wMAABwNPiGwYU351.png-wh_50

本地新建public、reed和deer三個目錄(與authz的權限配置對應)

wKiom1jm3bqQ_rK1AAEPjyO08VI839.png-wh_50


10.2、使用linux命令行測試

[root@reedoracle deer]# svn co svn://127.0.0.1/reed
Authentication realm: <svn://127.0.0.1:3690> /svn/reed
Password for 'root':
Authentication realm: <svn://127.0.0.1:3690> /svn/reed
Username: deer
Password for 'deer':
-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:
<svn://127.0.0.1:3690> /svn/reed
can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible.  See the documentation for details.
You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/root/.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes
A    reed/deer
A    reed/public
Checked out revision 1.
[root@reedoracle reed]# ls
deer  public
[root@reedoracle reed]# svn up .
A    public/restartsvn.sh
Updated to revision 2.
[root@reedoracle reed]#


11、配置svn支持http訪問

通過 Http 協議訪問版本庫是 Subversion 的亮點之一。使用 Http 協議意味着只需要打開瀏覽器,輸入 URL 即可輕鬆的瀏覽整個版本庫。靈活通常帶來複雜性,Http 方式相對於 svnserve 方式來說需要更多的配置。

由於 Subversion 需要版本化的控制,因此標準的 Http 協議不能滿足需求。要讓 Apache 與 Subversion 協同工作,需要使用 WebDAV(Web 分佈式創作和版本控制)。WebDAV 是 HTTP 1.1 的擴展,關於 WebDAV 的規範和工作原理,可以參考 IETF RFC 2518。

爲了使 Subversion 與 dav 模塊通信,需要安裝 mod_dav_svn 插件。

11.1、安裝mod_dav_svn

[root@reedoracle conf]# yum install mod_dav_svn

11.2、配置subversion.conf

[root@reedoracle conf.d]# grep '^[^#]' subversion.conf
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
#以上兩行默認已添加,僅需添加以下內容 
<Location /reed>
DAV svn
SVNPath /svn/reed
AuthType Basic   # 使用基本認證方式,即用戶名、密碼認證 
AuthName "svn reed"   # 在認證對話框中出現的提示信息  
AuthUserFile /svn/reed/svnuser  # 指定http存放用戶名信息的文件路徑 
AuthzSVNAccessFile /svn/reed/conf/authz #AuthzSVNAccessFile 指向的是 authz 的策略文件
Satisfy Any
Require valid-user # 限定只有用戶輸入正確的用戶名和密碼後才能訪問該標籤所指向的路徑  
</Location>

11.3、創建賬號密碼認證文件

/svn/reed/conf/authz文件是svnserve獨立服務器使用的認證文件,密碼沒有加密,明文顯示。

/svn/reed/svnuser文件是Apache的http模式使用的認證文件,密碼使用MD5加密。

authz和svnuser文件中,賬號密碼必須設置相同。

[root@reedoracle conf.d]# htpasswd -c  /svn/reed/svnuser admin
New password:
Re-type new password:
Adding password for user admin
[root@reedoracle conf.d]# htpasswd   /svn/reed/svnuser reed
New password:
Re-type new password:
Adding password for user reed
[root@reedoracle conf.d]# htpasswd   /svn/reed/svnuser deer
New password:
Re-type new password:
Adding password for user deer

12、啓動httpd服務

[root@reedoracle conf.d]# /etc/init.d/httpd start
Starting httpd: httpd: apr_sockaddr_info_get() failed for reedoracle
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[  OK  ]

13、測試

13.1、通過客戶端訪問,輸入用戶密碼(passwd文件對應的用戶密碼)

wKiom1jm3g2Bw1biAABU7Fz6A-Y446.png-wh_50

13.2、通過瀏覽器訪問(svnuser文件對應的用戶密碼)

wKioL1jm3g2RGzigAABAiSxgK7g356.png-wh_50


14、附

爲方便調試(需要頻繁重啓測試),共享個腳本給大家:

#!/bin/sh

. /etc/profile

svnid=$(ps -ef|grep 'svnserve -d -r'|grep -v grep|awk '{print $2}')
if [ $svnid ];then
	kill -9 $svnid
	svnserve -d -r /svn
	echo "restart done..."
else
	echo "not start,now begin to start..."
	svnserve -d -r /svn
	echo "start done..."
fi



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章