在Ubuntu上搭建svn服务器

基本按照”参考文章1“做就能搭好了,下面红色部分是我注明的可能出错的地方

采用apache+svn,http访问方式。

先确定安装了apache,没有安装则用以下命令:

 
 
  1. sudo apt-get install apache2

然后安装subversion及svn-apache连接库:

 
 
  1. sudo apt-get install subversion
  2. sudo apt-get install libapache2-svn

增加svn用户组,用于管理svn,并加入到www-data的apache组:

 

 
 
  1. sudo addgroup subversion
  2. sudo usermod -G subversion -a www-data

然后可以创建svn项目仓库了:

 
 
  1. # 一般可以将项目仓库建立到/home/svn目录
  2. # 假设项目名为myproject,先建立空目录
  3. $ sudo mkdir /home/svn
  4. $ cd /home/svn
  5. $ sudo mkdir myproject
  6. $ sudo chown -R root:subversion myproject
  7.  
  8. #创建为svn项目,使用以下命令
  9. $ sudo svnadmin create /home/svn/myproject
  10. # 然后才赋予组成员对所有新加入文件仓库的文件拥有相应的权限:
  11. # 如果命令顺序搞错,可能会报错,请参照官方wiki
  12. $ sudo chmod -R g+rws myproject

最后是配置apache,用http协议访问svn服务:

 
 
  1. # 在安装了libapache2-svn时会自动生成该文件
  2. $ sudo vi /etc/apache2/mods-available/dav_svn.conf

编辑dav_svn.conf配置文件,内有注释,可以去掉前面的#使语句生效,最后内容大概如下即可:

 
 
  1. <Location /svn> #/svn表示http://hostname/svn/myproject
  2. DAV svn
  3. SVNParentPath /home/svn #配置仓库父目录
  4. AuthType Basic
  5. AuthName "ToFishes Project Svn"
  6. AuthUserFile /etc/subversion/passwd #svn用户文件
  7. AuthzSVNAccessFile /etc/subversion/authz #授权访问文件
  8. Require valid-user
  9. </Location>

svn用户文件/etc/subversion/passwd 和 授权访问文件/etc/subversion/authz是不存在的,需要手动创建。

svn用户文件可以通过命令创建:

 
 
  1. #首次创建需要加-c选项,同时可以增加一个svn用户
  2. #执行该命令会提示为新用户user_name设置密码
  3. sudo htpasswd -c /etc/subversion/passwd user_name
  4.  
  5. #以后添加新用户,需要去掉-c选项,否则以前的用户就被覆灭了
  6. sudo htpasswd /etc/subversion/passwd new_name

上面这个仔细解释就是,如果你想添加三个用户,user1,user2,user3,则需要按如下方式操作

sudo htpasswd -c /etc/subversion/passwd user1

提示输入密码:(你设置一个密码)

重复密码:(重复)

ok

然后又

sudo htpasswd  /etc/subversion/passwd user2

sudo htpasswd /etc/subversion/passwd user3

sudou htpasswd-c/etc/subversion/passwd user_na

用户是可以添加了,同时需要管理授权,用于多个svn项目,划分不同的用户组:

用vi /etc/subversion/authz编辑授权文件,无文件则编辑并保存后会自动创建,无需担心。

授权文件内容格式如下:

 
 
  1. #用户组指令
  2. [groups]
  3. #格式为 组名 = 用户名1,用户名2
  4. group1 = user1, user2
  5. group2 = user1, user3
  6. #other groups...
  7. #格式为 svn项目的仓库名:对应目录
  8. [svn_repository_name:/]
  9. #设置组的权限,r=read, w=write
  10. @group1 = rw
  11. [svn_repository_name2:/web/css]
  12. @group2 = rw

上面这里对于像我这样的新手还是看的心里挺悬的,我根据自己的实际情况写入的内容是:

[groups]

group1 = user1,user2,user3

[myproject:/home/svn/myproject]

@group1 = rw

[myproject:/web/css]


改完最后重启apache :   sudo /etc/init.d/apache2 restart。这样工作就全部完成了。

其实到这里,等你重启apache的时候,还有可能会报下面这种错误:"Invalid command 'AuthzSVNAccessFile', perhaps misspelled or defined by a module not included in the server configuration "

这个时候,再执行下面两句即可了

a2enmod dav_svn

a2enmod authz_svn

其中访问地址是什么呢,只要当前服务器已经绑定了一个域名,并且在apache中启用了此域名的虚拟主机。

比如能正常访问 http://www.cssor.com/, 那么svn项目的访问地址就是 http://www.cssor.com/svn/项目名。

然后你可以去下载一个叫“Trotoise"的svn客户端软件,下载安装后,等你使用的时候又可能报另外两种错误,分别是”can't open file‘\db\txn-current-lock “和”cannot make directory ..."

前者可以通过下面这种方法解决:

#chmod –R o+rw /home/svn

后者可以通过

不清楚是怎么解决的,可以重启一下Apache试试


参考文章:

http://cssor.com/ubuntu-server-svn.html

http://blog.csdn.net/freshui/article/details/9268655

http://blog.sina.com.cn/s/blog_7139569d0100woar.html




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值