天天看點

Linux下SVN伺服器同時支援Apache的http和https及svnserve獨立伺服器三種模式且使用相同的通路權限賬号

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.osyunwei.com  溫馨提醒:系統運維原創内容版權所有,轉載請注明出處及原文連結

基于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

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 #去掉前面的注釋

四、安裝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

vi /home/svn/conf/authz #編輯,添加以下代碼

[groups]

admin = osyunwei

project1 = osyunwei1

project2 = osyunwei2

project3 = osyunwei3

[/]

@admin = rw

* =

[project1:/]

@project1 = rw

[project2:/]

@project2 = rw

[project3:/]

@project3 = rw

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項目的認證命,會在認證提示裡顯示,建議寫項目名稱。

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服務開機啟動

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

restart)

$0 stop

$0 start

*)

echo "Usage: svn { start | stop | restart } "

exit 1

esac

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 #編輯,在最後添加以下代碼

<Location /svn>

DAV svn

#SVNPath /home/svn

SVNParentPath /home/svn

# # Limit write permission to list of valid users.

# <LimitExcept GET PROPFIND OPTIONS REPORT>

# # 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

# </LimitExcept>

</Location>

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-版本庫浏覽器

Linux下SVN伺服器同時支援Apache的http和https及svnserve獨立伺服器三種模式且使用相同的通路權限賬号

URL輸入:svn://192.168.21.134/project1

使用者名:osyunwei1

密碼:123456

勾選:儲存認證

确定

Linux下SVN伺服器同時支援Apache的http和https及svnserve獨立伺服器三種模式且使用相同的通路權限賬号

可以進入project1版本庫目錄,右鍵單擊之後,可以選擇建立檔案夾等操作。

Linux下SVN伺服器同時支援Apache的http和https及svnserve獨立伺服器三種模式且使用相同的通路權限賬号

URL輸入:http://192.168.21.134/svn/project1

使用者名和密碼跟上面一樣,可以進入project1版本庫目錄,右鍵單擊之後,可以選擇建立檔案夾等操作。

Linux下SVN伺服器同時支援Apache的http和https及svnserve獨立伺服器三種模式且使用相同的通路權限賬号

project1通路:

svn://192.168.21.134/project1

http://192.168.21.134/svn/project1

project2通路:

svn://192.168.21.134/project2

http://192.168.21.134/svn/project2

使用者名:osyunwei2

project3通路:

svn://192.168.21.134/project3 #svnserve獨立伺服器模式

http://192.168.21.134/svn/project3 #Apache的http模式

使用者名:osyunwei3

擴充閱讀:

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版本庫,如果在主目錄下面建新項目,則提示無權通路。

至此,Linux下SVN伺服器同時支援Apache的http和svnserve獨立伺服器兩種模式且使用相同的通路權限賬号教程完成。

=========下面是支援https通路的配置,在上面的基礎上再繼續操作即可===========

1.  https服務之前,通過查閱相關資料得知,需要通過申請建立伺服器證書才可以正

常實作功能,是以需要使用yum指令安裝申請證書所需要的軟體包。

#yum  install  mod_ssl  openssl

2.  開始進行證書的申請工作

#cd  /etc/pki/tls/private

#openssl  genrsa  -out  ca.key  1024

#openssl  req  -new  -key  ca.key  -out  ca.csr

(以上兩步為産生證書的私鑰與

CSR)

#cd  /etc/pki/tls/certs

#openssl  x509  -req  -days  365  -in  /etc/pki/tls/private/ca.csr   -signkey  /etc/pki/tls/private/ca.key  -out  ca.crt

(為産生自我簽署的金鑰) (以上步驟必須在特定檔案夾下産生所需的檔案,保證輸入指令正确,保證産生檔案所在檔案夾正确,否則後面将發生錯誤) 在執行上面3步過程中,會要求對你申請的證書進行基本的資訊填寫,按要求填寫。

3. 修改apache ssl檔案

#vi  /etc/httpd/conf.d/ssl.conf

進入檔案,修改金鑰以及金鑰憑證正确路徑(此路徑即為上步生成的兩個檔案路徑,必須保證路徑的準确性),如下圖

<a href="http://s4.51cto.com/wyfs02/M01/78/C8/wKioL1aDaKbSaL88AABaARrANpM387.png" target="_blank"></a>

修改完成後儲存退出,執行下面指令重新開機apache

#/etc/init.d/httpd  restart

4. 配置實作https的虛拟主機

#vi  /etc/httpd/conf/httpd.conf

進入檔案後在檔案的最後添加如下圖所示内容後,儲存退出。

注意:上圖中所包含的檔案路徑需按照個人檔案所在路徑填寫

5. 重新開機apache并檢視https服務是否實作

驗證過程如下:

在虛拟機的浏覽器中輸入https://localhost/svn/project1,浏覽器會提示說你所登入的位址存在不安全因素,不用管它,直接添加信任(此時可以看到剛才申請的伺服器證書),輸入使用者名與密碼,登陸版本庫。

也可以在指令行輸入以下指令,檢視是否配置成功

# svn  checkout

如果出現以下資訊則證明配置成功

<a href="http://s3.51cto.com/wyfs02/M02/78/CA/wKiom1aDaM7i_pgsAABlloD9m9o349.png" target="_blank"></a>

按照要求填寫使用者名與密碼,連接配接版本庫成功。

原文連結:

<a href="http://www.osyunwei.com/archives/9145.html" target="_blank">http://www.osyunwei.com/archives/9145.html</a>

本文轉自 興趣e族 51CTO部落格,原文連結:http://blog.51cto.com/simplelife/1729931