目 录
1 概述... 3
2 安装Ubuntu 8.10服务器... 3
3 安装Apache服务器... 3
4 创建SVN服务器... 3
4.1 安装SVN.. 3
4.2 增加组... 4
4.3 创建SVN仓库... 4
4.4 配置Apache服务器... 4
5 配置SSL. 6
6 远程修改svn用户口令... 10
6.1 修改Apache2的配置文件... 10
6.2 安装mod_perl默认包... 10
6.3 相关配置... 10
6.4 获得修改口令的Perl脚本... 11
6.5 修改脚本执行权限... 11
7 设置SVN的权限... 12
7.1 修改Apache的配置... 12
7.2 认证文件的配置... 13
8 参考文献... 14
附录A:远程修改SVN用户口令工具使用方法... 14
附录B:Ubuntu 8.10修改IP地址... 15
附录C:Ubuntu 下配置SSH服务... 15
1 概述
本文详细描述了Ubuntu 环境下,SVN Apache SSL架构的SVN服务器的搭建过程。通过https来访问SVN服务器,采用基于Apache的用户认证管理。用户的权限使用authz配置。
2 安装Ubuntu 8.10服务器
可以是Ubuntu 8.10 Server或者是Desktop。安装过程中创建一个用户名为administrator的系统帐户,作为本服务器日常管理帐户。另外,为了方便后续的 说明,假设服务器的ip地址为192.168.19.3。
安装完成后,需要先运行更新管理器,以获得最新的源列表。
3 安装Apache服务器
在新立得软件包管理器里面,搜索apache2并选择安装 Apache2,libapache2-svn(apt-get install apache2 && apt-get install libapache2-svn)。安装完成后,确认能通过http访问http://192.168.19.3。正常情况下,会得到如下界 面:
说明apache已经正常工作了。
4 创建SVN服务器
4.1 安装SVN
在新立得软件包管理器里面,搜索subversion,并选择安装 subversion,subversion-tools。安装好之后,进入下一步。
4.2 增加组
方法如下:
l 在 Ubuntu 菜单上选择“系统->系统管理->用户和组”;
l 切换到“组”标签;
l 点击“添加组”按钮;
l 组名为“subversion”;
l 将您自己(administrator)和“www-data”(Apache 用户)加入组成员中;
l 点击“OK”以确认修改,关闭该程序。
或者直接使用命令,增加组和成员:
sudo addgroup subversion
sudo usermod -G subversion -a www-data administrator
当然,修改组也可以直接修改组文件: sudo vi /etc/group。
然后需要注销(我都是直接重新启动)再登录以便能够真正成为 subversion 组的一员。
4.3 创建SVN仓库
现在执行下面的命令
# cd /home
# sudo mkdir svn
#/usr/local/svn# sudo chown -R www-data:subversion svn
#/usr/local/svn# sudo chmod g+rwx svn -R
最后的一条命令赋予组成员对所有新加入文件仓库的文件拥有相应的权限。
下面的命令用于创建 SVN 文件仓库:
#sudo svnadmin create /home/svn
4.4 配置Apache服务器
先备份一下Apache2的配置文件,执行如下命令:
#/usr/local/svn# sudo cp -R /etc/apache2 /etc/apache2_bak
通过 WebDAV 协议访问 SVN 文件仓库,您必须配置您的 Apache 2 Web 服务器。您必须加入下面的代码片段到您的 /etc/apache2/mods-available/dav_svn.conf中:(加在文件最后面即可)
<Location /svn >
DAV svn
SVNPath /home/svn
AuthType Basic
AuthName "welcome to subversion repository"
AuthUserFile /etc/subversion/passwd
#<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
#</LimitExcept>
</Location>
如果需要用户每次登录时都进行用户密码验证,请将<LimitExcept GET PROPFIND OPTIONS REPORT>与</LimitExcept>两行注释掉。
当您添加了上面的内容,您必须重新启动 Apache 2 Web 服务器,请输入下面的命令:
sudo /etc/init.d/apache2 restart
接下来,您需要创建 /etc/subversion/passwd 文件,该文件包含了用户授权的详细信息。要添加用户,您可以执行下面的命令:
sudo htpasswd -c /etc/subversion/passwd superman
它会提示您输入密码,当您输入了密码,该用户就建立了。您可以通过下面的命令来访 问文件仓库:
你还可以继续创建其他用户,但是不能再用-c选项了,因为-c选项表示创建一个新 的用户授权文件,一旦选用,原有的授权文件就被覆盖了。
sudo htpasswd /etc/subversion/passwd user_name
此时,应该就可以通过web方式访问svn服务器了。在浏览器的地址栏输入 http://192.168.19.3/svn/会弹出用户验证的窗口:
输入正确的用户名和口令后,就能看到如下界面:
7 设置SVN的权限
7.1 修改Apache的配置
为了实现细粒度的权限控制,可以通过修改svn的仓库目录下的 conf/authz文件来实现。在此之前,需要告诉Apache,使用该文件
sudo vi /etc/apache2/mods-available/dav_svn.conf
修改后如下,其中蓝色字体为新添加的内容:
<Location /svn >
DAV svn
SVNPath /home/svn
AuthType Basic
AuthzSVNAccessFile /home/svn/conf/authz
AuthName "welcome to subversion repository"
AuthUserFile /etc/subversion/passwd
#<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
#</LimitExcept>
</Location>
7.2 认证文件的配置
sudo vi /home/svn/conf/authz
文件内容类似如下:
[groups]
admin = admin
dev1 = jack, kate
dev2 = zbh2342, yingjianhh45, tantt, arei22
docs = bob, jane, mike
training = zak
# Default access rule for ALL repositories
# Everyone can read, admins can write, Dan German is excluded.
[/]
* = r
@admin = rw
dangerman =
# Allow developers complete access to their project repos
[project:/]
* = r /其他用户只有读权限
@admin = rw /admin,dev1这个两个组有读写权限
@dev1 = rw
对子项目的控制
[project:/DDWap] /对project/DDWap子目录有读写权限,下面类似。
@dev2 = rw
[project:/DDAdmin]
@dev2 = rw
[project:/DDSync]
@dev2 = rw
[project:/DDWeb]
@dev2 = rw
[project:/DDWeb]
@dev2 = rw
[project:/docs]
@dev2 = rw
[project:/thirdparty]
@dev2 = rw
通过实践,感觉Apache的权限配置很简单,但不是太方便,如果要针对子目录设 置不同的权限,则需要将每个目录的权限都显式的指定。