日期:2014-05-16  浏览次数:20621 次

Linux中搭建Apache+Subversion版本控制

参考:

http://svn.apache.org/repos/asf/subversion/trunk/INSTALL

http://svnbook.red-bean.com/

?

1. 需要下载两个tar包?httpd-2.2.19.tar.gz, ?subversion-1.5.9.tar.gz

?

2. 新建一个专门管理svn的linux用户 svnroot. 以后跟svn有关的权限,配置等操作全部由这个用户来完成。

?

3. 编译安装apache服务器

## 解压apache2安装包
$ tar xvzf httpd-2.2.19.tar.gz
## 进入解压后的目录
# cd httpd-2.2.19

## 配置apache安装,前两个参数是必须要加的,你还可以根据您的需要添加其他的参数。
## 后面的参数制定你要把apache安装哪里,我将其安装在/home/svnroot/apache2
# ./configure --enable-dav --enable-so --prefix=/home/svnroot/apache2

## 编译并安装
# make && make install

## 启动apache服务
# cd /home/svnroot/apache2/bin
# ./apachectl start
## 打开浏览器http://localhost/如果有测试页"It works!"出现则证明已经安装成功。

?

?

4. 安装Subversion

?

## 解压SubVersion安装包
$ tar xvzf subversion-1.5.9.tar.gz
## 进入解压后的目录
$ cd subversion-1.5.9

## 配置subversion安装, 安装到/home/svnroot/subversion
$./configure --prefix=/home/svnroot/subversion --with-apxs=/home/svnroot/apache2/bin/apxs --with-apr=/home/svnroot/apache2 --with-apr-util=/home/svnroot/apache2 --with-ssl --enable-maintainer-mode

## 安装
$ make clean && make && make install

## 验证安装
$ svn --version
svn, version 1.5.9 (r1041577)
   compiled Jun 17 2011, 18:18:53

## 创建库文件所在的目录
$ mkdir /home/svnroot/repositories

## 创建仓库"test"
# svnadmin create /home/svnroot/repositories/test
# cd /home/svnroot/repositories/test
## 看看是不是多了些文件,如果是则说明Subversion安装成功了
# ls –l
?

?

5. 配置Apache

?

## 配置httpd.conf
$ vi /home/svnroot/apache2/conf/httpd.conf 
   ## 在最下面添加 
   <Location /svn/repos> 
   DAV svn 
   SVNParentPath /home/svnroot/repositories/ ## svn父目录 
   AuthzSVNAccessFile /home/svnroot/repositories/authz ## 权限配置文件 
   AuthType Basic ## 连接类型设置 
   AuthName "Subversion Authorization" ## 连接框提示 
   AuthUserFile /home/svnroot/repositories/authpasswd ## 用户配置文件 
   Require valid-user ## 采用何种认证 
   </Location>
   ## 其中authz文件可以从test版本库中拷贝到repositories目录,并加入一个用户
   ## 其中authpasswd是通过"htpasswd [–c] /home/svnroot/repositories/authpasswd username"来创建的 
   ## "Require valid-user"告诉apache在authpasswd中所有的用户都可以访问。
   ## 如果没有它,则只能第一个用户可以访问新建库 
   ## 顺便把你的端口号也改一下,比如Listen 8080,要不然不能以非root用户启动默认的80端口

##重启apache,验证配置
$ ./home/svnroot/apache2/bin/apachectl restart 
## 打开浏览器访问http://localhost:8080/svn/repos/test/,如果有东西显示就说明成功。
?

?

6. 配置目录权限

?

?

## 设置apache和subversion不允许其他用户访问
$ chmod o-rwx /home/svnroot/repositories
$ chmod o-rwx /home/svnroot/subversion
$ chmod o-rwx /home/svnroot/apache2
?

?

?

7. 其他问题

?

1) 编译subversion时出现少expat库

解决:下载expat-2.0.1.tar.gz安装皆可

http://sourceforge.net/projects/expat/

?

2) 安装subversion时,make install时出现

error while loading shared libraries: libexpat.so.1: cannot open shared object file: No such file or directory

意思是找不到libexpat.so.1这个文件

运行 whereis libexpat.so.1

libexpat.so: /lib/libexpat.so.0 /usr/local/lib/libexpat.so /usr/local/lib/libexpat.so.1

解决:vi ? /etc/ld.so.conf

加入 /usr/local/lib/ 保存退出

运行ldconfig

?