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

删除 Apache 的默认欢迎页面:

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

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

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

3. 安装 SVN 和 mod_dav_svn 模块

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

yum install -y subversion mod_dav_svn

4. 配置 SVN

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

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

5. 创建 SVN 仓库

mkdir /svn
cd /svn
svnadmin create repo1
chown -R apache:apache repo1

chcon -Rv --type=httpd_sys_content_t /svn
setsebool -P httpd_unified=1

6. 设置 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

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

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

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

7. 为用户设置权限

  • 用户user001是管理员。
  • 用户user002具有读写权限。
  • 用户user003只能读。
cat > /svn/authz <<EOF
[groups]
admin=user001
repo1_user=user002
repo1_trainee=user003

[/]
@admin=rw

[repo1:/]
@repo1_user=rw
@repo1_trainee=r
EOF

8. 启动 Apache 并修改防火墙规则

启动 Apache:

systemctl start httpd.service
systemctl enable httpd.service

打开 HTTP 服务端口:

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

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

http://<your-server-ip>/svn/repo1/
© 2022 刘士. All rights reserved.

结果匹配 ""

    没有匹配的结果 ""