热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

SVN+Linux+Apache配置过程记录

花了一天终于搞定了:1SVN和apache的安装:安装的事情,网上有很多,由于用的是fedora直接yum下来了,注意apache在yum中名为httpd,为了使apache能够配合SVN的访问控制必须安装mod_authz_svn.so库,在yum中搜索svn,apache便可看见软件包.最后应当确定在/usr/li

花了一天终于搞定了:
1 SVN和apache的安装:
安装的事情,网上有很多,由于用的是fedora直接yum下来了,注意apache在yum中名为httpd,为了使apache能够配合SVN的访问控制必须安装mod_authz_svn.so库,在yum中搜索svn,apache便可看见软件包.最后应当确定在/usr/lib/httpd/modules下有一下四个文件:mod_dav.so,mod_dav_fs.so,mod_dav_svn.so,mod_authz_svn.so后两个文件可在% SVN_HOME%/bin中找到(我安装后moudules目录下就存在了所以没有用bin目录下的文件.

SVN安装完后:用svnserve -d启动后台服务,并用netstat -ntlp 查看有没有程序3690端口绑定来查看svnserve服务是否启动,关闭服务用killall svnserve命令

httpd服务启动后可由浏览器直接访问服务器IP

2 Linux SVN管理账户的建立
新增加用来管理SVN账户的linux账户我新建的账户名为SVNAD,相对应的组也是SVNAD,将apache账户添加入SVN组,确保apache对/home/SVNAD组有目录下所有文件有所有权限.否则往后在使用web方式访问SVN时可能会有错误,比如所在浏览器中显示Could not open the requested SVN filesystem,然后在/etc/http/logs/error_log中有关于access deny的错误.error_log是记录apache错误的地方,有错误应当上这里看看,然后到网上搜索相关错误.

3 建立SVN根目录与相关repository(就是工程目录)
在/home/SVNAD下建立SVN根目录mkdir SVNRoot(当然名字可自定),进入SVNRoot,建立工程目录,我先建立一个C,进入C,执行命令svnadmin create /home/SVNAD/C (也有文章说用 svnadmin create --fs-type fsfs /home/svnroot/repository/test来建立,我都试过,暂时没发现区别)建立reposityory,建完之后C目录下应有一下内容:
conf dav db format hooks locks README.txt
可在conf中配置用户权限以及用户,用户权限与下面要讲到的多库权限设置基本相同,用户则是由username = password组成,都为明文未加密,由于我们使用apache来控制访问权限,在此不多将.
另外到了这一步后可用svnserve -d -r /home/svnroot/repository/test1 --listen-host 192.168.1.18之类的命令来启动svn服务,并通过svn://192.168.1.18来访问svn服务器,如果不想使用apache的话,到这一步就可以结束了.

4 apache与svn绑定
确定/etc/httpd/conf.d/下有subversion.conf文件,没有的话要确定/etc/httpd/conf/httpd.conf中有下面四行,且没有被#注释掉:
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
接着在httpd.conf或subversion.conf中加入一下配置信息(注意去掉不必要可空格,确实需要空格的地方需要用""号包括):
DAV "svn"
# SVNPath "/home/SVNAD/SVNRoot/"
SVNParentPath "/home/SVNAD/SVNRoot/"
AuthType Basic
AuthName "Subversion On AD"
AuthUserFile "/home/SVNAD/SVNRoot/passwd"
Require valid-user
AuthzSVNAccessFile "/home/SVNAD/SVNRoot/authz"
Satisfy Any
配置的意义如下:
# "/svn"是在url上指定的访问路径,客户访问需要键入这个路径。
DAV "svn" # 声明svn
SVNPath "/home/SVNAD/SVNRoot"
# "E:\svn"是服务器上svn的repository的目录。
SVNParentPath "/home/SVNAD/SVNRoot"
` # 对于一个目录下存在多个工程的情况,可以声明这个变量。

# 在apache中配置svn有两种,可以混合使用,一种是apache自身的认证机制,
# 对进入/repos目录的用户进行统一认证,
# 一种是应用svn的认证,可以深入到目录级别进行权限控制,
# 和svn独立启动时设置权限一样。
### apache auth begin
AuthType Basic
AuthName "Subversion" # 认证的名字
AuthUserFile "/home/SVNAD/SVNRoot/passwd"
# "/home/SVNAD/SVNRoot/passwd" 里面存放的是使用htpasswd -m # "/home/SVNAD/SVNRoot/passwd" user
# 生成的用户名与密码的加密文件。注意,此处的路径不能有空格。
Require valid-user # 声明,必须是有效的用户才可以访问
### apache auth end

### svn auth begin
AuthzSVNAccessFile "/home/SVNAD/SVNRoot/conf/authz"
# "/home/SVNAD/SVNRoot/conf/authz"文件是根据%respository% # /conf/authz的规则编写,其实就
# 是svn对用户权限读取的文件格式,mod_authz_svn.so要求的格式。
#SVNIndexXSLT "d:\svnindex.xsl"
# d:\svnindex.xsl是用户可以自定义的显示模版,设计好模板,html上的显
# 会更漂亮。
# authentication if necessary.
Satisfy Any # 字面翻译是:都要满足,是声明用户要满足条件
Require valid-user # 声明,必须是有效的用户才可以访问
### svn auth end

5 用户与权限
SVN用户用apache用户来代替:
htpasswd /home/SVNAD/SVNRoot/passwd -cm username来建立用户文件,c代表创建文件,m代表md5加密存储.
以后可用htpasswd /home/SVNAD/SVNRoot/passwd -m username来添加用户
用htpasswd /home/SVNAD/SVNRoot/passwd -D username来删除用户

权限管理
在/home/SVNAD/SVNRoot下建立authz内容如下:
### This file is an example authorization file for svnserve.
### Its format is identical to that of mod_authz_svn authorization
### files.
### As shown below each section defines authorizations for the path and
### (optional) repository specified by the section name.
### The authorizations follow. An authorization line can refer to a
### single user, to a group of users defined in a special [groups]
### section, or to anyone using the '*' wildcard. Each definition can
### grant read ('r') access, read-write ('rw') access, or no access
### ('').

[groups]
# harry_and_sally = harry,sally
admin = AD
HoAdmin = admin2
reader = test

[/]
@reader = r

[C:/]
@admin = rw

[Holiday:/]
@HoAdmin = rw

#[/C]
#@admin = rw
#@reader = r

[/COPYFILE]
@reader =

# [/foo/bar]
# harry = rw
# * =

# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
这里我们假设有两个工程repository分别是C和Holiday在/home/AD/SVNRoot(SVN根目录)下,有三个帐号test,admin2,AD分属三个组reader,admin,admin,reader除C工程下的COPTFILE文件外拥有所有读权限,而admin2组则只对Holiday工程有读写权限,而admin则对只C工程有读写权限.

至此所有配置文件我们可以用http://localhost/svn/C/之类的http来访问SVN或验证权限.

在rapidsvn之类的SVN GUI客户端也可直接将上述url填入即刻,考虑到web访问,可能还需要设置防火墙,这里不多讲.由于使用了apache内嵌svn,因此平时也不用启动svn服务只需启动httpd服务就可以了.


推荐阅读
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 随着Linux操作系统的广泛使用,确保用户账户及系统安全变得尤为重要。用户密码的复杂性直接关系到系统的整体安全性。本文将详细介绍如何在CentOS服务器上自定义密码规则,以增强系统的安全性。 ... [详细]
  • 搭建个人博客:WordPress安装详解
    计划建立个人博客来分享生活与工作的见解和经验,选择WordPress是因为它专为博客设计,功能强大且易于使用。 ... [详细]
  • 本文详细介绍了在 CentOS 系统中如何创建和管理 SWAP 分区,包括临时创建交换文件、永久性增加交换空间的方法,以及如何手动释放内存缓存。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • 本文详细介绍了如何在 Ubuntu 14.04 系统上搭建仅使用 CPU 的 Caffe 深度学习框架,包括环境准备、依赖安装及编译过程。 ... [详细]
  • Linux系统中Boot分区空间不足的处理方案
    在Linux系统的默认安装过程中,Boot分区通常分配的空间为200MB左右,理论上这个大小足以满足日常需求。然而,随着系统的频繁更新,尤其是内核的不断升级,如果不及时清理过期的内核版本,Boot分区很容易出现空间不足的问题。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 本文探讨了在Windows系统中运行Apache服务器时频繁出现崩溃的问题,并提供了多种可能的解决方案和建议。错误日志显示多个子进程因达到最大请求限制而退出。 ... [详细]
  • 在尝试通过自定义端口部署Spring Cloud Eureka时遇到了连接失败的问题。本文详细描述了问题的现象,并提供了有效的解决方案,以帮助遇到类似情况的开发者。 ... [详细]
  • 提供Scikit-learn中文版官方文档链接,帮助机器学习爱好者和开发者快速上手。 ... [详细]
  • 本文详细介绍了 Java 中 org.w3c.dom.Node 类的 isEqualNode() 方法的功能、参数及返回值,并通过多个实际代码示例来展示其具体应用。此方法用于检测两个节点是否相等,而不仅仅是判断它们是否为同一个对象。 ... [详细]
  • 在尝试启动Java应用服务器Tomcat时,遇到了org.apache.catalina.LifecycleException异常。本文详细记录了异常的具体表现形式,并提供了有效的解决方案。 ... [详细]
  • mysql 授权!!
    为什么80%的码农都做不了架构师?MySQL的权限系统围绕着两个概念:认证-确定用户是否允许连接数据库服务器授权-确定用户是否拥有足够的权限执 ... [详细]
  • Centos7 Tomcat9 安装笔记
    centos7,tom ... [详细]
author-avatar
叫我小小小火枪的天空_603
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有