日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Svn服务器的搭建与配置

發布時間:2023/12/9 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Svn服务器的搭建与配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文由ilanniweb提供友情贊助,首發于爛泥行天下

想要獲得更多的文章,可以關注我的微信ilanniweb

要把svn代碼同步到git服務器上,本來是想通過subgit直接同步進行就行了。但是自已以前沒有搭建過svn服務器,所以有了這篇文章。

我們就來介紹下svn服務器的搭建,下一篇文章,我們再介紹svn與git服務器之間的代碼同步。

Svn服務器的搭建與配置網上文章很多,我們只介紹自己關注的幾點。

一、安裝svn

和以前的文章一樣,要搭建svn服務器,我們首先要安裝svn,根據OS的不同,我們來介紹在centos和ubuntu上的安裝。

1.1 在centos上安裝

在centos上安裝svn非常簡單,我們直接使用yum方式進行安裝即可,命令如下:

yum -y install install subversion httpd mod_dav_svn mod_perl mod_ssl openssl

svn安裝完畢后,我們來查看svn的版本,如下:

svn –version

通過上圖可以看到,目前centos6上svn的版本還是1.6的,版本比較舊了,不過不影響svn的使用就ok。

1.2 在ubuntu上安裝

在ubuntu上安裝svn也是非常簡單,直接使用apt-get方式安裝即可,命令如下:

sudo apt-get -y install subversion apache2 libapache2-svn ssl-cert

svn安裝完畢后,我們來查看svn的版本,如下:

svn –version

通過上圖可以看到,目前ubuntu上svn的版本比較新是1.8的。

二、配置svn

svn安裝完畢后,我們現在來配置svn。svn的配置在centos和ubuntu上上基本上是一樣的,所以在此我們就不進行區分了。

2.1 創建svn倉庫

首先,我們來新建一個ilanni目錄用于存儲svn倉庫,如下:

mkdir -p /data/ilanni

現在我們來創建第一個svn倉庫ilannisvn,使用如下命令:

svnadmin create /data/ilanni/ilannisvn

ll /data/ilanni/ilannisvn/

通過上圖,我們可以很明顯的看出svn創建倉庫時會生成conf、db等相關的目錄及文件。

現在,我們再來創建第二個svn倉庫ilannitest,使用如下命令:

svnadmin create /data/ilanni/ilannitest

ll /data/ilanni/ilannitest/

2.2 svn倉庫權限配置

svn倉庫創建完畢,我們就可以配置svn倉庫的訪問權限。

svn倉庫權限,我們可以進行單獨配置,也可以進行統一配置。考慮實際情況,一般會有多個svn倉庫,所以我們進行統一配置。

首先,我們創建用于管理所有倉庫帳號密碼、權限控制等的目錄svndata,如下:

mkdir -p /data/svndata/

svndata目前創建完畢后,我們進行其他文件的配置。

2.2.1 創建svnserve.conf文件

接下來我們來創建svn倉庫權限的總控制文件svnserve.conf,如下:

vim /data/svndata/svnserve.conf

[general]

#未鑒定的用戶無權限訪問該版本庫

anon-access = none

#鑒定后的可讀寫版本庫

auth-access = write

#使用的密碼文件是同級路徑的passwd文件,即是/data/svndata/passwd

password-db = passwd

#使用的權限控制文件是同級路徑的authz文件,即是/data/svndata/authz

authz-db = authz

#realm指定版本庫的認證域,即在登錄時提示的認證域名稱。各個倉庫的認證域都可以自定義

realm = svndata

svnserve.conf文件主要是指定相關用戶和權限等配置。

2.2.2 創建passwd文件

svnserve.conf文件創建完畢后,我們來創建用于保存用戶和密碼的文件passwd,如下:

vim /data/svndata/passwd

[users]

ilanniadmin = 123456

test1 = 123456

test2 = 123456

test3 = 123456

passwd文件用于存儲用戶名和密碼,其中等號的兩邊要有一個空格,=前面是用戶名和,=后面是密碼,密碼是明文保存的。

2.2.3 創建authz文件

passwd文件創建后,我們開始創建svn倉庫的權限控制文件authz。

注意:權限管理的統一思路是:創建多個組,將各個用戶加入到各個組,控制各個組的權限。以后對權限管理就維持在組的維度上,否則以人為粒度管理,會死人滴。

vim /data/svndata/authz

[groups]

develop = test1,test2

android = test3

admin = ilanniadmin

[ilannisvn:/]

@develop = rw

@admin = rw

* =

[ilannisvn:/config]

@admin = rw

test1 = r

* =

[ilannitest:/]

@develop = r

@admin = rw

* =

