51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Apache + SVN服务器搭建

前言 {#前言}

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/ |


赞(4)
未经允许不得转载:工具盒子 » Apache + SVN服务器搭建