前言 {#前言}
SVN 是最流行的版本管理软件之一,可以为源码或者文档记录每次的修改记录,是开发团队协作必备的工具。
这篇文档,我们将讲解如何使用Apache来搭建SVN服务端,Linux服务器我们使用CentOS 7为例,其他Linux版本操作也差不多。
第一步,安装 Apache {#第一步,安装-Apache}
使用 yum 安装
|-----------|---------------------------|
| 1
| yum install httpd
|
第二步,安装 Subversion 和 mod_dav_svn 模块 {#第二步,安装-Subversion-和-mod-dav-svn-模块}
CentOS 7 默认的源安装的 svn 是比较旧的版本,我们使用 wandisco 源安装SVN1.9版本。
新建文件
|-----------|------------------------------------------------|
| 1
| vim /etc/yum.repos.d/wandisco-svn.repo
|
写入源内容
|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5
| [WandiscoSVN] name=Wandisco SVN Repo baseurl=http://opensource.wandisco.com/centos/$releasever/svn-1.9/RPMS/$basearch/ enabled=1 gpgcheck=0
|
删除旧版本(如果存在)
|-------------|----------------------------------------------|
| 1 2
| yum remove subversion* yum clean all
|
开始安装 Subversion
|-----------|--------------------------------|
| 1
| yum install subversion
|
为了Apache能提供SVN服务,我们还需要安装一个Apache的模块
|-----------|---------------------------------|
| 1
| yum install mod_dav_svn
|
第三步,Apache配置SVN {#第三步,Apache配置SVN}
修改svn配置文件
|-----------|----------------------------------------------------------|
| 1
| vim /etc/httpd/conf.modules.d/10-subversion.conf
|
文件内容应该如下:
|---------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3
| LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so LoadModule dontdothat_module modules/mod_dontdothat.so
|
我们配置一个/svn的访问路径,新增以下内容
|---------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9
| <Location /svn> DAV svn SVNParentPath /svn AuthName "SVN Repos" AuthType Basic AuthUserFile /etc/svn/svn-auth AuthzSVNAccessFile /svn/authz Require valid-user </Location>
|
注意:上面我们指定了svn的授权文件
/svn/authz
和用户密码配置文件/etc/svn/svn-auth
,后面我们将创建这两个文件。
第四步,创建SVN仓库 {#第四步,创建SVN仓库}
创建仓库
|-----------------|----------------------------------------------------------------------------------------------|
| 1 2 3 4
| sudo mkdir /svn cd /svn sudo svnadmin create repo1 sudo chown -R apache:apache repo1
|
创建用户帐号user001
|-----------------|---------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4
| sudo mkdir /etc/svn sudo htpasswd -cm /etc/svn/svn-auth user001 sudo chown root:apache /etc/svn/svn-auth sudo chmod 640 /etc/svn/svn-auth
|
如果需要创建更多帐号,参考以下命令:
|-------------|-----------------------------------------------------------------------------------------------|
| 1 2
| sudo htpasswd -m /etc/svn/svn-auth user002 sudo htpasswd -m /etc/svn/svn-auth user003
|
注意"-c"参数是表示创建文件,如果文件已经存在了,就不要再使用这个参数
创建权限配置文件
|-------------|---------------------------------------------------------------------|
| 1 2
| sudo cp /svn/repo1/conf/authz /svn/authz sudo vi /svn/authz
|
假设:
user001 是作为管理员
user002 是测试人员,拥有"repo1"仓库的读写权限
user003 是实习生,只有"repo1"仓库的读权限
我们的配置文件内容如下:
|------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12
| # 分组 [groups] admin=user001 repo1_user=user002 repo1_trainee=user003 [/] @admin=rw [repo1:/] @repo1_user=rw @repo1_trainee=r
|
第五步,启动 Apache 服务,修改防火墙 {#第五步,启动-Apache-服务,修改防火墙}
启动apache
|-------------|--------------------------------------------------------------------------------|
| 1 2
| sudo systemctl start httpd.service sudo systemctl enable httpd.service
|
开启http服务端口
|-------------|---------------------------------------------------------------------------------------------------|
| 1 2
| sudo firewall-cmd --zone=public --permanent --add-service=http sudo firewall-cmd --reload
|
最后,我们就可以使用下面的地址访问到我们的svn仓库了。
|-----------|--------------------------------------------|
| 1
| http://<your-server-ip>/svn/repo1/
|