• SVN Server安装部署攻略(Linux+SubVersion+Apache)


    原文:http://blog.csdn.net/colinchan/article/details/1865154

    一. 安装apr依赖库(Apache Portable Runtime Module)
    下载地址:http://apr.apache.org/download.cgi

    1.安装apr
    tar zxvf apr-1.4.6.tar.gz
    cd apr-1.4.6
    ./buildconf
    ./configure --prefix=/usr/local/apr/
    make
    make install


    2.安装apr-util
    tar zxvf apr-util-1.4.1.tar.gz
    cd apr-util-1.4.1
    ./buildconf
    ./configure --prefix=/usr/local/apr-util --with-apr=/usr/loca/apr
    make
    make install


    二. 重新编译httpd

    检查已安装的 Apache2 是否已经安装了 mod_dav .

    如果已经成功安装了Apache,使用 httpd -M 来查看有没有安装 dav_module,如果没有的话 必须附加 ‘–enable-dav’ ‘–enable-dav-fs’ 两个参数重新编译 Apache,否则即使编译通过了svn,apache也会启动不起来.

    wget http://apache.mirror.phpchina.com/httpd/httpd-2.2.6.tar.gz
    ./configure --enable-dav --enable-dav-fs
    make
    make install

    若httpd安装失败,并提示找不到pcre,需要先安装,下载地址:
    http://sourceforge.net/projects/pcre/files/

    三. 安装subversion

    最新的版本 Subversion 可以在这里找到 :http://subversion.tigris.org/project_packages.html
    http://subversion.tigris.org/downloads/subversion-1.4.5.tar.gz

    下载neon库,使svn支持webdav, https加密的链接.
    下载之后放到subversion安装目录下,并重命名即可, subversion会自动监测并配置, 目前只支持 0.25.5.

    cd subversion-SVN-LAST-VERSION-DIR 
    cd subversion-1.4.5
    wget http://www.webdav.org/neon/neon-0.25.5.tar.gz
    tar xzf neon-0.25.5.tar.gz
    mv neon-0.25.5 neon


    ./configure --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/home/chenmin/apr-1.2.11 --with-apr-util=/home/chenmin/apr-util-1.2.10 --with-ssl
    在以上编译过程中可能会出现 configure: error: Subversion requires SQLite
     可以http://www.sqlite.org/download.html 可以下载到最新的Sqlite版本sqlite-amalgamation-3.6.13.tar.gz安装Sqlite3.6.13 tar zxvf sqlite-amalgamation-3.6.13.tar.gz 进入文件夹sqlite-amalgamation找到sqlite3.c将其复制到 
     subversion-1.6.2/sqlite-amalgamation/sqlite3.c 。由于版本1.6.3里没有sqlite-amalgamation 所以你要先创建sqlite-amalgamation 目录然后复制进去

    由于没有安装Berkeley DB,所以使用FSFS
    make
    sudo make install


    测试安装是否成功:
    svnserve --version

    启动SVN服务:
    sudo svnserve -d -r /home/data/svn/
    注意:这里目录 /home/data/svn/ 是所有配置库的父级目录,其子目录均为各个配置库:/home/data/svn/proj1   /home/data/svn/proj2

    如果不同目录有svn仓库,例如除了/home/data/svn有两个svn仓库,/usr/local/svnrepos目录下面也有多个仓库,若想同时开启两个不同目录的svn服务,需要为第二个目录另外开一个端口,终端命令如下:
    svnserve -d --listen-port 3691 -r  /usr/local/svnrepos 
    新增端口后同时需要还需要将端口3691添加防火墙例外。最好客户端访问时需要在IP上加入端口,例如,svn://127.0.0.1:3691/myproject


    重启SVN服务:
    netstat -ntlp  找出svnserve的进程id
    然后
    kill -9 id

    其中 -d 表示守护进程, -r 表示在后台执行

    SVN服务开机启动:
    让Linux启动时自动启动svn服务的办法是在/etc/rc.local文件里添加下面的语句:
    /usr/local/bin/svnserve -d -r /home/data/svn/
    其中: /usr/local/bin/ 是svn的安装路径。

    四. 配置subversion和apache

    拷贝svn模块到apache模块目录下
    cp /data/subversion-1.4.5/subversion/mod_dav_svn/.libs/mod_dav_svn.so /usr/local/apache2/modules/
    cp /data/subversion-1.4.5/subversion/mod_authz_svn/.libs/mod_authz_svn.so /usr/local/apache2/modules/

    编辑httpd.conf
    LoadModule dav_svn_module modules/mod_dav_svn.so
    LoadModule authz_svn_module modules/mod_authz_svn.so

    <Location /svn>
    DAV svn
    SVNParentPath /data/svn
    </Location>

    运行htpasswd添加用户和密码
    /usr/local/apache2/bin/htpasswd -cm /data/svn/svn-auth-file chenmin
    /usr/local/apache2/bin/htpasswd -m /data/svn/svn-auth-file admin

    再次编辑httpd.conf
    <Location /svn>
    DAV svn
    SVNParentPath /data/svn
    AuthType Basic
    AuthName "Subversion repository"
    AuthUserFile /data/svn/svn-auth-file
    Require valid-user
    AuthzSVNAccessFile /data/svn/svn-access-file
    </Location>

    其中svn-auth-file是认证文件,存储用户名和密码,svn-access-file是访问权限文件,规定各个目录的访问者的权限, 示例的权限分配的文件的格式如下。
    [groups]
    admin = john, kate
    devteam1 = john, rachel, sally
    devteam2 = kate, peter, mark
    docs = bob, jane, mike
    training = zak
    # Default access rule for ALL repositories
    # Everyone can read, admins can write, Dan German is excluded. 注:若是特定仓库下面的鉴权配置文件,[/]就表示当前仓库的根目录
    [/]
    * = r
    @admin = rw
    dangerman =
    # Allow developers complete access to their project repos
    [proj1:/]
    @devteam1 = rw
    [proj2:/]
    @devteam2 = rw
    [bigproj:/]
    @devteam1 = rw
    @devteam2 = rw
    trevor = rw
    # Give the doc people write access to all the docs folders
    [/trunk/doc]
    @docs = rw
    # Give trainees write access in the training repository only
    [TrainingRepos:/]
    @training = rw
    权限配置文件中,关键的几个概念是:目标和权限,也就是为谁分配什么样的权限。读为r,写为w,如果没有权限那么什么也不写即可。
    阅读(267) | 评论(0) | 转发(0) |
    给主人留下些什么吧!~~
    评论热议
  • 相关阅读:
    表单制作注意事项
    【学习笔记】SIFT尺度不变特征 (配合UCF-CRCV课程视频)
    【图片匹配】--- SIFT_Opencv3.1.0_C++_ubuntu
    【LeetCode】297. Serialize and Deserialize Binary Tree
    【LeetCode】树的遍历
    【LeetCode 33】Search in Rotated Sorted Array
    ubuntu14.04 + GTX980ti + cuda 8.0 ---Opencv3.1.0(基础+opecv_contrib)配置
    [完美方案+无懈可击]ubuntu 14.04(LTS) + GTX 980Ti显卡配置
    OpenCV2.4.9 + Ubuntu15.04配置
    每天学点linux命令之locate 与 find 命令
  • 原文地址:https://www.cnblogs.com/black/p/5171770.html
Copyright © 2020-2023  润新知