• 【推荐】CentOS安装Subversion1.8.17+HTTP协议支持配置


    注:以下所有操作均在CentOS 6.5 x86_64位系统下完成。

    我们需要搭建一个自己的SVN服务器。

    此外,搭建好的SVN服务器除了需要支持svn协议外,最好还需要支持HTTP协议和HTTPS协议,这个时候就需要有Web服务器的介入工作。

    #准备工作#

    在这之前需要先把Apache和Nginx安装好,具体见:《CentOS安装Apache-2.4.25+安全配置》《CentOS安装Nginx-1.6.2+安全配置》

    #Subversion的安装# 

    开始下载Subversion并进行编译安装: 

    # cd /usr/local/src
    # wget http://apache.fayea.com/subversion/subversion-1.8.17.tar.gz
    # tar zxf subversion-1.8.17.tar.gz
    # cd subversion-1.8.17
    # ./configure --prefix=/usr/local/subversion-1.8.17 --with-apr=/usr/local/apr-1.5.2 --with-apr-util=/usr/local/apr-util-1.5.4 --with-sqlite=/usr/local/sqlite-3.8.7.4
    # make && make install
    # ln -s /usr/local/subversion-1.8.17/ /usr/local/subversion

    给SVN创建仓库根目录:

    # mkdir -p /data/svnserver

    假设我们现在需要开发一个名为proj1的项目,给这个项目创建一个SVN仓库:

    # /usr/local/subversion-1.8.17/bin/svnadmin create /data/svnserver/proj1
    # chmod 777 -R /data/svnserver/proj1/db/

    注:上面给db/目录加入777权限是因为提交代码时需要对该目录进行修改操作,否则可能提交代码时会提示错误:

    db/txn-current-lock permission denied

    给SVN创建Apache的Web用户验证文件:

    # /usr/local/apache/bin/htpasswd -cm /data/svnserver/auth.conf brishenzhou
    New password:
    Re-type new password:
    Adding password for user brishenzhou
    # /usr/local/apache/bin/htpasswd -m /data/svnserver/auth.conf otherman
    New password:
    Re-type new password:
    Adding password for user otherman

    注:只有第一次需要加-c参数,后面再添加用戶则不需要。

    给SVN创建仓库访问权限文件: 

    # vim /data/svnserver/access.conf
    
    [groups]
    admin=brishenzhou
    developer=brishenzhou,otherman
    
    # Default access rule for ALL repositories
    # admins can write
    [/]
    @admin=rw
    
    # Allow developers complete access to their project repos
    [proj1:/]
    @developer=rw

    至此,Subversion的安装已经完毕,接下来是让其与Apache协同工作,支持HTTP协议访问。

    #Subversion+Apache的HTTP协议支持#

    把subversion相关的so文件拷贝过去给Apache: 

    # ls /usr/local/subversion/libexec/
    mod_dav_svn.so mod_authz_svn.so
    # cp /usr/local/subversion/libexec/mod_dav_svn.so /usr/local/apache/modules/mod_dav_svn.so
    # cp /usr/local/subversion/libexec/mod_authz_svn.so /usr/local/apache/modules/mod_authz_svn.so

    接着修改http.conf配置文件,如下:

    # vim /usr/local/apache/conf/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/svnserver
    AuthType Basic
    AuthName "Subversion repository"
    AuthUserFile /data/svnserver/auth.conf
    Require valid-user
    AuthzSVNAccessFile /data/svnserver/access.conf
    </Location>

    注:VIM下可以使用快捷键shift+g到文件末尾添加Location。

    #Subversion的启动/关闭#

    首先启动SVN服务,为了安全这里必须使用www用户来启动(这个用户也必须是Apache的工作用户): 

    # chown -R www:www /data/svnserver
    # su -l www
    $ /usr/local/subversion-1.8.17/bin/svnserve -d -r /data/svnserver

    注:如果在切换用户身份的时候提示错误:This account is currently not available. 这个时候先临时修改svn账号的登录权限:

    # vim /etc/passwd
    
    www:x:501:501::/home/www:/bin/bash

    然后再切换,执行完命令后切换回root再修改svn账号登录权限:

    $ exit
    # vim /etc/passwd
    
    www:x:501:501::/home/svn:/sbin/nologin

    这里我们来查看下当前subversion的进程:

    # ps -aux | grep svn
    www        6564    0.0   0.0       /usr/local/subversion-1.8.17/bin/svnserve -d -r /data/svnserver

    从上面进程可以看出进程的属主是www用户,之后Subversion将会监听3690端口。

    如果要关闭Subversion服务,只需要使用kill命令杀死进程即可,比如:

    # kill -9 6564

    Subversion服务启动完毕后,接着启动Apache服务:

    # /usr/local/apache/bin/apachectl restart

    这个时候打开浏览器访问地址http://youripaddress:8888/svn/proj1应该可以看到:

    输入前面设置的用户名和密码后就可以看到:

    证明访问成功。

    #Nginx反向代理#

    为了不需要输入8888端口号,这里使用Nginx来做反向代理,再将请求转给Apache,配置nginx.conf: 

    # vim /usr/local/nginx/conf/nginx.conf
    
    server {
        listen        80;
        server_name   localhost;
        location ~ ^/svn/ {
            access_log    off;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://127.0.0.1:8888;
        }
    }

    这个时候就可以直接访问而不需要带上8888端口号了。

    至此,Subversion服务器安装成功并支持HTTP协议访问。

  • 相关阅读:
    第一阶段冲刺第三天
    C语言printf函数求值顺序
    计算文件的MD5值
    SWFUpload后台取数据
    swfupload的使用方式
    文件上传的几种方式
    自定义缓存
    发邮件
    生成验证码
    将序列化成json格式后日期(毫秒数)转成日期格式
  • 原文地址:https://www.cnblogs.com/brishenzhou/p/6141975.html
Copyright © 2020-2023  润新知