知识点:
centos下SVN有两种模式,一种是使用svnserve -d -r /cz/svn/的模式进行启动,此时,访问的链接为svn:开头,另一种是使用apache,加载mod_dav_svn模块进行启动,此时,访问链接为http或者https。

近日为了能自主修改SVN账号的密码,查找几款SVN WEB方式软件,用的比较多的是USVN,iF.SVNAdmin,SVNManager以及submin.最终建议选择iF.SVNAdmin作为管理系统.各种优缺点不做比较,纯个人推荐.

背景:
svn安装方式说明

前提:
在centos系统内,以svn独立方式安装并实际运行了一段时间.访问方式是SVN开头的链接.并且apache和php环境已经安装完毕.(运转wordpress博客)
过程

一 USVN部分
首先选型USVN,该系统自2014年已经不再维护.界面还算可以看.
安装时按照网上的资料,首先在apache中配置了相关的访问路径,然后将下载的zip文件解压并上传到www目录内.将相关的文件夹设置为777的权限.

启动系统后,首先是分步配置选择项
1:在第2步因open_basedir中没配置tmp的访问权限,导致不能选择语言和时区
2:之后配置svn的授权文件地址和数据库访问地址.
3:将usvn给出的apache配置项复制到httpd.conf中,并重启apache
登陆页面后,能正常显示角色分组,但现实不了用户.
添加用户后,采用svn方式不能访问页面.经查看usvn配置项,没发现问题.

      遇到的问题有:
1:因php.ini中open_basedir 选项没有增加配置,造成访问因为显示页面路径没有权限.将提示没有权限的路径加到php.ini的open_basedir即可.
2:因为SVN目录授权不够导致相关文件写入时,提示写入失败.设置为777权限后,通过
3:其他因为路径和nginx配置冲突问题,较为简单.修改后解决
4:之前没有加载mod_dav_svn模块,采用yum方式进行了装载
ps:因太长时间没用apache和php,找他们的配置文件耗费了较多的时间.
此时,USVN部分完成.其实到这步已经满足需求,但实际上svn已经由SVN方式访问改为了HTTP方式,当时对这点不知情.并且svn中的passwd文件内容已经由明文改了密文.
之后,由于认为USVN没能实现需求(实际上是自己不知道已经完成),重新进行选型.多方查找后,选择了iF.SVNAdmin(幸运的是,iF.SVNAdmin比USVN要好,真是塞翁失马焉知非福.).

二iF.SVNAdmin部分
由于之前USVN安装中将所有的基础已经做好,只需要将apache中usvn的配置项删除,再将iF.SVNAdmin(1.6.2)的包解压后放到www目录内即可.
步骤如下:      1)首先将svn改为apache挂在方式,配置项如下:
在尾部添加:

< Location /svn> DAV svn SVNParentPath /cz/svn AuthType Basic AuthName "Restricted Access" #File will be created by SVNManager, keep location in mind! AuthUserFile /cz/svn/auth/passwd_http Require valid-user #SSLRequireSSL #File will be created by SVNManager, keep location in mind AuthzSVNAccessFile /cz/svn/auth/authz < / Location>

说明:
如果将svn以独立方式部署改为http方式,按照上述添加即可.前提是需要apache加载mod_dav_svn模块,直接yum install -y mod_dav_svn同时在apache中加载模块:

LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so

以上的访问路径就是:http://ip:端口/svn/仓库名 或者 https://ip:端口/svn/仓库名        各部分含义:
DAV svn:加载模块
SVNParentPath /cz/svn:制定svn父路径,此种方式可以访问多仓库,如果是单仓库,则使用SVNPath配置项
AuthType Basic:认证类型,采用基本用户验证(Basic Authentication)
AuthName "Restricted Access":显示认证信息,随便写
AuthUserFile /cz/svn/auth/passwd_http:SVN用户和密码存储位置.(iF.SVNAdmin中需要指向这个位置)
Require valid-user:默认即可,不允许匿名访问
AuthzSVNAccessFile /cz/svn/auth/authz:svn角色访问文件(iF.SVNAdmin中需要指向这个位置).

2)配置好后,访问项目.首次访问需要配置一些项目
其中:                                                                                                                                                    Subversion 授权文件和用户身份验证文件 (SVNUserFile)需要与apache的保持一致,分别赌赢角色访问文件和用户密码文件.
user view provider type:采用password方式
代码仓库的父目录 (SVNParentPath):与apache一直,指向svn根目录
'svn.exe' 或 'svn'可执行文件:/usr/bin/svn
'svnadmin.exe' 或 'svnadmin' 可执行文件:/usr/bin/svnadmin
其他按默认即可.

3)确认配置项后,如果密码文件没有用户,会提示创建,有用户,会提示选择一个为管理员.最后登陆系统后,根据显示项进行操作,就比较简单了.

附:svn两种方式的区别.
1:访问协议不同,一个是svn,一个是http
2:存储密码文件不同,
svn:以明文方式存储,存储格式为:[users]开头之后用户名和密码用=连接
http:以设定的apache认证方式加密后,进行存储,用户和加密后的密码用:连接

因对svn链接方式不了解,导致今天部署了两次web端,幸运的是,SVNAdmin整体上比USVN好,如果选择web方式管理SVN,强烈推荐使用SVNAdmin.配置简单且不用链接数据库,唯一的限制是使用apache方式启动svn.

不过apache方式也比较简单,采用yum 安装svn和mod_dav_svn模块后,在apache指定相关配置项,即可.

Last modification:October 17, 2018
If you think my article is useful to you, please feel free to appreciate