SVN 服务器的安装及其 HTTPS 实现

目前主流的版本管理软件是 GIT 和 SVN。GIT 更强大更方便,是潮流,优先推荐。但国内很多公司仍在用 SVN,本文总结了 CentOS 7 环境下 SVN 的安装,及其 http / https 协议的配置方法,后续再介绍 GIT 相关内容。

作者:王克锋
出处:https://kefeng.wang/2016/12/31/svn-server/
版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和出处。

1 安装 SVN(V1.7.14)

1.1 安装

sudo yum -y install subversion # 安装 SVN
sudo svnserve --version # 查看版本(1.7.14)
sudo mkdir -p /var/svn/repo1 # 创建版本库目录
sudo svnadmin create /var/svn/repo1 # 创建版本库

1.2 配置

配置帐号:

## sudo vim /var/svn/repo1/conf/passwd
[users]
kevin=kevin123
john=john123
mike=mike123

配置权限:

## sudo vim /var/svn/repo1/conf/authz
[groups]
dev = kevin
qa = john,mike

[repo1:/]
@dev = rw
@qa = r

配置服务:

## sudo mv /var/svn/repo1/conf/svnserve.conf{,.bak}
## sudo grep -v "###" /var/svn/repo1/conf/svnserve.conf.bak | sudo tee /var/svn/repo1/conf/svnserve.conf
## sudo vim /var/svn/repo1/conf/svnserve.conf
[general]
anon-access = none ## 匿名用户可读(关闭)
auth-access = write ## 授权用户可写
password-db = passwd ## 指定账号配置文件
authz-db = authz ## 指定权限配置文件
realm = /var/svn/repo1 ## 认证空间名

1.3 关闭 SELinux 模式

# sudo vim /etc/selinux/config
# mode of SELinux: enforcing=enable, permissive=disable
# SELINUX=enforcing
SELINUX=permissive

Linux sudo reboot 之后生效。

如果漏掉此操作,使用 svn co 时会报错:

svn: E000013: Unable to connect to a repository at URL 'svn://centos/repo1'
svn: E000013: Can't open file '/var/svn/repo1/format': Permission denied

1.4 启动服务

sudo systemctl enable svnserve
sudo systemctl start svnserve

1.5 防火墙放行

### sudo vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
### 重启生效: sudo systemctl restart iptables

1.6 卸载

如果想重装,需先卸载:

sudo systemctl stop svnserve
sudo systemctl disable svnserve
sudo yum -y remove subversion
sudo rm -rf /var/svn/repo1

1.7 客户端验证(svn://xxx)

svn co svn://centos/repo1 # 提示输入用户名密码,并保存
cd repo1
echo "aaa" > aaa.txt
svn add *
svn ci -m "test"

1.8 客户端清除 SVN 保存的帐户信息

1.8.1 Windows 环境

TortoiseSVN 软件:资源管理器右键菜单,TortoiseSVN / Settings,Saved Data / Authentication data,Clear
命令行执行:rd/s/q %APPDATA%\Subversion\auth

1.8.2 Linux 环境
rm -rf ~/.subversion/auth

2 开通 HTTP 协议

参考资料: http://svnbook.red-bean.com/en/1.7/svn.serverconfig.httpd.html

2.1 安装 httpd 及其 SVN 模块

sudo yum -y install deltarpm ## 增量 RPM 套件
# sudo yum -y remove httpd mod_dav_svn
sudo yum -y install httpd mod_dav_svn

2.2 确认模块 dav/dav_svn 已加载

## grep -E "dav_module" /etc/httpd/conf.modules.d/00-dav.conf
LoadModule dav_module modules/mod_dav.so
## grep -E "dav_svn_module" /etc/httpd/conf.modules.d/10-subversion.conf
LoadModule dav_svn_module     modules/mod_dav_svn.so

2.3 SVN HTTP 配置

## sudo chown -R apache:apache /var/svn/repo1/ ## 将 SVN 版本库所有者改为 apache(httpd 进程的启动用户)
## sudo vim /etc/httpd/conf.d/subversion.conf
<Location /svn>
    DAV svn ## mod_dav_svn 模拟,是 HTTP 1.1 的扩展,用来支持 SVN
    SVNParentPath /var/svn ## SVN HTTP 的根目录
    AuthType Basic ## 认证类型
    AuthName "SVN repository" ## 输入用户名和密码时的提示信息
    AuthUserFile /etc/httpd/svn-auth.htpasswd ## 认证文件的位置,需要手工创建

    # Authorization: Authenticated users only
    Require valid-user
</Location>

2.4 创建 SVN HTTP 用户

## 首个用户必须指定 -c 用于新建文件 svn-auth.htpasswd
## 后续用户必须不要指定 -c, 否则文件会被新建;-m 表示以 md5 加密密码
sudo htpasswd -cm /etc/httpd/svn-auth.htpasswd kevin ## 需要指定密码两次(最好与SVN的passwd一致)
sudo htpasswd -m /etc/httpd/svn-auth.htpasswd john ## 需要指定密码两次(最好与SVN的passwd一致)
sudo htpasswd -m /etc/httpd/svn-auth.htpasswd mike ## 需要指定密码两次(最好与SVN的passwd一致)
sudo cat /etc/httpd/svn-auth.htpasswd

2.5 启动 httpd 服务

sudo systemctl enable httpd
sudo systemctl restart httpd
sudo tail -f /var/log/httpd/error_log

2.6 防火墙放行

### sudo vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
### 重启生效: sudo systemctl restart iptables

2.7 客户端验证(http://xxx)

Windows 下使用 Chrome 浏览器访问: http://kefeng.wang/svn/repo1/
输入用户名 kevin 及其密码,成功。

3 开通 HTTPS 协议

3.1 安装 ssl 模块

sudo yum -y install mod_ssl openssl

3.2 生成证书

详细资料请参考我前面的文章:Nginx 负载均衡及其 HTTPS 部署

sudo mkdir /etc/httpd/ssl
sudo cp nginx.key /etc/httpd/ssl/httpd.key
sudo cp nginx.crt /etc/httpd/ssl/httpd.crt

3.3 配置证书

## sudo vim /etc/httpd/conf.d/ssl.conf
SSLCertificateFile    /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key

如果要停用 https 改用 http,只需注释下面的 SSLRequireSSL 一行。

### sudo vim /etc/httpd/conf.d/subversion.conf
<Location /svn>
    ## ......

    Require valid-user
    SSLRequireSSL
</Location>

3.4 重启服务

sudo systemctl restart httpd

3.5 防火墙放行

### sudo vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
### 重启生效: sudo systemctl restart iptables

3.6 客户端验证(https://xxx)

Windows 下使用 Chrome 浏览器访问: https://kefeng.wang/svn/repo1/
输入用户名 kevin 及其密码,成功。
此时只能使用 https 访问,http 已被禁用。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值