Ubuntu下SVN服务器安装配置
一、SVN安装
1、安装包
$ sudo apt-get install subversion
$ sudo apt-get install libapache2-svn
libapache2-svn用于http访问
2、服务器配置
(1)、添加svn管理用户及subversion组
创建SVN仓库:许多位置都可以放置Subversion文件仓库,其中两个最常用的是:/usr/local/svn以及/home/svn。为了在下面的描述中简单明了,我们假设您的Subversion文件仓库放在/home/svn,并且你的项目名称是简单的“project”,同样的,也有许多常用的方式设置文件仓库的访问权限。通常的情况下,您应该创建一个名为“Subversion”的用户组,该组是SVN仓库所在的目录的拥有者。
sudo addgroup subversion
sudo usermod -G subversion -a www-data
sudo usermod -G subversion -a yourusername
(将您自己和“www-data”(Apache 用户)加入组成员中)或者直接使用命令编辑组文件"sudo vi /etc/group",增加组和成员(不推荐):$ sudo vi /etc/group
结果看上去,像这样。
$cat /etc/group|grep subversion
subversion:x:1001:www-data,exp
(2)、创建项目目录$ sudo mkdir /home/svn
$ cd /home/svn
$ sudo mkdir project
$ sudo chown -R www-data:subversion project
$ sudo chown -R root:subversion myproject
(3)、创建SVN文件仓库$ sudo svnadmin create /home/svn/project
赋予组成员对所有新加入文件仓库的文件拥有相应的权限:
$ sudo chmod -R g+rws project
如果上面这个命令在创建SVN文件仓库之前运行,你可能在后续Checkin的时候遇到如下错误:
Can't open '/home/svn/myproject/db/txn-current-lock': Permission denied
查看txn-current-lock文件的权限和用户以及组信息,应该类似于:
$ls -l /home/svn/project/db/txn-current-lock
-rw-rwSr-- 1 root subversion 0 2009-06-18 15:33 txn-current-lock
除了权限以外,用户及其组如果不对,则仍然会遇到上述问题,可以再次运行命令:
$ sudo chown -R www-data:subversion myproject
3、访问方式
模式
访问方法
file:///
直接访问本地硬盘上文件仓库
http://
通过 WebDAV协议访问支持Subversion的Apache2 Web 服务器
https://
类似 http://,支持SSL加密
svn://
通过自带协议访问 svnserve服务器
svn+ssh://
类似 svn://,支持通过SSH通道
直接访问文件仓库(file://)
这是所有访问方式中最简单的。它不需要事先运行任何SVN服务。这种访问方式用于访问本地的SVN文件仓库。语法是:
$ svn co file:///home/svn/project
或者$ svn co file://localhost/home/svn/project
注意:如果您并不确定主机的名称,您必须使用三个斜杠(///),而如果您指定了主机的名称,则您必须使用两个斜杠(//).对文件仓库的访问权限基于文件系统的权限。如果该用户具有读/写权限,那么他/她就可以签出/提交修改。如果您像前面我们说描述的那样设置了相应的组,您可以简单的将一个用户添加到“subversion”组中以使其具有签出和提交的权限。通过 WebDAV 协议访问(http://)要通过 WebDAV 协议访问 SVN 文件仓库,您必须配置您的 Apache 2 Web 服务器。您必须加入下面的代码片段到您的 /etc/apache2/mods-available/dav_svn.conf中:<Location /svn/project>
DAV svn
SVNPath /home/svn/project
AuthType Basic
AuthName "myproject subversion repository"
AuthUserFile /home/svn/project/conf/passwd
#<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
#</LimitExcept>
</Location>
如果需要用户每次登录时都进行用户密码验证,请将<LimitExcept GET PROPFIND OPTIONS REPORT>与</LimitExcept>两行注释掉。最后一步就是创建访问用户了,建议将用户名密码文件存放在当前版本仓库下conf文件夹下,这样版本仓库多的时候无至于太乱。
因为conf文件夹下已经存在passwd文件了,所以直接添加用户: sudo htpasswd -c /home/svn/project/conf/passwd user_namehtpasswd工具的安装方法如下:
sudo apt-get install apache2-utils
它会提示您输入密码,当您输入了密码,该用户就建立了。“-c”选项表示创建新的/home/svn/project/conf/passwd文件,所以user_name所指的用户将是文件中唯一的用户。如果要添加其他用户,则去掉“-c”选项即可:sudo htpasswd /home/svn/project/conf/passwd other_user_name
打开/home/svn/project/conf/passwd这个文件,会开到形如如下形式的文本: user_name:WEd.83H.gealA创建以后,再次需要往别的版本仓库添加这个用户,直接把这一行复制过去就可以了。
当您添加了上面的内容,您必须重新起动 Apache 2 Web 服务器,请输入下面的命令:
sudo /etc/init.d/apache2 restart
您可以通过下面的命令来访问文件仓库:$ svn co http://hostname/svn/project project --username user_name
它会提示您输入密码。您必须输入您使用 htpasswd 设置的密码。当通过验证,项目的文件就被签出了。
4、访问权限设置
修改/home/svn/project目录下:
svnserve.conf、passwd、authz三个文件,行最前端不允许有空格
//--
编辑svnserve.conf文件,把如下两行取消注释
password-db= password
authz-db = authz
//补充说明
#[general]
anon-access = read
auth-access = write
password-db= passwd
其中 anon-access和auth-access分别为匿名和有权限用户的权限,默认给匿名用户只读的权限,但如果想拒绝匿
名用户的访问,只需把read改成none就能达到目的。
现在,您可以在“passwd”文件中维护用户清单。编辑同一目录下“passwd”文件,添加新用户。//--
[users]
mirze= 123456
test1 = 123456
test2 = 123456
//--
编辑同一目录下authz如下
[groups]
admin= mirze,test1
test =test2
[/]
@admin=rw
*=r
这里设置了三个用户mirze,test1,test2密码都是123456
其中mirze和test1属于admin组,有读和写的权限,test2属于test组只有读的权限
7.启动SVN服务
svnserve-d -r /home/svn
描述说明:
-d表示svnserver以“守护”进程模式运行
-r指定文件系统的根位置(版本库的根目录),这样客户端不用输入全路径,就可以访问版本库
如:svn://192.168.0.101/project
这时SVN安装就完成了.
局域网访问方式:
例如:svncheckout svn://192.168.0.101/project--username mirze --password123456 /var/www/project
通过HTTP来访问SVN服务器密码是明文保存的,通过具有安全套接字(SSL)的WebDAV协议访问(https://),必须为Apache2 Web服务器设置数字证书.
再次创建项目步骤:
1.$sudo mkdir project
$sudo chown -R www-data:subversion project
2.创建SVN文件仓库
$sudo svnadmin create /home/svn/project
赋予组成员对所有新加入文件仓库的文件拥有相应的权限:
$sudo chmod -R g+rws project
3.要通过 WebDAV协议访问 SVN文件仓库,您必须配置您的 Apache2 Web 服务器。
您必须加入下面的代码片段到您的/etc/apache2/mods-available/dav_svn.con中:
<Location /svn/project>
DAV svn
SVNPath /home/svn/project
AuthType Basic
AuthName "myproject subversion repository"
AuthUserFile /home/svn/project/conf/passwd
#<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
#</LimitExcept>
</Location>
4.当您添加了上面的内容,您必须重新起动Apache 2 Web服务器,请输入下面的命令:
$sudo /etc/init.d/apache2 restar