Linux下搭建SVN+Apache

SVN是Subversion的简称,是一个开放源代码的版本控制系统。
本文主要讲解Linux下SVN服务的搭建,同时配合Apache,可以在浏览器中访问SVN。

SVN/Apache安装 ##

可以在官网下载SVN服务端安装包,官网下载:http://subversion.apache.org/packages.html
SVN客户端::TortoiseSVN,官网下载:http://tortoisesvn.net/downloads.html

如果有repo源,可以直接安装

1
2
3
yum install httpd
yum install mod_dav_svn
yum install subversion

仓库创建 ##

1
2
3
4
5
mkdir /var/www/svn
cd /var/www/svn
svnadmin create repo1
ls /var/www/svn/repo1
conf db format hooks locks README.txt  

仓库目录说明

- hooks目录:放置hook脚本文件的目录
- locks目录:用来放置subversion的db锁文件和db_logs锁文件的目录,用来追踪存取文件库的客户端
- format文件:是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号
- conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)

SVN配置 ##

配置svn服务 ###

配置文件svnserver.conf文件

1
2
3
4
5
6
7
# vi /svn/project/conf/svnserve.conf   
[general]   
anon-access = none   
auth-access = write   
password-db = /svn/project/conf/passwd   
authz-db = /svn/project/conf/authz   
realm = My Test Repository #这是个提示信息  

添加两个访问用户及口令 ###

1
2
3
4
# vi /svn/project/conf/passwd   
[users]  
test1 = 123456   
test2 = 123456 

注意:对用户配置文件的修改立即生效,不必重启svn服务。

配置新用户的授权文件 ###

1
2
3
4
5
6
7
8
# vi /svn/project/conf/authz   
[groups]   
admin = xiaoran.shen,test1   
user = test2   
[/]   
@admin = rw   
@user = r   
* =  

启动svn服务 ###

1
2
svnserve -d -r /svn/project/
svnserve -d -r /var/www/svn/repo1/

注意:不要使用系统提供的 /etc/init.d/svnserve start 来启动,因为系统默认的启动脚本中没有使用 –r /svn/project参数指定一个资源。这种情况下启动的svn服务,客户端连接会提示“svn: No repository found in ‘svn://192.168.11.229/project’ ”这样的错误。

默认svn服务器端口是3690。

Apache配置 ##

授权文件和密码文件配置 ###

拷贝 /var/www/svn/repo1/conf 下的 authz到 /var/www/svn下,并创建passwd文件

1
2
3
cp /var/www/svn/repo1/conf/authz /var/www/svn/authz //这个是授权文件
cd /var/www/svn
touch passwd  //生成Apache密码文件
1
htpasswd /var/www/svn/passwd user1

输入前面SVN配置的密码,生成账号

将svn关联到apache上: ###

1
 # vi /etc/httpd/conf.d/subversion.conf

在底部加上:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<Location /repos>
   DAV svn
   SVNParentPath /var/www/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 /var/www/svn/authz
      AuthUserFile /var/www/svn/passwd
      Require valid-user
#   </LimitExcept>
</Location>

重启httpd

1
service httpd restart
作者

Benjamin

发布于

2012-08-13

更新于

2021-09-26

许可协议

评论