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


相关文章
|
22天前
|
安全 Linux 应用服务中间件
从零开始启动、配置、保护你的云服务器并搭建一个简单的网站
本文详细介绍了如何准备原料、搭建基础环境、进行安全防护、建设网站、管理证书以及开启BBR优化网络性能。主要内容包括获取健康云服务器、配置SSH登录、创建非root用户、启用密钥认证、安装Nginx、申请TLS证书、配置HTTPS自动跳转及优化网络性能等步骤。通过本文,读者可以掌握从零开始搭建个人网站的全过程。
34 1
从零开始启动、配置、保护你的云服务器并搭建一个简单的网站
|
14天前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
22天前
|
存储 人工智能 弹性计算
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理。通过合理优化资源分配、利用自动伸缩及高效数据管理,ECS能显著提升AI系统的性能与效率,降低运营成本,助力科研与企业用户在AI领域取得突破。
40 6
|
25天前
|
负载均衡 监控 应用服务中间件
配置Nginx反向代理时如何指定后端服务器的权重?
配置Nginx反向代理时如何指定后端服务器的权重?
46 4
|
1月前
|
存储 分布式计算 固态存储
阿里云2核16G、4核32G、8核64G配置云服务器租用收费标准与活动价格参考
2核16G、8核64G、4核32G配置的云服务器处理器与内存比为1:8,这种配比的云服务器一般适用于数据分析与挖掘,Hadoop、Spark集群和数据库,缓存等内存密集型场景,因此,多为企业级用户选择。目前2核16G配置按量收费最低收费标准为0.54元/小时,按月租用标准收费标准为260.44元/1个月。4核32G配置的阿里云服务器按量收费标准最低为1.08元/小时,按月租用标准收费标准为520.88元/1个月。8核64G配置的阿里云服务器按量收费标准最低为2.17元/小时,按月租用标准收费标准为1041.77元/1个月。本文介绍这些配置的最新租用收费标准与活动价格情况,以供参考。
|
1月前
|
监控 PHP Apache
优化 PHP-FPM 参数配置:实现服务器性能提升
优化PHP-FPM的参数配置可以显著提高服务器的性能和稳定性。通过合理设置 `pm.max_children`、`pm.start_servers`、`pm.min_spare_servers`、`pm.max_spare_servers`和 `pm.max_requests`等参数,并结合监控和调优措施,可以有效应对高并发和负载波动,确保Web应用程序的高效运行。希望本文提供的优化建议和配置示例能够帮助您实现服务器性能的提升。
57 3
|
1月前
|
存储 缓存 固态存储
阿里云服务器2核8G、4核16G、8核32G配置租用收费标准与活动价格参考
2核8G、8核32G、4核16G配置的云服务器处理器与内存比为1:4,这种配比的云服务器一般适用于中小型数据库系统、缓存、搜索集群和企业办公类应用等通用型场景,因此,多为企业级用户选择。本文介绍这些配置的最新租用收费标准与活动价格情况,以供参考。
|
1月前
|
存储 编解码 安全
阿里云服务器2核4G、4核8G、8核16G配置租用收费标准与活动价格参考
通常情况下,个人和一般企业用户在购买阿里云服务器时比较喜欢购买2核4G、4核8G、8核16G等配置,这些配置既能满足各种图文类中小型网站和应用又能满足企业网站应用、批量计算、中小型数据库系统等场景,2核4G配置适合新手入门或初创企业,4核8G与8核16G兼具成本与性能优势,适合通用场景,本文介绍这些配置的最新购买价格,包含原价收费标准和最新活动价格。
|
1月前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
2月前
|
NoSQL Linux PHP