1
|
sudo apt-get install subversion
|
假定咱们仓库的父目录为/home/svn apache
1
2
|
cd /home/svn
sudo svnadmin create /home/svn/test
|
能够看到/home/svn目录下面有一个test文件夹,里面有conf,db,format,hooks,locks,README.txt几个文件 浏览器
1
|
sudo svnserve -d -r /home/svn
|
1
2
|
输出:Checked out revision 0
|
说明安装成功 服务器
若是要经过浏览器访问的,则须要与apache配合: svn
若是没有安装apache,须要先安装apache以及libapache2-svn 测试
1
|
sudo apt-get install apache libapache2-svn
|
修改/etc/apache2/mods-available/dav_svn.conf ui
1
2
3
4
5
6
7
8
9
|
<Location /svn>
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
</Location>
|
说明:
1.SVNParentPath表示的全部库的父级目录,SVNParentPath与SVNPath只能启用一个。SVNPath只能建立一个仓库,SVNParentPath则能够建立多个,因为一般不会只有一个仓库,因此一般都会选择SVNParentPath
2.AuthUserFile 是svn的用户配置文件,位置能够自定义,文件也须要本身建立,不过得保证apache有访问权限
3.AuthzSVNAccessFile 是svn的权限控制文件,其余同AuthUserFile 加密
1
|
sudo htpasswd -c /etc/subversion2/dav_svn.passwd username
|
回车以后须要输入两次密码。
听说 -c 参数建立文件会覆盖原有的信息,可是通过测试,并无覆盖原有的用户信息,因此,执行 spa
1
2
|
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中有相似 rest
1
|
xiao:$apr1$wq1l1SCM$lAgKYtQJUzpPZPgvQXTnX1
|
的片断,xiao是用户名,后面的是加密后的密码 orm
编辑 /etc/apache2/dav_svn.authz
若是想开放全部权限,那么能够直接
1
2
|
[/]
* = rw
|
表示用户都有读写权限
1
|
sudo /etc/init.d/apache2 restart
|
访问http://127.0.0.1/svn/test/可查看结果
补充说明:
出现错误:
1
2
|
Invalid command 'AuthzSVNAccessFile', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
|
缘由:没有导入auth模块
解决方法:
在
1
|
/etc/apache2/mods-enabled/dav_svn.load
|
中加入
1
|
LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so
|
若是但愿访问全部的仓库列表,能够修改/etc/apache2/mods-available/dav_svn.conf以下:
1
2
3
4
5
6
7
8
9
10
|
<Location /svn/>
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
</Location>
|
注意上面的变化,%lt;Location /svn/>添加了尾部斜线,SVNListParentPath On是新添加的。
重启apache后访问http://127.0.0.1/svn/(结尾有个’/')能够看到结果
/etc/apache2/dav_svn.authz 权限控制的一个示例
1
2
3
4
5
6
7
8
9
10
11
|
[groups] #用来分组用户
group1 = xiao, xe
group2 = user1, user2
[test:/] #仓库名称,[/]表示全部仓库
@group1 = rw #表示group1组的用户(xiao, xe)对test具备读写权限
@group2 = r #表示group2组的用户(user1, user2)对test只具备读权限,没有写的权限
* = #表示全部用户都没有权限,即既不能读,也不能写
[test2:/]
* = rw #表示全部用户都具备读写权限
|
出现
Can’t open directory ‘/home/svn’: Permission denied
或者
403 forbidden
错误的话,表示apache(一般帐户是www-data)没有权限文档到svn所在目录的权限,此时须要检查/home/svn及其子文件夹的权限,好比
1
|
sudo chown -R www-data /home/svn
|
而后再访问http://127.0.0.1/svn/test/查看结果
Permission denied: make_sock: could not bind to address 0.0.0.0:80 等字样,记得加sudo