热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Subversion1.5.5与Apache2.2结合

零、序言起因:公司使用的VSS6.0有很多缺陷,我一直想寻找一个完善并且简单易用的源代码管理工具,于是SVN进入了我的视线。发展:Subversion可以结合Apache服务器实现
零、序言

起因:公司使用的VSS6.0有很多缺陷,我一直想寻找一个完善并且简单易用的源代码管理工具,于是SVN进入了我的视线。

发展:Subversion可以结合Apache服务器实现远程管理源代码的功能,我当前的开发项目经常需要辗转于自己公司与客户公司之间,这个附带的彩蛋正好也解决了现在项目的远程管理问题,但是在我搜索了很多网络文章后发现,很多Subverion与Apache的配置文章已经过于陈旧,实际上无法成功的配置,但许多经验值得学习,所以整理并编写了此篇文章作为以后配置服务器的参照留存。

一、安装

安装 Apache 2.2
安装 Subversion 1.5.5

找到 Subversion 安装目录下的以下文件:

bin/mod_authz_svn.so
bin/mod_dav_svn.so

复制到 Apache 安装目录下 modules 目录中

bin/intl3_svn.dll
bin/libdb*.dll

复制到 Apache 安装目录下 bin 目录中(这里似乎并不是必须的,我猜想这里或许是为了支持 Berkeley DB 而所作的操作,但我并不打算深入研究下去)

二、环境

假设 Subversion 安装在 D:\SVN\Subversion 目录下
假设创建 D:\SVN\Repositories\ 目录作为版本库总目录
假设在 D:\SVN\Repositories\ 中创建目录iSLeeBlog,并在其中创建版本库,假设已经配置好用户授权,那么应该可以通过 svn://localhost/iSLeeBlog 访问版本库。
假设统一将Apache的SVN项目配置文件放在 D:\SVN\conf 目录下
假设Apache的默认端口号为8080

三、配置Subversion版本库管理服务器

找到创建的版本库目录下的配置文件,例如:D:\SVN\Repositories\iSLeeBlog\conf\

将 passwd 文件改名为 passwd.svn(也可以不改名,这里是为了结构更清晰)

用文本编辑器修改 svnserve.conf 文件,找到以下两行

#password-db = passwd
...
#authz-db = authz

修改为:

password-db = passwd.svn
...
authz-db = authz

这里 authz 就是授权文件的名称,在 Subversion 和 Apache 中可以使用相同的授权文件,但无法使用相同的 passwd 文件,因为 Apache 是以加密方式存储密码,而 Subversion 使用明文储存密码,所以上面将 Subversion 生成的 passwd 文件改名,说明其仅用在 Subversion 下。

思考:这里可以使用相同的帐号文件吗?显然,我对 Apache 的配置还是不太熟悉,两个帐号文件需要同步维护比较麻烦,如果您知道如何解决,请您帮助我,谢谢。

如何配置授权文件不再详述,请自行查看授权文件中自带的注释,已经解释的非常清晰。

四、配置Apache服务器

找到 Apache 安装目录下 conf/httpd.conf 文件,用文本编辑器修改:

找到以下两句取消注释:

#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so

增加以下两句

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

使用 Apache 安装目录下的 bin/htpasswd.exe 可执行文件生成授权文件

第一次生成,使用 -cb 参数:

htpasswd -cb [filename] [username] [password]

例如:

htpasswd -cb passwd.apache islee 123

添加新用户,使用 -b 参数:

htpasswd -b passwd.apache another 456

将生成的 passwd.apache 文件移动到 D:\SVN\Repositories\iSLeeBlog\conf 目录下

a) 配置单项目

在Apache的conf/httpd.conf文件,在末尾添加以下内容

#配置虚拟目录

#引用远程访问模块
DAV svn

#版本库路径
SVNPath D:\SVN\Repositories\iSLeeBlog

#授权文件
AuthzSVNAccessFile D:\SVN\Repositories\iSLeeBlog\conf\authz

#所有用户都需要身份验证
Satisfy Any
Require valid-user

#验证方式
AuthType Basic

#项目的名称
AuthName "iSLee's Blog Project"

#用户文件
AuthUserFile D:\SVN\Repositories\iSLeeBlog\conf\passwd.apache


b) 配置多项目

在 httpd.conf 文件末尾增加一下一句,作用是引用指定目录下的所有 project 文件

Include D:\SVN\conf\*.project

然后在指定目录,这里是 D:\SVN\conf 中创建单个项目配置文件 iSLeeBlog.project 文本文件

iSLeeBlog.project 文件中的内容同“a) 配置单项目”节中的内容完全相同,新的项目之需要继续创建 project 文件,并根据需要更改虚拟目录路径以及授权文件名称即可。

配置以后需要重启 Apache 服务器。

五、访问

如果在局域网中,那么可以输入“svn://localhost/iSLeeBlog”即可访问版本库。

如果远程访问Apache服务器,那么可以在浏览器或客户端软件中输入“http://yourdomain or IP/svn/iSLeeBlog”即可访问iSLeeBlog项目。

六、备注

Subversion 的客户端 TortoiseSVN 是一个很棒的工具,虽然它与本文无关,但多看它附带的帮助文档,你将获益匪浅

本文档由 iSLee 编写维护,最后更新日期:2009年3月6日

推荐阅读
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • position属性absolute与relative的区别和用法详解
    本文详细解读了CSS中的position属性absolute和relative的区别和用法。通过解释绝对定位和相对定位的含义,以及配合TOP、RIGHT、BOTTOM、LEFT进行定位的方式,说明了它们的特性和能够实现的效果。同时指出了在网页居中时使用Absolute可能会出错的原因,即以浏览器左上角为原始点进行定位,不会随着分辨率的变化而变化位置。最后总结了一些使用这两个属性的技巧。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
author-avatar
xh7212176
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有