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

时间:2022-09-17 15:07:42

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

Apache Subversion(SVN)是一种广泛使用的版本控制解决方案,可帮助存储各种版本的文件,如源代码和文档。

在本文中,我将介绍如何使用 Apache Subversion 和 Apache 在 CentOS 7 服务器实例上构建 SVN 服务器。

1. 先决条件

  • CentOS 7(最小化安装,但不是必需)。
  • 一个 sudo 用户登录(直接使用 root 亦可)。

非 root 用户请在命令前加 sudo 。

2. 安装 Apache

使用 YUM 安装 Apache:

yum install -y httpd
Bash

删除 Apache 的默认欢迎页面:

sed -i 's/^/#&/g' /etc/httpd/conf.d/welcome.conf
Bash

防止 Apache 在 /var/www/html 目录中显示文件:

sed -i "s/Options Indexes FollowSymLinks/Options FollowSymLinks/" /etc/httpd/conf/httpd.conf
Bash

3. 安装 SVN 和 mod_dav_svn 模块

要使 SVN 与 Apache 配合使用,需要安装除 SVN 之外的 Apache 模块 mod dav svn :

yum install -y subversion mod_dav_svn
Bash

4. 配置 SVN

  1. 修改 SVN 配置文件

    vi /etc/httpd/conf.modules.d/10-subversion.conf cat >> /etc/httpd/conf.modules.d/10-subversion.conf <<EOF <Location /svn> DAV svn SVNParentPath /svn AuthName "SVN Repos" AuthType Basic AuthUserFile /etc/svn/svn-auth AuthzSVNAccessFile /svn/authz Require valid-user </Location> EOF
    Bash

    注意: 在此配置中,我们指定了一个 HTTP 访问认证文件 /etc/svn/svn-auth 和用户权限控制文件 /svn/authz 。两者都将在以后创建。

  2. 创建 SVN 仓库

    mkdir /svn cd /svn svnadmin create repo1 chown -R apache:apache repo1
    Bash
  3. 设置 SVN 用户帐号

    使用以下命令创建 HTTP 访问认证文件 /svn/svn-auth 和 SVN 用户帐户 user001 :

    mkdir /etc/svn htpasswd -cm /etc/svn/svn-auth user001 chown root:apache /etc/svn/svn-auth chmod 640 /etc/svn/svn-auth
    Bash

    如果要创建更多 SVN 用户帐户,请参阅以下命令:

    htpasswd -m /etc/svn/svn-auth user002
    htpasswd -m /etc/svn/svn-auth user003
    Bash

    警告: 现在不要使用 -c 标志,否则将重建身份验证文件,并清除之前设置的所有用户帐户。

  4. 为用户设置权限

    cp /svn/repo1/conf/authz /svn/authz vi /svn/authz
    Bash

    假设:

    • 用户 user001 是管理员。
    • 用户 user002 具有读写权限。
    • 用户 user003 只能读。

    然后,可以修改以下设置:

    [groups] admin=user001 repo1_user=user002 repo1_trainee=user003 [/] @admin=rw [repo1:/] @repo1_user=rw @repo1_trainee=r
    Bash

    保存并退出:

    :wq
    Bash
  5. 启动 Apache 并修改防火墙规则

    启动 Apache:

    systemctl start httpd.service
    systemctl enable httpd.service
    Bash

    打开 HTTP 服务端口:

    firewall-cmd --zone=public --permanent --add-service=http firewall-cmd --reload
    Bash

    最后,使用以下路径从 SVN 客户端访问服务器上的 SVN repo repo1 :

    http://<your-server-ip>/svn/repo1/
    Bash

教程结束了。谢谢阅读。