Ubuntu12.04配置Svn+Apache的版本控制服务器

" 安装apache2
sudo apt-get install apache2

" 安装apache的svn扩展模块
sudo apt-get install libapache2-svn

" 安装subversion
sudo apt-get install subversion

" 创建版本库保存的文件夹
mkdir /works/test/subversion

" 创建项目的版本库,为测试多用户,管理权限等问题,添加多个版本库
svnadmin create /works/test/subversion/project1
svnadmin create /works/test/subversion/project2
svnadmin create /works/test/subversion/project3

" /etc/apache2/httpd.conf 末尾添加project【1-3】的配置(注意配置文件为httpd.conf)
<Location /project1>
    DAV svn
    SVNPath /works/test/subversion/project1
    AuthType Basic
    AuthName "project description"
    AuthUserFile /etc/apache2/dav_svn.pass
    AuthzSVNAccessFile /etc/apache2/dav_svn.authz
    #<LimitExcept GET PROPFIND OPTIONS REPORT>   
    Require valid-user
    #</LimitExcept>
</Location>


<Location /project2>
    DAV svn
    SVNPath /works/test/subversion/project3
    AuthType Basic
    AuthName "project description"
    AuthUserFile /etc/apache2/dav_svn.pass
    AuthzSVNAccessFile /etc/apache2/dav_svn.authz
    #<LimitExcept GET PROPFIND OPTIONS REPORT>   
    Require valid-user
    #</LimitExcept>
</Location>


<Location /project3>
    DAV svn
    SVNPath /works/test/subversion/project3
    AuthType Basic
    AuthName "project description"
    AuthUserFile /etc/apache2/dav_svn.pass
    AuthzSVNAccessFile /etc/apache2/dav_svn.authz
    #<LimitExcept GET PROPFIND OPTIONS REPORT>   
    Require valid-user
    #</LimitExcept>
</Location>

" 配置文件解析
 
 
设置解释
<Location /project1>意思是Subversion版本库的URL是http://MyServer/project1/
DAV svn告诉Apache是哪个模块响应那个URL的请求-此刻是Subversion模块。
SVNListParentPath on对于Subversion1.3或者更高版本,这个指示表示显示所有SVNParentPath下的版本库
SVNParentPath D:\SVN告诉Subversion需要查看的版本库位于/home/subversion/project 之下
AuthType Basic激活基本认证,就是用户名/密码
AuthName "Subversion repositories"用来说明何时弹出要求用户输入认证信息的认证对话框
AuthUserFile passwd指定使用的认证密码文件
AuthzSVNAccessFile位置Subversion版本库的访问控制文件的路径
Require valid-user指定只有输入了正确的用户/密码的用户可以访问URL
" 添加版本库的访问帐号 sudo htpasswd -c /etc/apache2/dav_svn.pass test1
-c 参数会清空以前所有帐号信息
 
" 如果要添加其他的帐号
sudo htpasswd /etc/apache2/dav_svn.pass test2
sudo htpasswd /etc/apache2/dav_svn.pass test3

" 增加对AuthzSVNAccessFile的支持
修改::/etc/apache2/mods-enabled/dav.load 
增加以下内容
LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so
 
" 在 /etc/apache2/dav_svn.authz 中添加project1-3的配置控制权限
[groups]  
admin = admin
devteam1 = test1 
devteam2 = test2 
devteam3 = test3
docs = test1, test2, test3
training = bob


# 为所有库指定默认访问规则  
# 所有人可以读,管理员可以写,危险分子没有任何权限 
[/] 
* = r  
@admin = rw 
dangerman =   


# 允许开发人员可以完全访问他们的项目版本库
[project1:/]  
@devteam1 = rw


[project2:/]  
@devteam2 = rw 


[project3:/]  
@devteam1 = rw 
@devteam2 = rw 


# 文档编写人员对所有的docs目录有写权限 
[/trunk/doc] 
@docs = rw 
 
" 重启apache
sudo service apache2 restart

" 权限修改
修改 /etc/apache2/envvars 中
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
www-data 修改成 当前系统用户,则可以避免权限问题,需要和 svnadmin create的用户和用户组一致

" 测试
svn co http://localhost/project1
用test2 checkout
创建一个简单的文本文件1
svn add 1
svn ci -m"add 1" 
 
" 如果出现错误 
Can't open file '/works/test/subversion/project1/db/txn-current-lock': Permission denied
请修改相应的/works/test/subversion/project1/目录的权限为777,或者修改成可以访问的相应的用户组
修正后提交,依然出错
更换用户,删除本地svn用户数据
sudo rm ~/.subversion/auth/* -rf

再次checkout,用test1
touch 1
svn add 1
svn ci -m"add 1"
成功,说明权限控制已经成功
 
 
参考
http://www.cnblogs.com/standsun/archive/2012/08/10/2631334.html
http://www.uml.org.cn/pzgl/200906056.asp
http://hi.baidu.com/zouqone/item/783063b76a8c9fd884dd79f0
http://wenku.baidu.com/link?url=G90ljDDM5_uYI6IqgyGYHya9gN0MLC97ampq0wMcAIjLGJfLMoQAw8ulVo1x8jjjUyBr37Wae_4iAKZzq6BPQYTy1UKeAdRUYD_8T4idCLS
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值