1. 软件环境
1. 版本
软件 版本 说明
Linux redhat 2.6.9-5.EL
APR APR-1.2.12 Apache可移植运行库
APR-util APR-util-1.2.12
Apache httpd-2.2.6.tar.gz
Subversion subversion-1.4.5.tar.gz
Subversion-deps subversion-deps-1.4.5.tar.gz svn编译时需要的程序
2. 下载
* Subversion相关软件下载 http://www.tigris.org/servlets/NewsItemView?newsItemID=1940
* Apache相关软件下载: http://httpd.apache.org/download.cgi
安装(完全按以下命令配置即可)
安装APR-1.2.12 和 APR-util-1.2.12
1.
# tar zxvf apr-1.2.12.tar.gz
# cd apr-1.2.12
# ./configure
# make
# make install
2.
# tar zxvf apr-util-1.2.12.tar.gz
# cd apr-util-1.2.12
# . /configure --with-apr=/usr/local/apr
# make
# make install
安装apache 2.2.6
1. 解包 httpd-2.2.6.tar.gz
# tar xzvf httpd-2.2.6.tar.gz
# cd httpd-2.2.6
2. 生成配置文件
# ./configure --prefix=/usr/local/apache2 --enable-dav --enable-modules=so -- enable-dav-fs --enable-maintainer-mode --enable-rewrite --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config
3. 生成 make 文件,并安装
# make
# make install
4. 编辑配置文件 httpd.conf
# vi /usr/local/apache2/conf/httpd.conf
修改内容:
Listen localhost:80
ServerName localhost:80
保存退出
* apache的默认端口为 80
* Svn的默认端口为 3690
5. 启动 Apache 服务:
# /usr/local/apache2/bin/apachectl start
6. 浏览网站:
用浏览器查看http://localhost/, 得到 it works ,说明 apache 已经配置成功了。
* 需要将 linux 的防火墙关闭,否则其他 IP 地址无法访问
* 关闭防火墙命令: service iptables stop
7. 停止 Apache 服务:
# /usr/local/apache2/bin/apachectl stop
8. 设置启动系统后,自启动 Apache 服务
编辑etc/rc.d/rc.local
# vi /etc/rc.d/rc.local
在最后加上一句:
/usr/local/apache2/bin/apachectl start
Subversion1.3.2安装以及配置
1.Subrsion安装
# tar xvzf Subversion-1.3.2.tar.gz
# cd Subversion-1.3.2
# ./configure --with-apxs=/usr/local/apache2/bin/apxs
--with-ssl --with-zlib
--prefix=/usr/local/subversion
# make
# make install
查看subversion两个动态库有没有安装成功
# vi /usr/local/apache2/conf/httpd.conf
看到下面两个模块说明安装成功
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.s o
FAQ: configure可能存在的问题及解决方法
1. configure: error: could not find library containing RSA_new
解决方法: # yum install openssl-devel
2. configure: error: no XML parser was found: expat or libxml 2.x required
解决方法: # yum install expat-devel
3. configure: error: --with-zlib requires an argument.
解决方法: 去掉此选项 。
* httpd: Syntax error on line 54 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_dav_svn.so into server: /usr/local/apache2/modules/mod_dav_svn.so: undefined symbol: dav_register_provider
answer: make sure you have your apache compiled with the dav options:
--enable-dav --enable-dav-fs --enable-dav-lock
2.Subversion的建立与使用仓库使用
//创建库文件所在的目录 (svnroot用户进行下面的操作 )
$mkdir /home/svnroot/repos
在这里,我们假设设置/home/svnroot/repos目录下的svn1和svn2两个目录为仓库。
用svnroot用户运行(如果用root用户,则在运行完这两个程序之后要将这两个目录的所有者权限更改为用户 svnroot 命令是:chown –R svnroot : svnroot /home/svnroot/repos)
$/usr/local/subversion/svnadmin create /home/svnroot/repos/svn1
$ /usr/local /subversion/svnadmin create / home/svnroot /repos/svn2
这样,我们使用的时候,就可以向里面提交文件。
仓库的使用,必须先把服务搭建起来才行。我们等后面的服务器配置后再讲。
3、Subversion服务器的搭建 ( 配置apache支持svn )
我们使用与Apache模块的方式运行。
首先,把我们需要的SVN模块加载上,修改Apache的配置文件httpd.conf:
# vi /usr/local/apache2/conf/httpd.conf
加入下面2 行: ( 默认 Subrsion 安装成功后会自动加上 )
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
然后配置仓库:
# vi /usr/local/apache2/conf/httpd.conf
加入下面配置信息:
<Location /svn>
DAV svn
# ( 此处配置你的版本库根目录的父目录 )
SVNParentPath /usr/local/svnroot/repos
AuthType Basic
#( 此处字符串内容修改为提示对话框标题 )
AuthName "Subversion repository"
# ( 此处修改为访问版本库用户的文件,用apache 的 htpasswd 命令生成 )
AuthUserFile /usr/local/svnroot/repos /svn-auth-file
# ( 此处修改为访问版本库权限的文件 )
AuthzSVNAccessFile /usr/local/svnroot/repos /svn-access-file
Require valid-user </Location>
然后, 创建svn用户( -m:MD5加密 – c:创建新的文件,第一次创建用户时需要 ) :
$/usr/local/apache2/bin/ htpasswd -cm /etc/svn-auth-file dl1
然后,会提示输入密码,这里就加入了一个用户了。然后再加一个用户:
$ /usr/local/apache2/bin / htpasswd -m /etc/svn-auth-file dl2
$ /usr/local/apache2/bin / htpasswd -m /etc/svn-auth-file dl3
之后 , 创建svn用户访问权限 文件 ( svn-access-file )
$vi svn-access-file
# 群组设置
[groups]
# 群组里的成员 设置
svn1-developers = dl1,dl2,dl3
svn2-developers = dl2,dl3
# svn1仓库根目录下的访问权限
[svn1:/]
# 如果在前面加上@符号,则表示这是个群组权限设置
@svn1-developers = rw
# svn2仓库根目录下的访问权限
[svn2:/]
# dl1用户在svn2仓库根目录下只有读权限
dl1 = r
# dl2用户在svn2仓库根目录下无任何权限
dl2 =
# 这个表示在所有仓库的根目录下
[/]
# 这个表示对所有的用户都具有读权限
* = r
最后测试( 需要 重启Apache )
通过 下面url请求测试:
http://localhost/ svn /svn1
http://localhost/ svn /svn2
这两个URL来访问仓库了,当然,要受权限的限制,必须是合法用户才能访问且具有相应的权限
客户端的使用,可以通过许多客户端GUI软件来用。比如TortoiseSVN就很好用。
官方网址: http://tortoisesvn.tigris.org/