現在這個權限控制是admin用戶組,對ilannisvn和ilannitest倉庫具有讀寫權限。

develop用戶組對ilannisvn倉庫具有讀寫權限,對ilannitest具有只讀權限,并且develop用戶組的test1用戶對ilannisvn倉庫下的config目錄只讀不能寫。

android用戶組對svn所有倉庫沒有任何訪問權限。

2.2.4 單獨配置svnserve.conf文件

在前面我們說了,要對svn倉庫權限進行統一管理。而以上章節中,我們把相關的文件創建完畢后,我們只需要修改每個倉庫的svnserve.conf文件,這樣就能達到統一管理每個倉庫的權限。

修改ilannisvn倉庫的svnserve.conf文件,如下:

vim /data/ilanni/ilannisvn/conf/svnserve.conf

[general]

anon-access = none

auth-access = write

#說明使用總控制的密碼文件

password-db = /data/svndata/passwd

#說明使用總控制的權限文件

authz-db = /data/svndata/authz

realm = ilannisvn

修改ilannitest倉庫的svnserve.conf文件,如下:

vim /data/ilanni/ilannitest/conf/svnserve.conf

[general]

anon-access = none

auth-access = write

#說明使用總控制的密碼文件

password-db = /data/svndata/passwd

#說明使用總控制的權限文件

authz-db = /data/svndata/authz

realm = ilannitest

到此有關svn倉庫權限配置已經完畢。

三、使用svn協議訪問

svn搭建與配置完畢后,我們現在來訪問svn。svn的訪問方法有幾種,在此我們只介紹最常使用的三種。先來介紹使用svn協議訪問的方法。

啟動svn,使用如下命令:

svnserve -d -r /data/ilanni/

ps -ef |grep svn

netstat -tunlp

通過上圖,我們可以很明顯看出svn協議使用tcp的3690端口。

現在我們來直接使用svn協議訪問svn服務器,如下:

svn co –username test1 –password 123456 svn://192.168.8.33/ilannisvn

svn info

通過上圖,我們可以很明顯的看出通過svn命令是可以訪問svn服務器的。

現在我們再來添加一個文件,然后提交到svn服務器,如下:

vim ilannisvn.txt

this is a test file.

svn add ilannisvn.txt

svn commit -m ‘ilannisvn test’

現在我們使用windows下的svn工具查看,如下:

svn://192.168.8.33/ilannisvn

通過上圖,我們可以看到test1用戶提交的日志。這就說明使用svn協議訪問svn服務器就已經ok了。

四、使用http訪問

要使用http訪問svn服務器,我們需要配置apache服務,下面根據OS不同分別講解下。

注意:無論是使用http還是https訪問svn,passwd文件都是通過htpasswd命令創建。

4.1 在centos上配置

在centos上配置apache與svn集成,我們只需要修改apache的配置文件subversion.conf即可。

subversion.conf修改內容如下:

vim /etc/httpd/conf.d/subversion.conf

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

<Location /repos>

?? DAV svn

SVNParentPath /data/ilanni

#一定要放在這行下面,否則會出現權限混亂的現象

AuthzSVNAccessFile /data/svndata/authz

?? AuthType Basic

?? AuthName “Authorization Realm”

AuthUserFile /data/svndata/passwd

#告訴apache在authfile中所有的用戶都可以訪問。 如果沒有它,則只能第一個用戶可以訪問新建庫。

Require valid-user

</Location>

subversion.conf文件修改完畢后,我們要重新創建svn的用戶和密碼文件passwd,但是passed文件我們要使用apache的工具htpasswd進行創建。如下:

htpasswd -cm /data/svndata/passwd ilanniadmin

htpasswd命令參數中-c是創建passwd文件,-m是使用md5加密。

passwd文件創建完畢后,我們再來添加test1和test2用戶,使用如下命令:

htpasswd -m /data/svndata/passwd test1

htpasswd -m /data/svndata/passwd test2

htpasswd -m /data/svndata/passwd test3

passwd用戶和密碼添加完畢后,然后我們在修改/data目錄屬性,如下:

chown apache:apache -R /data/

chmod 755 -R /data/

以上配置完畢后,我們來重啟apache,使用如下命令:

/etc/init.d/httpd restart

4.2 使用svn客戶端驗證

現在我們來使用svn客戶端來連接svn服務器,

以檢出ilannisvn倉庫為例,如下圖:

http://192.168.8.33/repos/ilannisvn

上圖中,輸入具有權限的用戶及密碼。

通過上圖,我們可以很明顯的看出,我們已經從svn服務器檢出svn的代碼。這說明svn已經能通過http訪問。

4.3 在ubuntu上配置

