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

clip_image001

clip_image002

svn安装完毕后,我们来查看svn的版本,如下:

svn –version

clip_image003

通过上图可以看到,目前centos6上svn的版本还是1.6的,版本比较旧了,不过不影响svn的使用就ok。

1.2 在ubuntu上安装

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

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

clip_image004

clip_image005

svn安装完毕后,我们来查看svn的版本,如下:

svn –version

clip_image006

通过上图可以看到,目前ubuntu上svn的版本比较新是1.8的。

二、配置svn

svn安装完毕后,我们现在来配置svn。svn的配置在centos和ubuntu上上基本上是一样的,所以在此我们就不进行区分了。

2.1 创建svn仓库

首先,我们来新建一个ilanni目录用于存储svn仓库,如下:

mkdir -p /data/ilanni

clip_image007

现在我们来创建第一个svn仓库ilannisvn,使用如下命令:

svnadmin create /data/ilanni/ilannisvn

ll /data/ilanni/ilannisvn/

clip_image008

通过上图,我们可以很明显的看出svn创建仓库时会生成conf、db等相关的目录及文件。

现在,我们再来创建第二个svn仓库ilannitest,使用如下命令:

svnadmin create /data/ilanni/ilannitest

ll /data/ilanni/ilannitest/

clip_image009

2.2 svn仓库权限配置

svn仓库创建完毕,我们就可以配置svn仓库的访问权限。

svn仓库权限,我们可以进行单独配置,也可以进行统一配置。考虑实际情况,一般会有多个svn仓库,所以我们进行统一配置。

首先,我们创建用于管理所有仓库帐号密码、权限控制等的目录svndata,如下:

mkdir -p /data/svndata/

clip_image010

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

clip_image011

svnserve.conf文件主要是指定相关用户和权限等配置。

2.2.2 创建passwd文件

svnserve.conf文件创建完毕后,我们来创建用于保存用户和密码的文件passwd,如下:

vim /data/svndata/passwd

[users]

ilanniadmin = 123456

test1 = 123456

test2 = 123456

test3 = 123456

clip_image012

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所有仓库没有任何访问权限。

clip_image013

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

clip_image014

修改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

clip_image015

到此有关svn仓库权限配置已经完毕。

三、使用svn协议访问

svn搭建与配置完毕后,我们现在来访问svn。svn的访问方法有几种,在此我们只介绍最常使用的三种。先来介绍使用svn协议访问的方法。

启动svn,使用如下命令:

svnserve -d -r /data/ilanni/

ps -ef |grep svn

netstat -tunlp

clip_image016

通过上图,我们可以很明显看出svn协议使用tcp的3690端口。

现在我们来直接使用svn协议访问svn服务器,如下:

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

svn info

clip_image017

通过上图,我们可以很明显的看出通过svn命令是可以访问svn服务器的。

现在我们再来添加一个文件,然后提交到svn服务器,如下:

vim ilannisvn.txt

this is a test file.

clip_image018

svn add ilannisvn.txt

svn commit -m ‘ilannisvn test’

clip_image019

现在我们使用windows下的svn工具查看,如下:

svn://192.168.8.33/ilannisvn

clip_image020

clip_image021

clip_image022

通过上图,我们可以看到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>

clip_image023

subversion.conf文件修改完毕后,我们要重新创建svn的用户和密码文件passwd,但是passed文件我们要使用apache的工具htpasswd进行创建。如下:

htpasswd -cm /data/svndata/passwd ilanniadmin

clip_image024

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

clip_image025

passwd用户和密码添加完毕后,然后我们在修改/data目录属性,如下:

chown apache:apache -R /data/

chmod 755 -R /data/

clip_image026

以上配置完毕后,我们来重启apache,使用如下命令:

/etc/init.d/httpd restart

clip_image027

4.2 使用svn客户端验证

现在我们来使用svn客户端来连接svn服务器,

以检出ilannisvn仓库为例,如下图:

http://192.168.8.33/repos/ilannisvn

clip_image028

clip_image029

上图中,输入具有权限的用户及密码。

clip_image030

通过上图,我们可以很明显的看出,我们已经从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>

clip_image031

