现在的位置: 首页 > 综合 > 正文

ubuntu10.10 搭建svn服务器 配合Apache2实现目录访问权限控制

2012年06月18日 ⁄ 综合 ⁄ 共 1872字 ⁄ 字号 评论关闭

1.安装
# sudo apt-get install subversion subversion-tools
# sudo apt-get install apache2 libapache2-svn

2.增加svn用户组,用于管理svn,并加入到www-data的apache组:

# sudo addgroup subversion
# sudo usermod -G subversion -a www-data

3.然后可以创建svn项目仓库了:

# 一般可以将项目仓库建立到/home/svn目录
# 假设项目名为myproject,先建立空目录
$ sudo mkdir /home/svn
$ cd /home/svn
$ sudo mkdir myproject
$ sudo chown -R root:subversion myproject
 
#创建为svn项目,使用以下命令
$ sudo svnadmin create /home/svn/myproject
# 然后才赋予组成员对所有新加入文件仓库的文件拥有相应的权限:
# 如果命令顺序搞错,可能会报错,请参照官方wiki
$ sudo chmod -R g+rws myproject


4.最后是配置apache2,用http协议访问svn服务:

# 在安装了libapache2-svn时会自动生成该文件
$ sudo vi /etc/apache2/mods-available/dav_svn.conf
# 编辑dav_svn.conf配置文件,内有注释,可以去掉前面的#使语句生效,最后内容大概如下即可:
<Location /svn>  #/svn表示http://hostname/svn/myproject
DAV svn
SVNParentPath /home/svn #配置仓库父目录
AuthType Basic
AuthName "welcome to subversion repository"
AuthUserFile /etc/subversion/dav_svn.passwd  #svn用户文件
AuthzSVNAccessFile /etc/subversion/dav_svn.authz #授权访问文件
Require valid-user
</Location>

5.创建svn用户文件/etc/subversion/passwd 和 授权访问文件/etc/subversion/authz:

创建svn用户文件:

#首次创建需要加-c选项,同时可以增加一个svn用户
#执行该命令会提示为新用户user_name设置密码
sudo htpasswd -c /etc/subversion/passwd user_name
 
#以后添加新用户,需要去掉-c选项,否则以前的用户就被覆灭了
sudo htpasswd /etc/subversion/passwd new_name

创建svn授权访问文件(用于多个svn项目,划分不同的用户组):

#用户组指令
[groups]
#格式为  组名 = 用户名1,用户名2
group1 = user1, user2
group2 = user1, user3
#other groups...
#格式为  svn项目的仓库名:对应目录
[svn_repository_name:/]
#设置组的权限,r=read, w=write
@group1 = rw
[svn_repository_name2:/web/css]
@group2 = rw

6.改完最后重启apache:#sudo
/etc/init.d/apache2 restart。这样工作就全部完成了。

参考http://cssor.com/ubuntu-server-svn.html


创建布局
可以在客户端使用svn mkdir在版本库中逐个创建诉需要的目录,更快的方式是使用svn import命令:首先在本地创建一个临时目录,并按照设计好的布局在其下面创建子目录,然后通过svn import一次性提交整个布局到版本库中, 然后删除这个临时目录:
   $ mkdir tmp
   $ mkdir tmp/project_A/trunk
   $ mkdir tmp/project_A/branches
   $ mkdir tmp/project_A/tags
   $ cd tmp
   $ svn import  .   file:///home/svn/project_A  -m "Initial repositorylayout" (必须标注修改信息)
   $ cd ..
   $ rm -fr tmp
然后可以用svn list确认导入的结果是否正确:
   $ svn list --verbose file:///home/svn/project_A
















抱歉!评论已关闭.