在ubuntu上配置apache與svn集成,和centos上一樣的,也只需要修改apache的配置文件subversion.conf即可。

subversion.conf修改內容如下:

sudo vim /etc/apache2/mods-available/dav_svn.conf

<Location /repos>

?? DAV svn

? SVNParentPath /data/ilanni

#一定要放在這行下面,否則會出現權限混亂的現象

AuthzSVNAccessFile /data/svndata/authz

AuthType Basic

AuthName “Authorization Realm”

AuthUserFile /data/svndata/passwd

#告訴apache在authfile中所有的用戶都可以訪問。 如果沒有它,則只能第一個用戶可以訪問新建庫。

Require valid-user

</Location>

subversion.conf文件修改完畢后,我們要重新創建svn的用戶和密碼文件passwd,但是passed文件我們要使用apache的工具htpasswd進行創建。如下:

htpasswd -cm /data/svndata/passwd ilanniadmin

htpasswd命令參數中-c是創建passwd文件,-m是使用md5加密。

passwd文件創建完畢后,我們再來添加test1和test2用戶,使用如下命令:

htpasswd -m /data/svndata/passwd test1

htpasswd -m /data/svndata/passwd test2

htpasswd -m /data/svndata/passwd test3

passwd用戶和密碼添加完畢后,然后我們在修改/data目錄屬性,如下:

sudo chown -R www-data:www-data /data/

sudo chmod 755 -R /data/

以上配置完畢后,我們來重啟apache,使用如下命令:

/etc/init.d/apache2 restart

4.4 使用svn客戶端驗證

現在我們來使用svn客戶端來連接svn服務器,

以檢出ilannitest倉庫為例,如下圖:

http://192.168.8.34/repos/ilannitest

上圖中,輸入具有權限的用戶及密碼。

通過上圖,我們可以很明顯的看出,我們已經從svn服務器檢出svn的代碼。這說明svn已經能通過http訪問。

五、使用https訪問

要使用https訪問svn服務器,我們也是需要配置apache服務,下面根據OS不同分別講解下。

注意:無論是使用http還是https訪問svn,passwd文件都是通過htpasswd命令創建。

5.1 在centos上配置

在centos上配置apache與svn集成,我們只需要修改apache的配置文件subversion.conf和ssl.conf即可。

對于ssl.conf文件,我們使用默認的即可。但是如果我們要使用自己的ssl證書的話,可以修改ssl.conf文件的SSLCertificateFile和SSLCertificateKeyFile選項即可。

如果不使用自己的ssl證書的話,保持該文件默認就行了,如下:

vim /etc/httpd/conf.d/ssl.conf

LoadModule ssl_module modules/mod_ssl.so

Listen 443

SSLPassPhraseDialog? builtin

SSLSessionCache???????? shmcb:/var/cache/mod_ssl/scache(512000)

SSLSessionCacheTimeout? 300

SSLMutex default

SSLRandomSeed startup file:/dev/urandom? 256

SSLRandomSeed connect builtin

SSLCryptoDevice builtin

<VirtualHost _default_:443>

ErrorLog logs/ssl_error_log

TransferLog logs/ssl_access_log

LogLevel warn

SSLEngine on

SSLProtocol all -SSLv2

SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES

SSLCertificateFile /etc/pki/tls/certs/localhost.crt

SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

<Files ~ “\.(cgi|shtml|phtml|php3?)$”>

??? SSLOptions +StdEnvVars

</Files>

<Directory “/var/www/cgi-bin”>

??? SSLOptions +StdEnvVars

</Directory>

SetEnvIf User-Agent “.*MSIE.*” \

???????? nokeepalive ssl-unclean-shutdown \

???????? downgrade-1.0 force-response-1.0

CustomLog logs/ssl_request_log \

????????? “%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \”%r\” %b”

</VirtualHost>

而subversion.conf文件,只需要添加SSLRequireSSL選項即可。如下:

vim /etc/httpd/conf.d/subversion.conf

LoadModule dav_svn_module???? modules/mod_dav_svn.so

LoadModule authz_svn_module?? modules/mod_authz_svn.so

<Location /repos>

?? DAV svn

?? SVNParentPath /data/ilanni

#一定要放在這行下面,否則會出現權限混亂的現象

? AuthzSVNAccessFile /data/svndata/authz

?? AuthType Basic

?? AuthName “Authorization Realm”

?? AuthUserFile /data/svndata/passwd

#告訴apache在authfile中所有的用戶都可以訪問。 如果沒有它,則只能第一個用戶可以訪問新建庫。

?? Require valid-user

?? SSLRequireSSL

</Location>

以上配置完畢后,我們來重啟apache,使用如下命令:

/etc/init.d/httpd restart

5.2 使用svn客戶端驗證

