ifsvnadmin 搭建svn web管理界面 折腾日记

最近公司要求搭建svn的管理可视化页面。遇到不少小坑大坑,总共折腾了两天才搞定,记录一下。

先划重点,遇到最大的坑是
搭建好了管理界面,新建一个项目,新建一个用户,设置权限却没有效果

最初参考了这篇文章的教程
centos7搭建SVN+Apache+IF.svnadmin支持https实现web管理SVN

下面开始进入正题

1. apche 启动页面无法找到,显示默认欢迎界面

排查apache日志
cat /var/log/httpd/error_log

[Wed Sep 25 09:57:37.677150 2019] [autoindex:error] [pid 29643] [client 192.168.0.30:32460] AH01276: Cannot serve directory /var/www/html/: No matching DirectoryIndex (index.html,index.php) found, and server-generated directory index forbidden by Options directive

日志说明了进程试图在 /var/www/html/ 查找主页文件。这是虚拟主机路径未设置导致的。
在上面文章的配置基础上添加虚拟主机路径设置
vim /etc/httpd/conf.d/subversion.conf

	<VirtualHost *:80>
	    ServerName localhost:80
	    DocumentRoot "/var/www/html/svnadmin"
	#    RewriteEngine on
	#    RewriteCond %{HTTPS} !=on
	#    RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]
	</VirtualHost>

2. selinux 问题导致php无法复制文件

进入网站首页时报错,

Error: Could not copy configuration file template. Require write permission (777) to "data" folder and all containing files.

#0 /var/www/html/svnadmin/index.php(20): include_once()
#1 {main}

根据日志猜测是权限问题,然而 chown和chmod操作都做了,ll 查看权限也是对的。

再次查看日志
cat /var/log/httpd/error_log

 [:error]  PHP Warning:  copy(./data/config.ini): failed to open stream: Permission denied in /var/www/html/svnadmin/include/config.inc.php on line 33 

查看源代码
vim /var/www/html/svnadmin/include/config.inc.php
在这里插入图片描述
看来是copy执行失败, 报错也是权限问题,直接搜索之后,发现是selinux的问题,关闭selinux即可。

3. 在配置界面创建和分配的权限没有实际效果

重点来了,多次进行权限配置都没有效果。多次搜索也没找到原因。
提出这个问题的人不少,比如下面的链接。

https://blog.csdn.net/zhq_zvik/article/details/80084783

can not login svn with the user create by web page #148

先说原因:

svn有两种部署方式, SVN有两种模式,一种是使用svnserve -d -r /cz/svn/的模式进行启动,此时,访问的链接为svn:开头,另一种是使用apache,加载mod_dav_svn模块进行启动,此时,访问链接为http或者https。
svn两种方式的区别.
1:访问协议不同,一个是svn,一个是http
2:存储密码文件不同,
svn:以明文方式存储,存储格式为:[users]开头之后用户名和密码用=连接
http:以设定的apache认证方式加密后,进行存储,用户和加密后的密码用:连接

安装svnserve 后,启动脚本启动也好 systecmctl 启动也好, 都是直接调用svnserve启动,对于svnserve, 默认读取 每个项目的 conf 文件夹下面的passwd 和 authz 文件,用作身份认证。

而安装apache后,对用户和权限进行修改的操作,都只是修改两个文件(而不是每个项目下的文件),这两个文件在登录 ifsvnadmin 的时候进行配置。 因此,不论如何进行配置,当使用 svn://ip/dir 的方式进行连接,都和 ifsvnadmin 配置无关

所以最终方案是,关闭svnserve进程, 启动apache进程, svn客户端使用http协议进行连接,并且url中要添加 apache配置文件中的 location头。
例如使用 centos7搭建SVN+Apache+IF.svnadmin支持https实现web管理SVN 的配置文件,原来使用 svn://192.168.1.100/repos1的路径 需要修改为 http://192.168.1.100:/svn/respo1

参考链接
https://www.cnblogs.com/Sungeek/p/6905102.html
https://blog.csdn.net/zhq_zvik/article/details/80084783
http://www.cs126.cn/index.php/archives/8/

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值