凌峰创科服务平台

linux上搭建svn服务器

在Linux系统上搭建SVN服务器可以通过Apache与Subversion结合的方式实现,以下是详细步骤:首先确保系统已安装必要的软件包,以CentOS系统为例,执行yum install subversion httpd mod_dav_svn命令,其中subversion是SVN核心程序,httpd是Web服务器,mod_dav_svn是SVN的Apache模块,安装完成后,创建SVN仓库目录,例如mkdir -p /var/svn/repos,然后使用svnadmin create /var/svn/repos命令初始化仓库,此时会自动生成conf、db、hooks等子目录。

linux上搭建svn服务器-图1
(图片来源网络,侵删)

接下来配置SVN访问权限,进入仓库conf目录,修改svnserve.conf文件,设置[general]段落下的anon-access = none(禁止匿名访问)、auth-access = write(授权用户可写)、password-db = passwd(密码文件路径)和authz-db = authz(权限文件路径),然后编辑passwd文件添加用户,格式为username = password,例如user1 = 123456,编辑authz文件配置权限,例如[/]表示根目录权限,user1 = rw表示user1用户有读写权限,表示其他用户无权限。

配置Apache以支持HTTP协议访问SVN,编辑/etc/httpd/conf.d/subversion.conf文件,添加以下内容:

<Location /svn>  
DAV svn  
SVNParentPath /var/svn/repos  
AuthType Basic  
AuthName "SVN Repository"  
AuthUserFile /etc/svn/passwd  
Require valid-user  
</Location>  

其中SVNParentPath指定仓库目录,AuthUserFile需与之前passwd文件路径一致(若不同需将仓库密码文件复制到指定位置),然后创建Apache认证用户文件htpasswd -cm /etc/svn/passwd user1,之后添加用户可去掉-c参数避免覆盖。

启动并设置开机启动服务:systemctl start httpdsystemctl enable httpdsystemctl start svnservesystemctl enable svnserve,若使用防火墙,需开放HTTP端口(80)和SVN默认端口(3690):firewall-cmd --permanent --add-service=httpfirewall-cmd --permanent --add-port=3690/tcp,然后重载防火墙firewall-cmd --reload

linux上搭建svn服务器-图2
(图片来源网络,侵删)

验证SVN服务器:通过svn co http://localhost/svn/repos命令检出仓库,输入用户名和密码成功即表示搭建完成,若使用svnserve协议,可通过svn co svn://localhost/repos访问,需确保svnserve监听3690端口,可通过svnserve -d -r /var/svn命令启动服务。

以下是SVN服务器搭建过程中常见问题解答:

FAQs:

  1. 问题:访问SVN仓库时提示“403 Forbidden”错误,如何解决?
    解答: 首先检查Apache配置文件中Require valid-user是否正确设置,确认AuthUserFile路径是否存在且权限正确(建议设置为640),其次检查仓库目录权限,确保Apache运行用户(如apache)有读写权限,可通过chown -R apache:apache /var/svn/reposchmod -R 755 /var/svn/repos调整,最后查看Apache错误日志/var/log/httpd/error_log定位具体错误原因。

  2. 问题:如何创建多个SVN仓库?
    解答:/var/svn/repos目录下使用svnadmin create 仓库名创建新仓库,例如svnadmin create project1,Apache配置中SVNParentPath已指定父目录,无需修改配置文件,新仓库会自动生效,若需为不同仓库设置独立权限,可在authz文件中按仓库路径配置,例如[project1:/] user1 = rw,表示user1对project1仓库有读写权限。

分享:
扫描分享到社交APP
上一篇
下一篇