subversion.conf文件修改完毕后,我们要重新创建svn的用户和密码文件passwd,但是passed文件我们要使用apache的工具htpasswd进行创建。如下:

htpasswd -cm /data/svndata/passwd ilanniadmin

clip_image032

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

clip_image033

passwd用户和密码添加完毕后,然后我们在修改/data目录属性,如下:

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

sudo chmod 755 -R /data/

clip_image034

以上配置完毕后,我们来重启apache,使用如下命令:

/etc/init.d/apache2 restart

clip_image035

4.4 使用svn客户端验证

现在我们来使用svn客户端来连接svn服务器,

以检出ilannitest仓库为例,如下图:

http://192.168.8.34/repos/ilannitest

clip_image036

clip_image037

上图中,输入具有权限的用户及密码。

clip_image038

通过上图,我们可以很明显的看出,我们已经从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>

clip_image039

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

clip_image040

以上配置完毕后,我们来重启apache,使用如下命令:

/etc/init.d/httpd restart

5.2 使用svn客户端验证

现在我们来使用svn客户端来连接svn服务器,还是以检出ilannisvn仓库为例,如下图:

https://192.168.8.33/repos/ilannisvn

clip_image041

clip_image042

接受ssl验证。

clip_image043

clip_image044

通过上图,我们可以很明显的看出,我们已经从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>

clip_image045

在ubuntu上启用svn的https访问方法和centos上还是有几个地方不一样的,不一样的地方如下:

启用ssl模块,使用如下命令:

sudo a2enmod ssl

clip_image046

这条命令相当于执行了以下两条命令,如下:

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

clip_image047

最后我们再来编辑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>

clip_image048

以上配置完毕后,我们来重启apache,使用如下命令:

/etc/init.d/apache2 restart

clip_image035[1]

5.4 使用svn客户端验证

现在我们来使用svn客户端来连接svn服务器,

以检出ilannitest仓库为例,如下图:

https://192.168.8.34/repos/ilannitest

clip_image049

clip_image050

clip_image051

clip_image052

通过上图,我们可以很明显的看出,我们已经从svn服务器检出svn的代码。这说明svn已经能通过https访问。

六、svn仓库权限验证

以上几个章节我们介绍了svn服务器的搭建与配置,以及svn服务器的访问方法,这个章节,我们再来验证下svn仓库权限。

在第二章节中,我们配置的svn仓库权限,如下:

clip_image013[1]

这个权限控制是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

clip_image053

通过上图,我们可以很明显的看出ilanniadmin用户具有对ilannisvn和ilannitest仓库具有读权限,下面我们来测试写权限。

clip_image054

clip_image055

通过上图,我们可以很明显的看出ilanniadmin用户具有对ilannisvn和ilannitest仓库具有读写权限,这说明我们的权限配置是对的。

在此我们只验证admin用户组,其他的权限请各位童鞋自行验证。

到此有关svn服务器搭建与配置的文章就全部结束。


本文转自 远永201314 51CTO博客,原文链接:http://blog.51cto.com/7336056/1859834


