因为项目最近迁移服务器到了公司内网,然后公司的子域名代理只能搞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>
网友评论