Ubuntu SVN服务器的搭建与配置
一、 安装
sudo apt-get install subversion
sudo apt-get install libapache2-svn
sudo apt-get install apache2
二、 增加组
sudo groupadd svn //增加组
sudo usermod–G svn –a admin // 把用户admin添加到svn组中 (svn为自己的用户)
sudo usermod –G svn –a www-data // 把apache用户添加到svn组中
三、 创建版本库
由于/home 分配的空间较大(1T),建议将版本库建立在/home 下。
sudo mkdir /home/svn
sudo chown –R root:svn svn
sudo chmod –R g+rws svn
reboot
cd /home/svn
文件夹建好了以后,我们就可以在svn目录下面创建仓库了,当然也可以在它的子目录下创建仓库,为了便于项目的管理,建议在svn的子目录下创建仓库。
例如:有“Embed”项目,项目中有 软件 和 硬件 两个分支,那么我们可以在svn下建立 embed目录: mkdir embed (注意,这个时候不需要用sudo 了)。然后在 embed 目录下再分别创建 solftware 和 hardware两个仓库。
cd embed
svnadmin create /home/svn/embed/solftware
cd solftware
仓库创建好后,会自动生成一些文件和文件夹
其中 conf 文件夹下存放的是一些与控制访问有关的配置文件
四、 SVN 权限管理
A、需要用户名、密码登录
1、 修改 svnserve.conf
svnserve.conf是基础的配置,用于控制访问的权限将[general]前的注释与空格去掉,一定要去掉空格,否则到时客户端登录会出现"Section header must start in the first column的”的告警!最后此文件内容至少包含以下内容:
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
其中,anon-access = none禁止匿名登录,auth-access = write为署名登录获得写权限,password-db = passwd指定用户配置文件,authz-db = authz指定权限配置文件
2、 修改passwd
自动生成的passwd 文件格式如下:
[users]
# harry = harryssecret
# sally = sallyssecret
Harry 表示 用户名,harryssecret 为密码。这种方式是明文方式,也就是说如果要添加访问的用户的话只需按照格式添加用户名密码就可以。
例如添加 zhangsan 用户, 并且密码为123456,那么只需在后面添加如下内容即可:
zhangsan = 123456
但是,这种方法并不安全,下面介绍一种文件加密的方式设置登录的用户名和密码。
1、备份原始的passwd 文件: cp passwd passwd-bak
2、创建新的加密的passwd文件, 并且添加用户名和密码:
htpasswd -cm passwd zhangsan
如图所示,输入密码后登录用户的用户名和密码就创建好了。下面我们来看一下passwd 文件里面的内容是什么。
现在显示的内容就不是之前的明文了,说明达到了加密的效果。
如果需要添加另外离歌用户名和密码,可以执行一下命令:
htpasswd passwd zhangsan
3、修改authz
修改完登录方式,增加登录的用户名和密码后,下面我们将进一步设置仓库中文件夹的访问权限。
假设在passwd中设置了3个用户,分别是 zhangsan、 lisi、 wangwu,在仓库solftware下有三个目录,分别是: pro1, pro2, pro3 。那么其访问权限可设置如下方式。
[groups]
everyone = zhangsan, lisi, wangwu
group1 = zhangsan
group2 = lisi
group3 = wangwu
[solftware:/]
* = r 说明:/svn/embed/solftware/z 对所有用户都只有只读权限
也可写成 @everyone = r
[solftware:/pro1]
@group1 = rw 说明:zhangsan 可读可写
也可写成 zhangsan = rw
@group2 = r 说明:lisi 只读
也可写成 lisi = r
@group2 = r 说明:wangwu 只读
也可写成 wangwu = r
注意:如果对文件夹不做设置的话,默认为没有访问权限
4、修改 sudo vi /etc/apache2/mods-enable/dav_svn.conf
<Location /svn/embed/solftware >
DAV svn
SVNPath /home/svn/embed/solftware
AuthType Basic
AuthzSVNAccessFile /home/svn/embed/solft/conf/authz
AuthName "welcome to subversion repository"
AuthUserFile /home/svn/embed/solftware/passwd
#<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
#</LimitExcept>
</Location>
注意:
1、每新建一个仓库的时候,都在该文件下添加类似上面的代码,只需把红色部分内容改成新建仓库的路径即可。
2、每新建一个仓库的时候都执行以下命令
sudo vi dav_svn.conf
cd /home/svn/embed
sudo chmod -R g+rws xxx(版本库)
3:sudo /etc/init.d/apache2 restart
B、设置匿名访问
有时候我们需要设置一些公共目录,使得所有人都能够进行访问,使用上面的设置方法当然也可以实现,只需要把该目录设置为所有的人都可读可写即可,但是,如果这样做的话就显得很麻烦了,假如一个公司有100人的话,那咱们还得设置100个用户,这样做的话就显得有些多余了。下面,咱们来看看简单的设置方法。
1、创建新的版本库(hard)
2、执行下面命令 sudo chmod –R g+rws hard
3、在/etc/apache/mods-enable/dav_svn.conf 增加一下代码即可
<Location /embed/hard>
DAV svn
SVNPath /home/svn/embed/hard
AuthType Basic
Authname "polarbear"
</Location>
C、如何在版本库中创建文件夹
首先,如果我们只是简单的在版本库中执行mkdir命令创建文件夹的话,在客户端上checkout的时候是不显示新创建的文件夹的。可是,假如这个版本库(hard)中需要有三个文件夹,比如分别为:src、lib、usr,而且我们又希望用户在客户端checkout的时候能够看到相应的文件夹,那么这个时候该怎么办呢?执行以下命令即可:
1、svnadmin create hard
2、sudo chmod –R g+rws hard
3、cd hard
4、mkdir src lib usr
5、svn import –m “” src http://192.168.86/hard/src
6、svn import –m “” lib http://192.168.86/hard/src
7、svn import –m “” usr http://192.168.86/hard/src
第 4、5、6、7步骤,还可以用下面的方法实现
Svn mkdir –m “” usr http://192.168.86/hard/src
svn mkdir –m “” lib http://192.168.86/hard/lib
svn mkdir –m “” lib http://192.168.86/hard/usr
双引号内可以为空,也可以填入对文件夹的说明。
注意:如果有用户反映提交的时候出现类似“Can't open file 'D:\Reositories\Doc\db\txn-current-lock':拒绝访问。”这样的错误提示,则很可能是在创建仓库后没有执行sudo chmod –R g+rws hard命令。