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/