SVN支持HTTP访问【原创】

作者: 比轩 | 来源:发表于2019-06-01 22:48 被阅读0次

    因为项目最近迁移服务器到了公司内网,然后公司的子域名代理只能搞http访问,所以在服务器上的SVN就只能调整为http协议访问,因此便有了此篇文章。

    首先,因为服务器上已经有正在使用的SVN仓库,所以本文只针对于已经存在的SVN进行调整,使其支持http协议访问。如果从0搭建也可以,执行命令svnadmin create xxx即可接着看下文。

    • 服务器:center os 6.X
    • 已有SVN仓库目录: /data/svn/product_repo

    仓库目录结构如下

    # 正常的SVN目录结构
    /data/svn/product_repo/ 
    ├── conf
    ├── db
    ├── format
    ├── hooks
    ├── locks
    └── README.txt
    

    1. 基础环境安装

    # 安装基础组件
    yum install -y httpd mod_dav_svn
    
    # 刷新目录下文件的权限:因为后续的httpd服务的用户默认为apache,
    # 而httpd服务需要读取仓库下的内容,因此这里修改用户属组,操作系
    # 统可以无apache用户。
    chown -R apache:apache /data/svn/product_repo/ 
    

    2. 调整SVN的配置文件

    首先,修改svn的svnserve.conf配置文件,如果和下面列举的内容相同,可以不做调整。

    # cd到conf目录
    cd /data/svn/product_repo/conf/
    # 用vim修改下server的配置
    vim svnserve.conf
    # 修改文件svn配置,核心主要有以下几项:
    anon-access = none
    auth-access = write
    password-db = passwd
    authz-db = authz
    

    接下来调整用户的账号密码配置文件,因为SVN原来就已经配置完成,所以这里针对原来的配置做修改和调整。

    # 备份原来的账号密码配置文件
    mv passwd passwd.default
    # htpasswd 接下来使用此命令创建新的账号密码文件,并往里面追加新的用户信息
    # 创建passwd文件,添加用户zhangsan,密码为password
    htpasswd -cbm passwd zhangsan password
    # 追加用户lisi,密码为1234
    htpasswd -bm passwd lisi 1234
    

    关于htpasswd命令的详细内容,可以参考这里:htpasswd命令

    我这里只调整了密码配置,权限配置文件原来就是好的,这里不做任何修改。而且权限的配置文件本身和SVN常见的配置是相同的,所以有任何疑问都可以在网上参考其他的SVN权限配置。

    vim authz
    # 我这里的配置很简单,没有分其他的组,所有的账号都在一个组里,并且都提供读写权限
    [/]
    zhangsan = rw
    lisi = rw
    

    最后,调整完配置的conf目录如下:

    /data/svn/product_repo/conf/
    ├── authz
    ├── passwd
    ├── passwd.default
    └── svnserve.conf
    

    3. 配置httpd

    # cd到httpd的配置目录
    cd /etc/httpd/conf.d
    # 新建svn的配置文件
    touch svn.conf
    

    修改svn.conf,添加以下配置:

    # Location 标签后面跟的是svn的映射地址,比如加上域名就是:demo.com[:端口]/product 这样
    <Location /product>
       DAV svn
       # svn的目录
       SVNPath /data/svn/product_repo/
       # Limit write permission to list of valid users.
       #<LimitExcept GET PROPFIND OPTIONS REPORT>
          # Require SSL connection for password protection.
          # SSLRequireSSL
     
          AuthType Basic
          AuthName "Authorization Realm"
          # 设置账号,权限配置文件
          AuthUserFile /data/svn/product_repo/conf/passwd
          AuthzSVNAccessFile /data/svn/product_repo/conf/authz
          Satisfy all
          Require valid-user
       #</LimitExcept>
    </Location>
    

    接下来如果需要调整端口(默认80)的话,就需要修改/etc/httpd/conf/httpd.conf,比如我这里将端口修改为3961

    # 监听到3961端口
    Listen 3961
    

    最后,启动httpd服务即可

    systemctl enable httpd
    systemctl start httpd
    

    4. 让httpd代理多个svn

    因为服务器上有两个独立的svn仓库,所以我这里还需要调整配置,将另外一个svn仓库也接进来。总的来说,只需要做一点点的修改即可。

    首先,1,2步骤保持不变,对另外一个需要代理的svn进行配置调整,完整后修改 /etc/httpd/conf.d/svn.conf配置后重启httpd即可,添加修改的实际配置文件如下:

    <Location /product>
       DAV svn
       # svn的目录
       SVNPath /data/svn/product_repo/
       # Limit write permission to list of valid users.
       #<LimitExcept GET PROPFIND OPTIONS REPORT>
          # Require SSL connection for password protection.
          # SSLRequireSSL
          AuthType Basic
          AuthName "Authorization Realm"
          # 设置账号,权限配置文件
          AuthUserFile /data/svn/product_repo/conf/passwd
          AuthzSVNAccessFile /data/svn/product_repo/conf/authz
          Satisfy all
          Require valid-user
       #</LimitExcept>
    </Location>
    # 添加的第二个svn仓库,映射的地址大概为:demo.com:3961/hcbm
    <Location /hcbm>
       DAV svn
       # svn的目录
       SVNPath /data/svn/hcbm/
       # Limit write permission to list of valid users.
       #<LimitExcept GET PROPFIND OPTIONS REPORT>
          # Require SSL connection for password protection.
          # SSLRequireSSL
          AuthType Basic
          AuthName "Authorization Realm"
          # 设置账号,权限配置文件
          AuthUserFile /data/svn/hcbm/conf/passwd
          AuthzSVNAccessFile /data/svn/hcbm/conf/authz
          Satisfy all
          Require valid-user
       #</LimitExcept>
    </Location>
    

    相关文章

      网友评论

        本文标题:SVN支持HTTP访问【原创】

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