目录
打赏
0
0
0
1
344
分享
相关文章
FastAPI开发者福音!FastAPI-MCP:将FastAPI秒变MCP服务器的开源神器,无需配置自动转换!
FastAPI-MCP是一款能将FastAPI应用端点自动转换为符合模型上下文协议(MCP)的开源工具,支持零配置自动发现接口并保留完整文档和模式定义。
350 71
FastAPI开发者福音!FastAPI-MCP:将FastAPI秒变MCP服务器的开源神器,无需配置自动转换!
阿里云服务器配置与云盘容量选择参考:实例规格、云盘等相关配置选择解析
对于初次接触云服务器的用户来说,面对众多配置选项和云盘容量选择,可能会不知道如何选择。有些用户甚至不清楚云服务器应该购买多大容量的云盘,也不知道哪一款配置的云服务器更适合自己的业务。本文将详细探讨这两个问题,并结合阿里云服务器的特点,为您提供一份云服务器配置与云盘容量选择指南,以供了解和选择参考。
阿里云特惠云服务器99元与199元配置与性能和适用场景解析:高性价比之选
2025年,阿里云长效特惠活动继续推出两款极具吸引力的特惠云服务器套餐:99元1年的经济型e实例2核2G云服务器和199元1年的通用算力型u1实例2核4G云服务器。这两款云服务器不仅价格亲民,而且性能稳定可靠,为入门级用户和普通企业级用户提供了理想的选择。本文将对这两款云服务器进行深度剖析,包括配置介绍、实例规格、使用场景、性能表现以及购买策略等方面,帮助用户更好地了解这两款云服务器,以供参考和选择。
在Ubuntu系统下使用vsftpd配置FTP服务器的步骤
以上就是在Ubuntu系统下使用vsftpd配置FTP服务器的步骤。这些步骤都是基础的,但足够让你建立一个简单的FTP服务器。如果你需要更高级的功能,例如SSL加密、虚拟用户等,你可能需要进一步研究vsftpd的配置选项。
69 13
【Azure App Service】分享使用Python Code获取App Service的服务器日志记录管理配置信息
本文介绍了如何通过Python代码获取App Service中“Web服务器日志记录”的配置状态。借助`azure-mgmt-web` SDK,可通过初始化`WebSiteManagementClient`对象、调用`get_configuration`方法来查看`http_logging_enabled`的值,从而判断日志记录是否启用及存储方式(关闭、存储或文件系统)。示例代码详细展示了实现步骤,并附有执行结果与官方文档参考链接,帮助开发者快速定位和解决问题。
79 23
阿里云服务器2核8G、4核16G、8核32G配置热门实例价格、性能与场景全攻略
2核8G/4核16G/8核32G配置的阿里云服务器在阿里云活动中目前有经济型e、通用算力型u1、通用型c7、通用型g8i和通用型g8y五种实例可选,虽然配置相同,但是这些实例规格之间的价格差别是很大的。面对不同配置和类型的云服务器实例,有的新手用户往往因为不知道他们之间的区别,所以不知道如何选择。本文将针对常见的2核8G、4核16G、8核32G配置,深入剖析阿里云服务器中的经济型e、通用算力型u1、通用型g7及通用型g8y实例,以供大家参考和选择。
在Ubuntu 18.04服务器上配置双网口以接入互联网
总结一下,配置双网口在Ubuntu 18.04服务器就像一场冒险游戏,你小心翼翼地从查看网络布局开始,铺设新线路,最后得到了通往互联网的双重通道。祝你在网络世界的冒险旅程中更上一层楼!
60 11
阿里云服务器配置怎么选择?根据用户类型及使用场景配置推荐
如何选择阿里云服务器配置?2025年全解析!个人用户可选68元/年的轻量应用服务器(2核2G、200M带宽),企业用户推荐199元/年的ECS通用算力型u1实例(2核4G、5M带宽)。针对不同需求,还有内存型、计算型、高主频型及GPU服务器等多规格实例。带宽选择需根据访问量,小流量应用3M即可,高流量建议10M起步。存储方面,系统盘40GB够用,数据盘按需选择ESSD或SSD云盘,确保I/O性能满足业务需求。阿小云为你整理最新攻略,助你高效选型!
阿里云服务器2核8G/4核16G/8核32G配置热门实例规格对比与选购指南
如果我们是计划购买2核8G/4核16G/8核32G配置的阿里云服务器,在阿里云活动中一般会有经济型e、通用算力型u1、通用型g7、通用型g8i和通用型g8y几种常见的实例规格可选,尽管这些实例在配置上相似,但它们在性能、价格以及适用场景上存在显著差异。本文将深入解析这些实例规格的性能特点、价格差异及适用场景,为用户在阿里云服务器购买时提供详实的参考依据。
阿里云服务器ECS内存型2核16G、4核32G和8核64G配置实例、费用和性能参数表
本文整理了2025年阿里云服务器租赁价格表,涵盖2核16G、4核32G和8核64G配置收费标准。CPU内存比为1:8,提供多种实例规格如ECS内存型r8i、通用算力型u1等。价格由CPU内存、公网带宽及系统盘组成,支持优惠折扣(年付6.7折起)。文中详细列出各配置参考价格、公网带宽与系统盘收费,并对比不同实例规格性能,如Intel Xeon和AMD EPYC处理器系列,帮助用户选择高性价比方案。具体价格以阿里云官网为准。
101 4

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等