subversion的配置 Unix
安装subversion
基本命令:
$ sudo apt-get install libapache2-svn
可以安装的包:
apache2
apache2-common
apache2-mpm-prefork
apache2-utils
libapache2-svn
libapache2-mod-auth-pam
libapache2-mod-auth-sys-group
subversion
subversion-tools
创建一个名为subversion的组:groupadd subversion
将自己(eg.:user)和www-data(apapch2帐号)用户添加入subversion组,可以编辑/etc/group文件,在最后找到subversion添加入帐号名(eg:user,www-data),看上去就像这样:subversion:x:1001:www-data,exp
然后是创建subversion库,并赋予subversion组中用户有读写subversion库的权限:
$ cd /home/svn
$ sudo mkdir myproject #创建本svn库的目录
$ sudo svnadmin create /home/svn/myproject #使用svn命令,创建svn库
$ sudo chown -R root:subversion myproject #更改本目录的组
$ sudo chmod -R g+rws myproject #给本目录的组用户增加读写和递归增加新加目录的读写权限
注意上面提到的命令顺序,如果最后再执行创建库的命令(svnadmin create ....)则创建的文件没有获得组用户写的权限,这样在外部访问提交的时候会出错.
对于本机,可以直接使用file命令来访问:
#or
$ svn co file://localhost/home/svn/myproject
注意:如果您并不确定主机的名称,您必须使用三个斜杠(///),而如果您指定了主机的名称,则您必须使用两个斜杠(//).
此时对svn库的权限是基于文件系统的,只要是subversion组中的用户都可以访问本svn库。
接下来,讲述如何使用apache服务器来提供对svn库的访问
编辑文件/etc/apache2/mods-available/dav_svn.conf
增加如下的内容:
DAV svn
SVNPath /home/svn/myproject
AuthType Basic
AuthName "myproject subversion repository"
AuthUserFile /etc/subversion/passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
apache会解析url中的/svn/myproject部分,来定位svn库,当收到此请求时,会查询svn库:/home/svn/myproject,这里的认证方式是basic,对于访问要求valid-user,帐号文件在/etc/subversion/passwd中。
注意重新设置后要重启apache2:sudo /etc/init.d/apache2 restart
编辑生成帐号文件: sudo htpasswd2 -c /etc/subversion/passwd user #给user帐号创建口令
这时候可以通过浏览器来浏览svn库了
在我的设置中发现,apache2会自动绑定ipv6地址,可能会有些问题,可以强制apache绑定v4地址,在/etc/apache2/port.conf中改成:Listen [bindedip]:[port]的形式
通过https来访问svn库
首先生成一个 SSL 签名,使用命令
# apache2-ssl-certificate
这里会有一系列关于你的个人隐私的问题,回答完了,自然的签名也就生成了,然
后我们就要在 apache2 里面打开 SSL 了,现在要做的是开启 ssl 模块
# a2enmod ssl
然后,使用 apache2 的虚拟主机功能来添加 SSL 的支持,将
/etc/apache2/sites-available/default
复制一份,叫
/etc/apache2/sites-available/ssl
好啦
修改 default 文件的开头为
NameVirtualHost *:80
<VirtualHost *:80>
修改 ssl 文件的开头为
NameVirtualHost *:443
<VirtualHost *:443>
这里 443 是 SSL 的标准端口。
并在 ssl 文件中加入如下内容,在<VirtualHost></VirtualHost>内
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
保存文件后,运行命令
# a2ensite ssl
来激活这个虚拟主机
现在,修改文件
/etc/apache2/ports.conf
加上一行
Listen 443
好了,到此为止,SSL 服务器配置完成,重新启动 apache 吧。
一些问题:
可能出现 RA layer request failed svn: MKACTIVITY of 400 Bad Request 之类的错误,这可能是因为使用了代理的原因,代理不支持svn的扩展命令,see:http://subversion.tigris.org/faq.html#proxy
还有种原因,就是可能是你的客户端使用的是windowsxp,其他版本的windows我没试过,也是这样的错误,在linux下正常,解决方法不太清楚。
RA layer request failed svn: MKACTIVITY of 400 Bad Request,无论什么原因都可以用https代替http来暂时解决这样的问题。
http://www.blogjava.net/pandawang/archive/2006/09/05/67844.html