Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2026753
  • 博文数量: 433
  • 博客积分: 918
  • 博客等级: 准尉
  • 技术积分: 3218
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-24 18:21
个人简介

你是不是暗恋我,那就给我发个消息呀,让我知道o(∩∩)o

文章分类

全部博文(433)

分类: LINUX

2015-01-04 09:57:25


Ubuntu(Mint)下搭建SVN服务器
 
1.安装Subversion
1    
sudo apt-get install subversion
2.创建仓库
假定我们仓库的父目录为/home/svn

cd /home/svn
sudo svnadmin create /home/svn/test
可以看到/home/svn目录下面有一个test文件夹,里面有conf,db,format,hooks,locks,README.txt几个文件
 
3.启动svn服务器
sudo svnserve -d -r /home/svn
4.测试svn服务器
svn co file://localhost/home/svn/test
输出:Checked out revision 0
说明安装成功
 
如果要通过访问的,则需要与apache配合:
 
1.安装apache
如果没有安装apache,需要先安装apache以及libapache2-svn
sudo apt-get install apache libapache2-svn
2.整合SVN
修改/etc/apache2/mods-available/dav_svn.conf

    DAV svn
    SVNParentPath /home/svn
    AuthType Basic
    AuthName "Subversion Repository"
    AuthUserFile /etc/subversion/dav_svn.passwd
    AuthzSVNAccessFile /etc/subversion/dav_svn.authz
    Require valid-user
说明:
1.SVNParentPath表示的所有库的父级目录,SVNParentPath与SVNPath只能启用一个。SVNPath只能创建一个仓库,SVNParentPath则可以创建多个,由于通常不会只有一个仓库,所以通常都会选择SVNParentPath
2.AuthUserFile 是svn的用户配置文件,位置可以自定义,文件也需要自己创建,不过得保证apache有访问权限
3.AuthzSVNAccessFile 是svn的权限控制文件,其他同AuthUserFile
 
3.添加SVN用户
sudo htpasswd -c /etc/subversion2/dav_svn.passwd username
回车之后需要输入两次密码。
据说 -c 参数创建文件会覆盖原有的信息,但是经过测试,并没有覆盖原有的用户信息,所以,执行

sudo htpasswd -c /etc/subversion2/dav_svn.passwd user1
sudo htpasswd -c /etc/subversion2/dav_svn.passwd user2
dav_svn.passwd文件中依旧会有user1和user2两个用户信息,没有冲突。
另外,/etc/subversion2/dav_svn.passwd文件需要与第2步中自定义的文件位置一致
完成之后可以看到dav_svn.passwd中有类似
 
xiao:$apr1$wq1l1SCM$lAgKYtQJUzpPZPgvQXTnX1
的片段,xiao是用户名,后面的是后的密码
 
4.修改SVN访问权限
编辑 /etc/apache2/dav_svn.authz
如果想开放所有权限,那么可以直接

[/]
* = rw
表示用户都有读写权限
 
5.重启apache
1
sudo /etc/init.d/apache2 restart
访问可查看结果
 
补充说明:
 
1.整合SVN出错
出现错误:
Invalid command 'AuthzSVNAccessFile', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
原因:没有导入auth模块
解决方法:
/etc/apache2/mods-enabled/dav_svn.load中加入
LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so
2.访问仓库列表
如果希望访问所有的仓库列表,可以修改/etc/apache2/mods-available/dav_svn.conf如下:
 
    DAV svn
    SVNParentPath /home/svn
    SVNListParentPath On
    AuthType Basic
    AuthName "Subversion Repository"
    AuthUserFile /etc/subversion/dav_svn.passwd
    AuthzSVNAccessFile /etc/subversion/dav_svn.authz
    Require valid-user
注意上面的变化,%lt;Location /svn/>添加了尾部斜线,SVNListParentPath On是新添加的。
重启apache后访问(结尾有个’/')可以看到结果
 
3.权限控制说明
/etc/apache2/dav_svn.authz 权限控制的一个示例
 
[groups] #用来分组用户
group1 = xiao, xe
group2 = user1, user2
 
[test:/] #仓库名称,[/]表示所有仓库
@group1 = rw #表示group1组的用户(xiao, xe)对test具有读写权限
@group2 = r  #表示group2组的用户(user1, user2)对test只具有读权限,没有写的权限
* = #表示所有用户都没有权限,即既不能读,也不能写
 
[test2:/]
* = rw #表示所有用户都具有读写权限
4.权限错误
出现
Can’t open directory ‘/home/svn’: Permission denied
或者
403 forbidden
错误的话,表示apache(通常账户是www-data)没有权限文档到svn所在目录的权限,此时需要检查/home/svn及其子文件夹的权限,比如

sudo chown -R www-data /home/svn
然后再访问查看结果
 
5.重启apache的时候如果出现
Permission denied: make_sock: could not bind to address 0.0.0.0:80
等字样,记得加sudo
阅读(1841) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~