說明:
伺服器作業系統:CentOS 6.x
伺服器IP:192.168.21.134
實現目的:
1、在伺服器上安裝配置SVN服務;
2、配置SVN服務同時支援Apache的http和svnserve獨立伺服器兩種模式訪問;
3、Apache的http和svnserve獨立伺服器兩種模式使用相同的存取權限帳號。
具體操作:
一、關閉SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #注釋掉
#SELINUXTYPE=targeted #注釋掉
SELINUX=disabled #增加
:wq! #儲存退出
setenforce 0 #使配置立即生效
二、開啟防火牆連接埠
系統營運 www.111cn.net 溫馨提醒:系統營運原創內容©著作權,轉載請註明出處及原文連結
基於Apache的http模式,預設連接埠為80
基於svnserve的獨立伺服器模式,預設連接埠為3690
vi /etc/sysconfig/iptables #編輯防火牆設定檔
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
:wq! #儲存退出
service iptables restart #最後重啟防火牆使配置生效
三、安裝Apache
yum install httpd apr apr-util httpd-devel #安裝Apache
yum install mod_dav_svn mod_auth_mysql #安裝基於Apache的http模式訪問的支援模組
chkconfig httpd on #設定開機啟動
service httpd start #啟動Apache
httpd -version #查看Apache版本資訊
cd /etc/httpd/modules/
#查看是否有mod_dav_svn.so和mod_authz_svn.so模組,如果有,說明mod_dav_svn安裝成功!
#mod_auth_mysql模組是用資料庫儲存帳號資訊,本次教程沒有涉及,可以不安裝!
注意:如果Apache啟動之後提示錯誤:
httpd:httpd: Could not reliably determine the server's fully qualif domain name, using ::1 for ServerName
解決辦法:
vi /etc/httpd/conf/httpd.conf #編輯
ServerName www.example.com:80 #去掉前面的注釋
:wq! #儲存退出
四、安裝SVN
yum install subversion #使用yum命令線上安裝
svnserve --version #查看svn版本資訊
五、配置SVN
1、建立svn版本庫
mkdir -p /home/svn #建立svn版本庫存放目錄
cd /home/svn #進入目錄
svnadmin create /home/svn/project1 #建立svn版本庫project1
svnadmin create /home/svn/project2 #建立svn版本庫project2
svnadmin create /home/svn/project3 #建立svn版本庫project3
2、設定設定檔
mkdir -p /home/svn/conf #建立設定檔目錄
cp /home/svn/project1/conf/passwd /home/svn/conf/passwd #拷貝帳號密碼設定檔範本
cp /home/svn/project1/conf/authz /home/svn/conf/authz #拷貝目錄許可權設定檔範本
cp /home/svn/project1/conf/passwd /home/svn/conf/svnserve.conf #拷貝全域設定檔範本
vi /home/svn/conf/passwd #編輯,添加以下代碼
[users]
# harry = harryssecret
# sally = sallyssecret
osyunwei=123456
osyunwei1=123456
osyunwei2=123456
osyunwei3=123456
:wq! #儲存退出
vi /home/svn/conf/authz #編輯,添加以下代碼
[groups]
admin = osyunwei
project1 = osyunwei1
project2 = osyunwei2
project3 = osyunwei3
[/]
@admin = rw
* =
[project1:/]
@admin = rw
@project1 = rw
* =
[project2:/]
@admin = rw
@project2 = rw
* =
[project3:/]
@admin = rw
@project3 = rw
* =
:wq! #儲存退出
vi /home/svn/conf/svnserve.conf #配置通用檔案,在最後添加以下代碼
[general]
anon-access=none #禁止匿名訪問,設定為none。預設為read,參數:read,write,none
auth-access=write #授權使用者寫入權限
password-db=/home/svn/conf/passwd #使用者帳號密碼檔案路徑,可以寫絕對路徑
authz-db=/home/svn/conf/authz #存取控制許可權檔案路徑,可以寫絕對路徑
realm=svn #每個SVN項目的認證命,會在認證提示裡顯示,建議寫項目名稱。
:wq! #儲存退出
3、啟動SVN
svnserve -d -r /home/svn --config-file /home/svn/conf/svnserve.conf --listen-port 3690
#--config-file後面跟全域配置參數檔案
ps -ef|grep svn|grep -v grep #查看進程
netstat -ln |grep 3690 #檢查連接埠
killall svnserve #關閉svn
4、設定svn服務開機啟動
系統營運 www.111cn.net 溫馨提醒:系統營運原創內容©著作權,轉載請註明出處及原文連結
vi /etc/init.d/svn #編輯,添加以下代碼
#!/bin/sh
# chkconfig: 2345 85 85
# processname: svn
svn_bin=/usr/local/svn/bin
svn_port=3690
svn_home=/home/svn
svn_config=/home/svn/conf/svnserve.conf
if [ ! -f "$svn_bin/svnserve" ]
then
echo "svnserver startup: cannot start"
exit
fi
case "$1" in
start)
echo "Starting svnserve..."
$svn_bin/svnserve -d -r $svn_home --config-file $svn_config --listen-port $svn_port
echo "Successfully!"
;;
stop)
echo "Stoping svnserve..."
killall svnserve
echo "Successfully!"
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: svn { start | stop | restart } "
exit 1
esac
:wq! #儲存退出
chmod +x /etc/init.d/svn #添加執行許可權
chkconfig svn on #開機自啟動
service svn start #啟動
六、配置svn支援http訪問
1、建立帳號密碼認證檔案
htpasswd -cm /home/svn/conf/http_passwd osyunwei
htpasswd -m /home/svn/conf/http_passwd osyunwei1
htpasswd -m /home/svn/conf/http_passwd osyunwei2
htpasswd -m /home/svn/conf/http_passwd osyunwei3
根據提示輸入2次密碼即可。
注意:
/home/svn/conf/目錄下面passwd檔案是svnserve獨立伺服器使用的認證檔案,密碼沒有加密,明文顯示。
/home/svn/conf/目錄下面http_passwd檔案是Apache的http模式使用的認證檔案,密碼使用MD5加密。
passwd和http_passwd檔案中,帳號密碼必須設定相同。
2、設定Apache設定檔
vi /etc/httpd/conf.d/subversion.conf #編輯,在最後添加以下代碼
DAV svn
#SVNPath /home/svn
SVNParentPath /home/svn
# # Limit write permission to list of valid users.
#
# # Require SSL connection for password protection.
# # SSLRequireSSL
#
AuthType Basic
AuthName "Authorization SVN"
AuthzSVNAccessFile /home/svn/conf/authz
AuthUserFile /home/svn/conf/http_passwd
Require valid-user
#
:wq! #儲存退出
3、設定目錄許可權
chown apache:apache /home/svn -R #設定svn目錄所有者為Apache服務運行帳號apache
4、重啟Apache服務
service httpd restart #重啟
七、測試svn
Windows下安裝svn用戶端TortoiseSVN。
TortoiseSVN下載地址:http://tortoisesvn.net/downloads.html
安裝完成之後,案頭-按右鍵,選擇TortoiseSVN-版本庫瀏覽器
URL輸入:svn://192.168.21.134/project1
使用者名稱:osyunwei1
密碼:123456
勾選:儲存認證
確定
可以進入project1版本庫目錄,按右鍵之後,可以選擇建立檔案夾等操作。
URL輸入:http://192.168.21.134/svn/project1
使用者名稱和密碼跟上面一樣,可以進入project1版本庫目錄,按右鍵之後,可以選擇建立檔案夾等操作。
project1訪問:
svn://192.168.21.134/project1
http://192.168.21.134/svn/project1
使用者名稱:osyunwei1
密碼:123456
project2訪問:
svn://192.168.21.134/project2
http://192.168.21.134/svn/project2
使用者名稱:osyunwei2
密碼:123456
project3訪問:
svn://192.168.21.134/project3 #svnserve獨立伺服器模式
http://192.168.21.134/svn/project3 #Apache的http模式
使用者名稱:osyunwei3
密碼:123456
擴充閱讀:
1、Apache htpasswd命令選項參數說明
-c 建立一個加密檔案
-n 不更新加密檔案,只將apache htpasswd命令加密後的使用者名稱密碼顯示在螢幕上
-m 預設apache htpassswd命令採用MD5演算法對密碼進行加密
-d apache htpassswd命令採用CRYPT演算法對密碼進行加密
-p apache htpassswd命令不對密碼進行進行加密,即純文字密碼
-s apache htpassswd命令採用SHA演算法對密碼進行加密
-b 在apache htpassswd命令列中一併輸入使用者名稱和密碼而不是根據提示輸入密碼
-D 刪除指定的使用者
2、SVNPath 與 SVNParentPath區別:
SVNParentPath:支援多個相同父目錄的SVN版本庫。
SVNPath:只支援一個主目錄的SVN版本庫,如果在主目錄下面建新項目,則提示無權訪問。