一、說明
linux
rhel6.4系統下搭建apache+svnapache
二、實現vim
1)在服務器上安裝配置SVN服務;centos
2)SVN服務支持svnserve獨立服務模式訪問;瀏覽器
3)SVN服務支持Apache的http模式訪問。bash
三、安裝svn服務器服務器
[root@reedoracle ~]# yum install -y subversion [root@reedoracle ~]# rpm -qa|grep subversion subversion-1.6.11-15.el6_7.x86_64
四、安裝apache服務器oracle
[root@reedoracle ~]# yum install -y httpd [root@reedoracle ~]# rpm -qa|grep http httpd-2.2.15-56.el6.centos.3.x86_64
五、配置SVN版本庫app
[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配置dom
[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 #普通用戶
七、權限控制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 *=
八、服務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]#
九、啓動SVN服務
[root@reedoracle conf]# svnserve -d -r /svn
十、使用checkout導出文件
10.一、使用TortoiseSVN客戶端測試
本地新建public、reed和deer三個目錄(與authz的權限配置對應)
10.二、使用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]#
十一、配置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.一、安裝mod_dav_svn
[root@reedoracle conf]# yum install mod_dav_svn
11.二、配置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.三、建立帳號密碼認證文件
/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
十二、啓動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 ]
1三、測試
13.一、經過客戶端訪問,輸入用戶密碼(passwd文件對應的用戶密碼)
13.二、經過瀏覽器訪問(svnuser文件對應的用戶密碼)
1四、附
爲方便調試(須要頻繁重啓測試),共享個腳本給你們:
#!/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