1、安装nginx(略)









2、安装apache、apache模块包、subversion



yum -y install httpd subversion mod_dav_svn









3、建立版本库主目录:



mkdir -p /data/svndata
chown -R apache.apache/data/svndata








4、编写一个创建svn库的脚本



#!/bin/sh
#$0:svncreate.sh
if [ $# -ne 1 ]; then
echo “Usage: $0 repository_name”
exit 1
fi
sudo svnadmin create --fs-type fsfs /data/svndata/${1}
sudo chown -R apache:apache /data/svndata/${1}
sudo chmod -R g+w /data/svndata/${1}
sudo chmod g+s /data/svndata/${1}/db


注:不指定--fs-type默认也是fsfs







5、创建一个测试库并导入数据



创建
 
        
/shell/svncreate.sh svn-shopex
 
          
        
导入数据
 
        
svn import /data/webroot/cachebbsfile:///data/svndata/svn-shopex








6、apache配置



vim /etc/httpd/conf.d/subversion.conf
 
        
<Location /svn>
DAV svn
SVNListParentPath off
SVNParentPath "/data/svndata/"
AuthType Basic
AuthName "Subversion Authentication!"
AuthzSVNAccessFile /data/svndata/authz
AuthUserFile /data/svndata/passwd
Require valid-user
SVNIndexXSLT "/svnindex.xsl"
</Location>



注:

/data/svndata/authz 所有库用户的权限管理文件,无需单独配置每个库的conf下的文件,无需启动svn进程。

/data/svndata/passwd 用户密码管理文件(由htpasswd生成)




注意事项:



a、修改监听端口



b、确定已加载svn模块:

[root@centos-6 svndata]# httpd -M | grep svn
 
        
     dav_svn_module (shared)
 
        
     authz_svn_module (shared)
 
        
    Syntax OK



c、SVNIndexXSLT "/svnindex.xsl" 界面美观设置,可选。如果不使用代理,直接放到svndata主目录中,即可;使用nginx代理,只需放到nginx站点目录中。



http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk/contrib/svnindex/


d、不管是使用乌龟客户端还是WEB访问,都会产生大量日志,可以考虑关闭日志。



e、本次使用的是默认站点,如果有其它站点,可以把以上配置单独放到某个站点配置中






7、生成认证文件



htpasswd -n sndapk >>/data/svndata/passwd




   ......







8、nginx配置



配置站点:



server {
    listen 80;
    server_name test.cn;
    location ~ \.(ico|xsl|css)$ {
        root /data/webroot/svnhtml;
    }
    location /svn {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8080/svn/;
    }
}




下载界面资源文件:


cd /data/webroot/svnhtml
wget -L -r -np --user guest --password '' http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk/contrib/svnindex/


注意事项:



a、nginx默认限制上传文件不能大于1M,如果大于1M,会产生错误:”413 Request Entity Too Large“,解决:



   在http上下文中添加行并重启服务:client_max_body_size 10m;









9、权限配置



vim /data/svndata/authz
 
         
        
[groups]
sa = sndapk,sndapk3,sndapk5
devel = sndapk2,sndapk4
                                                                                                                                                                         
[svna:/]
@sa = rw
* =
                                                                                                                                                                         
[svn-shopex:/]
@sa = rw
* =
#[/] #如果单独对库指定了权限会覆盖全局的权限配置
#* = r



(完成)






========================================================

以下是源码安装apache、subversion




源码安装apr apr-util
/usr/local/apr-1.5.0
/usr/local/apr-util-1.5.3
apache安装:
./configure \
--prefix=/usr/local/apache-2.2.26 \
--enable-deflate \
--enable-headers \
--enable-so \
--enable-rewrite \
--enable-cgi \
--enable-file-cache \
--enable-cache \
--enable-disk-cache \
--enable-mem-cache \
--enable-dav \
--with-apr=/usr/local/apr-1.5.0/bin/apr-1-config \
--with-apr-util=/usr/local/apr-util-1.5.3/bin/apu-1-config
make && make install
subversion安装:
./configure \
--prefix=/usr/local/svn-1.7.14 \
--with-apxs=/usr/local/apache-2.2.26/bin/apxs \
--with-apr=/usr/local/apr-1.5.0/bin/apr-1-config \
--with-apr-util=/usr/local/apr-util-1.5.3/bin/apu-1-config \
--with-zlib \
--with-openssl \
--without-berkeley-db
问题:
不实别rpm包安装的apr apr-util
解决:源码安装apr apr-util,并手动指定
configure: error: Subversion requires SQLite
解决:sqlite官网下载最新包,然后拷贝sqllite.c到指定subversion源码目录中,安装1.8.5版本的subversion,提示 sqlite太旧,安装1.7.14解决。
#配置部分同上




转载于:https://blog.51cto.com/sndapk/1347771