在开发中,直接使用SVN管理代码,但是对于SVN服务器的搭建,以http访问以及svn的可视化管理不太了解。所以此次尝试搭建。在搭建的过程,遇到了一些问题,在网上找了一些资源,发现有些还是跟自己遇到的不一样,所以记录下遇到的问题以及解决方法。


一、安装Linux虚拟机


安装包:

VirtualBox-4.3.6-91406-Win.exe

CentOS-6.5-x86_64-bin-DVD1to2


安装过程略,装完后,发现使用SSH(SecureCRT)连接不上,可以相互ping通,修改虚拟机网络连接方式为桥接网卡可解决.

以下安装都是在Linux虚拟机上执行


二、Apache安装


依赖安装包:

apr-1.5.0.tar.gz

apr-util-1.5.3.tar.gz

pcre-8.33.tar.gz

(注: zlib,openssl 未安装,可根据需要安装)


安装包:

httpd-2.4.7.tar.gz


#安装apr

tar -zxvf apr-1.5.0.tar.gz   
./configure --prefix=/usr/local/apr   --指定安装位置  
make && make install

#安装apr-util

tar -zxvf apr-util-1.5.3.tar.gz   
cd apr-util-1.5.3   
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr   
make && make install


#安装pcre

tar -zxvf pcre-8.33.tar.gz    
cd pcre-8.33    
./configure --prefix=/usr/local/pcre    
make && make install

#安装apache

tar -zxvf httpd-2.4.7.tar.gz  
cd httpd-2.4.7  
./configure --prefix=/usr/local/apache2 
            --with-apr=/usr/local/apr 
            --with-apr-util=/usr/local/apr-util 
            --with-pcre=/usr/local/pcre  
            --enable-module=so 
            --enable-dav 
            --enable-so   
make & make install

安装完成之后需修改配置文件

vi /usr/local/apache2/conf/httpd.conf  
#找到 User 和 Group 并修改成 User apache 和 Group apache 
#找到 ServerName 并修改成ServerName localhost:80

保存并退出


启动并测试

cd /usr/local/apache2/bin  
./apachectl start

也可在 /etc/init.d/ 编写shell脚本,这样就可以使用 service httpd start 启动了

浏览器访问IP,出现 It Works! 则安装成功。



三、安装subversion


依赖包:

apr-1.5.0.tar.gz

apr-util-1.5.3.tar.gz

sqlite-autoconf-3080100.tar.gz


安装包:

subversion-1.8.5.tar.gz


apr与apr-util已经安装。


#安装sqlite

tar -zxvf sqlite-autoconf-3080100.tar.gz   
cd sqlite-autoconf-3080100   
./configure --prefix=/usr/local/sqlite   
make && make install

   

#安装SVN

cd subversion-1.8.5   
./configure --prefix=/usr/local/svn 
        --with-apr=/usr/local/apr 
        --with-apr-util=/usr/local/apr-util  
        --with-sqlite=/usr/local/sqlite/ 
        --with-apxs=/usr/local/apache2/bin/apxs   
make && make install

配置svn环境变量

在 /etc/profile.d 中,新建 svn.sh,加入如下代码:

SVN_HOME=/usr/local/svn  
export SVN_HOME  
PATH=$PATH:$SVN_HOME/bin  
export PATH

使用 svn --version 测试是否安装成功。前提得使profile生效。


#创建一个版本库

make -p /svn/   
svnadmin create /svn/project1

#修改配置文件  

vi /svn/project1/conf/svnserve.conf  
anon-access = none  
auth-access = write  
password-db = passwd  
authz-db = authz  
realm = project1
vim /svn/project1/conf/authz  
 
[project1:/]  
test1=rw  
*=r  
[project1:/trunk]  
test2=rw  
*=r  
  
vim /svn/project1/conf/passwd  
  
[users]  
test1=123  
test2=123

关于各个参数的解释详见:http://blog.sina.com.cn/s/blog_5542414f0100vw1l.html


启动svn服务: svnserve -d -r /svn/

现在就可以使用: svn://ip/project1/trunk 进行访问了



四、整合subversion和Apache,即使用http进行访问


使用http访问需重新生成账号、密码文件,因为是密码是加密的。

使用 /usr/local/apache2/bin/htpasswd  -mc passwdfile test1

输入密码, 在当前目录下会生成一个 passwdfile文件。


在安装好的svn目录中(/usr/local/svn/libexec/)将 mod_authz_svn.so、mod_dav_svn.so 两个文件拷贝到apache目录中(/usr/local/apache2/modules/),然后修改apache的配置文件http.conf。

vim /usr/local/apache2/conf/httpd.conf  
  
#添加如下三行  
LoadModule dav_svn_module modules/mod_dav_svn.so  
LoadModule authz_svn_module modules/mod_authz_svn.so  
LoadModule dav_module modules/mod_dav.so

在网上找的资料,一般都只说要加第一二行,没第三行

  

#添加svn  

<Location /svn>  
     DAV svn  
     SVNParentPath /svn  
     SVNListParentPath on  
     AuthType Basic  
     AuthName "Welcome"  
     AuthUserFile /usr/local/apache2/bin/passwdfile  
     AuthzSVNAccessFile /svn/project1/conf/authz  
     Require valid-user  
</Location>

#此处SVNParentPath 的路径不是 /svn/project1,如果要使用这个路径,则设置SVNPath这个参数,一般使用前者,便于对多个仓库进行管理 

重启Apache,就可以通过浏览器访问代码文件了。http://IP/svn/project1


五、安装php


安装包:

php-5.6.1.tar.gz

tar -zxvf php-5.6.1.tar.gz  
cd php-5.6.1  
./configure --prefix=/usr/local/php 
            --with-apxs2=/usr/local/apache2/bin/apxs 
            --with-config-file-path=/usr/local/lib    
make & make install


六、IF.Svnamdin安装


安装包:

svnadmin-1.6.2.zip


这个解压就行了,同样也放在 /usr/local/svnadmin 下                 

chown -R apache.apache svnadmin/


七、整合Apache、php、IF.Svnadmin


主要是修改Apache的配置文件就行了

vim /usr/local/apache2/conf/httpd.conf  
  
#确保下面代码,是去掉注释的,没有的补充添加上   
<IfModule dir_module>   
DirectoryIndex index.php index.html   
</IfModule>   
AddType application/x-compress .Z   
AddType application/x-gzip .gz .tgz   
AddType application/x-httpd-php .php .phtml .php3 .inc   
#保存并退出   
  
#找到Alias添加下面代码   
Alias /svnadmin /usr/local/svnadmin  
  
#添加module  
LoadModule php5_module modules/libphp5.so  
  
#找到DocumentRoot下的Directory标签,修改成如下  
  
<Directory "/urs/local/svnadmin">

重启Apache,网页访问 http://IP/svnadmin,会出现设置页面。恭喜,大功告成。

另外,如果在网页里设置的 授权访问文件和身份验证文件 目录不一样,需要在httpd.conf中的Location中修改


来自:http://blog.csdn.net/shibushiyouwenti/article/details/39960167