美文网首页程序员我爱编程
基于apache搭建subversion服务及管理工具

基于apache搭建subversion服务及管理工具

作者: 小城大麦 | 来源:发表于2016-05-05 11:45 被阅读1045次

    理解subversion的权限管理及相关配置

    首先svn的权限管理由3个文件配置组成,一个用户及组管理(passwd),一个目录权限管理(authz),一个svnserve.conf配置,其中svnserve中指定了passwd及authz配置。创建一个仓库的时候,默认会会在仓库的conf下生成这3个文件,但通常我们需要指出多个仓库,应该建立一个统一配置目录来保存这两个文件,并在启动svnserve时指定其svnserve.conf文件。
    启动svnserve之后,即可通过svn://协议来访问仓库。
    对于http协议的svn访问(包括checkout等svn操作),目前只能基于apache来做。虽然nginx可以配置成apache的代理读取但不支持checkout等svn操作(目前了解到,这是nginx对webdav协议支持的问题),nginx目前没有模块支持svn访问(可能是我没找到)。配置完apache的访问之后即可通过http对svn进行操作。
    对于权限管理,虽然使用htpasswd可以方便的创建用户及更新用户信息,修改authz文件可以修改目录权限等设置,但是图形化的界面更好。目前比较好用的web管理工具是iF.svnadmin。具体配置可以参考本文iF.svnadmin的配置,本文使用nginx配置iF.svnadmin。

    环境准备

    #install deps
    brew install subversion
    brew install nginx
    #php-fpm
    cp /private/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
    #启动php-fpm
    php-fpm --fpm-config /usr/local/etc/php-fpm.conf  --prefix /usr/local/var
    

    Apache的svn依赖库

    使用mac默认安装的apache,且apache加载的so库在/usr/libexec/apache2下,此目录在EI Captain之后已经不能修改了。
    找到自己的svn安装目录,并复制apache需要的svn的动态库
    brew安装的一般在/usr/local/Cellar/下

    svn_libexec=/usr/local/Cellar/subversion18/1.8.13/libexec
    apache_libexec=/usr/local/libexec/apache2
    cp $svn_libexec/mod_authz_svn.so $apache_libexec/
    cp $svn_libexec/mod_authz_svn.so  $apache_libexec/
    

    创建svn仓库

    #仓库的父路径
    mkdir -p /data/www/svn_repos
    cd /data/www/svn_repos
    #创建svndata仓库
    svnadmin create svndata
    

    创建SVN服务所需的配置文件

    mkdir /data/www/svnconf
    cd /data/www/svnconf
    cp /data/www/svn_repos/svndata/conf/svnserve.conf ./
    touch passwd #用户名及密码配置(AuthUserFile)
    touch authz #目录权限配置(AuthzSVNAccessFile)
    vim /data/www/svnconf/svnserve.conf
    

    修改svnserve.conf内容如下:

    anon-access = read
    auth-access = write
    password-db = passwd
    authz-db = authz
    

    配置Apache的httpd.conf

    vim /etc/apache/httpd.conf
    #修改为88
    Listen 88
    #保证apache有权限访问文件,需调整_www用户为当前mac的用户
    User YOUR_MAC_USER
    Group YOUR_MAC_GROUP
    #添加module
    LoadModule dav_module libexec/apache2/mod_dav.so #打开注释即可
    LoadModule dav_svn_module /usr/local/libexec/apache2/mod_dav_svn.so #新加
    LoadModule authz_svn_module /usr/local/libexec/apache2/mod_authz_svn.so #新加
    

    访问路径配置(http://ip:port/svn_repos)

    <Location /svn_repos>
        DAV svn
        #多仓库的配置,配置仓库的父路径
        SVNParentPath /data/www/svn_repos
        AuthType Basic
        AuthName "svn"
        AuthUserFile /data/www/svnconf/passwd
        AuthzSVNAccessFile /data/www/svnconf/authz
        Require valid-user
    </Location>
    

    创建一个svn用户(admin用户)

    htpasswd -c /data/www/svnconf/passwd admin

    启动服务

    #启动svnserve
    svnserve -d -r /data/www/svn_repos --config-file /data/www/svnconf/svnserve.conf
    #启动apache2
    #mac可能配置了自动启动apache,
    #查看下apache进程,使用stop或restart或start命令重启
    sudo apachectl -k stop
    sudo apachectl -k restart
    

    下载ifsvnadmin

    wget http://jaist.dl.sourceforge.net/project/ifsvnadmin/svnadmin-1.6.2.zip
    unzip svnadmin-1.6.2.zip
    

    复制到 /data/www/svnadmin

    配置nginx的php

            location /svnadmin {
            alias /data/www/svnadmin;
            index index.php;
            location ~ \.php$ {
                include fastcgi_params;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $request_filename;
            }
        }
    

    配置ifsvnadmin

    打开localhost/svnadmin

        Subversion authorization file: /data/www/svnconf/authz
        User authentication file (SVNUserFile) : /data/www/svnconf/passwd
        Parent directory of the repositories (SVNParentPath): /data/www/svn_repos
        Subversion client executable: /usr/local/bin/svn
        Subversion admin executable: /usr/local/bin/svnadmin
    

    比较好的参考

    https://www.ibm.com/developerworks/cn/java/j-lo-apache-subversion/
    http://www.opstool.com/article/282
    https://kany.me/nginx-php-svn/

    相关文章

      网友评论

        本文标题:基于apache搭建subversion服务及管理工具

        本文链接:https://www.haomeiwen.com/subject/xhjdrttx.html