現在我們來使用svn客戶端來連接svn服務器,還是以檢出ilannisvn倉庫為例,如下圖:

https://192.168.8.33/repos/ilannisvn

接受ssl驗證。

通過上圖,我們可以很明顯的看出,我們已經從svn服務器檢出svn的代碼。這說明svn已經能通過https訪問。

5.3 在ubuntu上配置

在ubuntu上配置apache與svn集成,和centos上是差不多的,也是需要修改apache的配置文件subversion.conf和default-ssl.conf。

對于ssl.conf文件,我們使用默認的即可。但是如果我們要使用自己的ssl證書的話,可以修改default-ssl.conf文件的SSLCertificateFile和SSLCertificateKeyFile選項即可。

如果不使用自己的ssl證書的話,保持該文件默認就行了,如下:

sudo vim /etc/apache2/sites-available/default-ssl.conf

<IfModule mod_ssl.c>

<VirtualHost _default_:443>

ServerAdmin webmaster@localhost

DocumentRoot /var/www/html

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

SSLEngine on

SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem

SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

<FilesMatch “\.(cgi|shtml|phtml|php)$”>

SSLOptions +StdEnvVars

</FilesMatch>

<Directory /usr/lib/cgi-bin>

SSLOptions +StdEnvVars

</Directory>

BrowserMatch “MSIE [2-6]” \

nokeepalive ssl-unclean-shutdown \

downgrade-1.0 force-response-1.0

BrowserMatch “MSIE [17-9]” ssl-unclean-shutdown

</VirtualHost>

</IfModule>

在ubuntu上啟用svn的https訪問方法和centos上還是有幾個地方不一樣的,不一樣的地方如下:

啟用ssl模塊,使用如下命令:

sudo a2enmod ssl

這條命令相當于執行了以下兩條命令,如下:

sudo ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled
sudo ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled

如果沒有a2enmod指令,也可直接在apache2.conf中設置SSL模塊加載,如下:

LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so

啟用SSL站點,使用如下命令:

sudo a2ensite default-ssl

最后我們再來編輯dav_svn.conf文件,加入SSLRequireSSL選項即可,如下:

sudo vim /etc/apache2/mods-available/dav_svn.conf

<Location /repos>

?? DAV svn

?? SVNParentPath /data/ilanni

#一定要放在這行下面,否則會出現權限混亂的現象

AuthzSVNAccessFile /data/svndata/authz

AuthType Basic

AuthName “Authorization Realm”

AuthUserFile /data/svndata/passwd

#告訴apache在authfile中所有的用戶都可以訪問。 如果沒有它,則只能第一個用戶可以訪問新建庫。

Require valid-user

SSLRequireSSL

</Location>

以上配置完畢后,我們來重啟apache,使用如下命令:

/etc/init.d/apache2 restart

5.4 使用svn客戶端驗證

現在我們來使用svn客戶端來連接svn服務器,

以檢出ilannitest倉庫為例,如下圖:

https://192.168.8.34/repos/ilannitest

通過上圖,我們可以很明顯的看出,我們已經從svn服務器檢出svn的代碼。這說明svn已經能通過https訪問。

六、svn倉庫權限驗證

以上幾個章節我們介紹了svn服務器的搭建與配置,以及svn服務器的訪問方法,這個章節,我們再來驗證下svn倉庫權限。

在第二章節中,我們配置的svn倉庫權限,如下:

這個權限控制是admin用戶組,對ilannisvn和ilannitest倉庫具有讀寫權限。

develop用戶組對ilannisvn倉庫具有讀寫權限,對ilannitest具有只讀權限,并且develop用戶組的test1用戶對ilannisvn倉庫下的config目錄只讀不能寫。

android用戶組對svn所有倉庫沒有任何訪問權限。

現在我們來驗證admin用戶組的ilanniadmin用戶對svn倉庫的權限,如下:

svn co –username ilanniadmin –password 123456 https://192.168.8.33/repos/ilannisvn

svn co –username ilanniadmin –password 123456 https://192.168.8.33/repos/ilannitest

通過上圖,我們可以很明顯的看出ilanniadmin用戶具有對ilannisvn和ilannitest倉庫具有讀權限,下面我們來測試寫權限。

通過上圖,我們可以很明顯的看出ilanniadmin用戶具有對ilannisvn和ilannitest倉庫具有讀寫權限,這說明我們的權限配置是對的。

在此我們只驗證admin用戶組,其他的權限請各位童鞋自行驗證。

到此有關svn服務器搭建與配置的文章就全部結束。


轉載于:https://blog.51cto.com/7336056/1859834

總結

以上是生活随笔為你收集整理的Svn服务器的搭建与配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。