CentOS 7上部署apache Subversion(SVN)服务器

Apache Subversion(简称SVN)是一个开放源代码的版本控制系统,广泛用于管理文档和程序代码等文件的版本,尽管相比Git来说,SVN较为古老,但它仍然被许多企业用于代码和文档的管理服务,本文将详细介绍如何在CentOS 7服务器上安装和配置SVN与Apache的集成,以便通过HTTP访问版本控制仓库。
先决条件
1、操作系统:CentOS 7(最小化安装)。
2、用户权限:一个sudo用户登录(也可以直接使用root用户)。
3、网络环境:确保服务器能够连接到互联网,以便下载必要的软件包。
步骤一:安装Apache

1、安装Apache:
- sudo yum install y httpd
2、删除默认欢迎页面:
- sudo sed i 's/^/#&/g' /etc/httpd/conf.d/welcome.conf
3、防止Apache在/var/www/html目录中显示文件:
- sudo sed i "s/Options Indexes FollowSymLinks/Options FollowSymLinks/" /etc/httpd/conf/httpd.conf
步骤二:安装Subversion和mod_dav_svn模块
1、添加Wandisco源并安装最新版本的Subversion:
- sudo yum install y https://opensource.wandisco.com/centos/7/x86_64/wandiscorepo70.el7.bos.noarch.rpm
- sudo yum install y subversion mod_dav_svn
步骤三:配置SVN

1、修改SVN配置文件:
编辑/etc/httpd/conf.modules.d/10subversion.conf
:
- sudo vi /etc/httpd/conf.modules.d/10subversion.conf
添加以下内容:
- <Location /svn>
- DAV svn
- SVNParentPath /svn
- AuthName "SVN Repos"
- AuthType Basic
- AuthUserFile /etc/svn/svnauth
- AuthzSVNAccessFile /svn/authz
- Require validuser
- </Location>
2、创建SVN仓库:
- sudo mkdir /svn
- cd /svn
- sudo svnadmin create repo1
- sudo chown R apache:apache repo1
3、设置SVN用户帐号:
- sudo mkdir /etc/svn
- sudo htpasswd cm /etc/svn/svnauth user001
- sudo chown root:apache /etc/svn/svnauth
- sudo chmod 640 /etc/svn/svnauth
4、为用户设置权限:
复制仓库中的权限配置文件并进行编辑:
- sudo cp /svn/repo1/conf/authz /svn/authz
- sudo vi /svn/authz
假设:用户user001
是管理员,用户user002
具有读写权限,用户user003
只有读权限,则配置文件内容如下:
- [groups]
- admin=user001
- repo1_user=user002
- repo1_trainee=user003
- [/]
- @admin=rw
- [repo1:/]
- @repo1_user=rw
- @repo1_trainee=r
步骤四:启动Apache并修改防火墙规则
1、启动Apache:
- sudo systemctl start httpd.service
- sudo systemctl enable httpd.service
2、打开HTTP服务端口:
- sudo firewallcmd zone=public permanent addservice=http
- sudo firewallcmd reload
FAQs
1、如何创建新的SVN用户?
可以使用htpasswd
命令创建新的用户,要创建一个名为user002
的新用户,可以执行以下命令:
- sudo htpasswd m /etc/svn/svnauth user002
2、如何配置不同用户的权限?
可以通过编辑/svn/authz
文件来配置不同用户的权限,给user002
读写权限,给user003
只读权限,可以按以下方式配置:
- [groups]
- repo1_user=user002
- repo1_trainee=user003
- [/]
- @repo1_user=rw
- @repo1_trainee=r