纵横研究院后端基础技术专题社区

SVN支持HTTP访问【原创】

2019-06-01  本文已影响0人  比轩

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

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

仓库目录结构如下

# 正常的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>
上一篇 下一篇

猜你喜欢

热点阅读