Apache2.2.11和SVN1.6.1搭建svn版本控制平台(windows环境)自测实验通过【原创】

Powered by: 守望者MS

文章由原博客迁移而来,很多颜色注释转过来都没了,想要看的更明白

请访问:http://www.ncepuideal.com/space/viewspacepost.aspx?postid=69&spaceid=5

一、安装

第一步,安装Apache2.2,下载后直接安装就可以了,没有什么难的。

第二步,安装Subversion1.6.1(目前最新版本),注意下载时,看是否支持Apache2.2;我使用的是svn-win32-1.6.1.zip,解压之后即可使用。
------------------------------------------------------------------------

二、整合

第一步,打开Apache安装目录下的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

将subversion\bin目录下的mod_dav_svn.so, mod_authz_svn.so 复制到apache 的 modules目录下;
同时复制libapr-1.dll, libapriconv-1.dll, libaprutil-1.dll, libdb44.dll, libeay32.dll, libsasl.dll, ssleay32.dll 到apache的bin目录下(覆盖);
紫色部分中牵涉到的所要复制的文件因版本而异,以上所列的文件是参考其他资料的,但是在实际操作过程中发现是不正确的,拷贝过去后发现Apache无法正常启动,提示“mod_dav_svn.so”注册不到server中,这里解决的办法有两种,一是选择讲subersion\bin中的所有.dll文件全部复制过去,然后打开Apache,再进行删除.dll文件,这时如果没用的.dll文件apche不会做任何提示就可以删除!第二种方法是:用depends.exe文件打开“mod_dav_svn.so“ 文件,然后查看这个文件需要什么.dll,相应的从subversion\bin目录中拷贝到apache\bin中覆盖即可(depends.exe文件已上传到附近中)。
------------------------------------------------------------------------
这里还需注意的是.apache无法启动的原因,DOS窗口提示一下信息:
httpd.exe: Could not reliably determine the server's fully qualified domain name
, using 192.168.1.3 for ServerName
这个问题的解决办法是在httpd.conf文本文件中找到:
#ServerName IP:端口
然后把#去掉即可,之后保存后就能启动apache.
------------------------------------------------------------------------

第三步,在这个文件的最后,追加如下语句:
<Location /repository>
DAV svn
SVNParentPath D:/SVN/repository
</Location>
其中/repository是告诉Apache使用这个URI作为SVN的访问点,可以任选;下面D:/SVN/repository是SVN仓库的存储位置,也可以自己任选,但是这个目录一定要存在。

上面这种是多库的配置方式,对于单库,可以把SVNParentPath变成SVNPath。这两个啥区别?简单来说,多库就是下面可以有多个repository,比如可以用http://localhost/repository/repo01http://localhost/repository/repo02来访问不同的repository,对应于D:/SVN/repository下面的子目录repo01,repo02,而单库只能用http://locahhost/repository/,来访问唯一的repository。

    心急的人现在可能就去访问这几个link了,是不是结果让你失望啊?因为我们还没有建立repository,当然不能访问, 建立的方法是用SVN安装目录\bin下面的svnadmin.exe,在命令行输入“svnadmin create D:/SVN/repository/repo01”,就建立了repo01,然后重启Apache,再访问http://localhost/repository/repo01,是不是看到了“Revision 0: /”?这说明版本库已经开始运作了(初始版本0)。
------------------------------------------------------------------------

第四步、基本认证和权限控制
------------------------------------------------------------------------

    SVN repository成功跑起来,你的repository总要搞个用户名密码?此外 你可能还需要给不同的帐户或角色在不同的目录上赋予不同的权限(只读、可写。
更改第三步中的设置

<Location /repository>
DAV svn
SVNParentPath "D:/SVN/repository"
AuthType Basic
AuthName "your-name's subversion repository"
AuthUserFile "D:/SVN/svn_auth"
Require valid-user
</Location>

    红色这几行就是我们要的,其中AuthName随便写问题不大,那个AuthUserFile也随便放,里面存的是用户名和密码。注意这个文件是 Apache生成的,可不是你随便建立个文本文件把用户名密码写进去就OK:) 具体是用Apache的htpasswd命令:

htpasswd -c filename username                #新建一个password file,并写入username的信息,回车后提示你输入密码

htpasswd filename username                #在当前password file里面追加一个username的信息

    这一步做好后,重启Apache,再用浏览器访问你的repository,是不是提示你输入用户名和密码了

    基本的认证就是这样,接下来是权限。还是照例先改httpd.conf:

<Location /repository>
DAV svn
SVNParentPath "D:/SVN"
AuthzSVNAccessFile "D:/SVN/svn_rule"
AuthType Basic
AuthName "your-name's subversion repository"
AuthUserFile "D:/SVN/svn_auth"
Require valid-user
</Location>

 

这个svn_rule是啥?其实就是个文本文件,这里没加扩展名是Unix的风格,这个文件里定义了每个帐号或者每个角色可以干什么。看几个例子:

[repo01:/]
user1 = rw
user2 = r

对于多库,定义其中的一个repo01下的所有目录,允许user1读写,user2只读

[repo01:/Project1]
user1 = rw
user2 = r

和上面类似,只不过规定细化到了子目录:)

[/Project1]
user1 = rw
user2 = r

这个说的是单库的情况:)

[groups]
admin = user1, user3

readonly = user2, user4

 

[repo01:/]
@admin = rw
@readonly = r

这个就是设定角色了,和前面的区别主要是有了group,然后group的名字前面有@,为了和用户名区分。

------------------------------------------------------------------------
下面的是我最终测试通过的httpd.conf文件中最后部分的内容!

------------------------------------------------------------------------
<Location /repository>
DAV svn
SVNParentPath "D:/svn/repository"
AuthzSVNAccessFile "D:/svn/svn_rule"
AuthType Basic
AuthName "Ideal-SVN"
AuthUserFile "D:/svn/svn_auth"
Require valid-user
</Location>
------------------------------------------------------------------------
PS:在配置SVN时会因为版本的问题出现很多错误,我参考网上资料的时候大部分帖子都是一个模版,并且存在很多问题,以上是我搜集并且修改,亲自测试通过的SVN配置方法。
下面还有一个关于配置时容易遇到的apache的问题
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
可能遇到的问题:

Apache初次安装好后,可以试着启动它,用系统托盘里的Apache Monitor,或者开始菜单里的快捷方式都是ok的。正常启动后,可以用浏览器访问http://localhost 或者 http://127.0.0.1, 如果看到页面上的“It works!”,就OK。
如果Apache启动过程中遇到什么麻烦,可以去系统的时间日志里看看究竟发生了什么,方法是“我的电脑”上右键->管理->事件查看 器,在“应用程序”和“系统”里都有可能出现,不妨都check一下。

    Apache最常遇到的问题有两种,一个是端口被占用,另一个是配置文件httpd.conf语法出错。我们一般会采用默认的80端口,如果有其他 Process在监听这个端口的话,Apache就无法启动。这时,要么选择给Apache换个端口,要么选择干掉占用端口的家伙。

    换端口只要在Apache的httpd.conf里面Listen配一下就行了,这里不加赘述。主要来说说第二种选择(这也是我经历的)。首先要找到是哪个家伙占用了80端口,头号嫌疑犯当然是IIS,去管理工具->服务里看看它有没有启动,如果有,干掉并设置为手动或禁用(前提是你确定不会在这台 机器上使用IIS,如果是公用的server,万分小心咯。。。);如果不是IIS,其他Application Server也有一些嫌疑,比如Weblogic,Tomcat之流,尽管他们默认端口不是80,但不排除哪位在用它同时做HTTP Server,解决方法一样,只是这种情况下往往就不能轻举妄动了,因为别人把默认端口该成80总是有目的的;如果这两个都被排除,那就不能在乱猜 测了,要凭证据抓人了:) 这里我们使用强大的netstat命令,让罪魁祸首无从藏身。具体的做法是在command line下输入“netstat -n -ab”,看到了什么?是不是list了所有正在使用的端口号?更重要的是,后面还有对应的PID ,接下来就是从身份证号找人了,在任务管理器里,进程那个标签下,找到和PID对应的进程名字(没有PID那一列?查看->选择列)。

    这里说说我的情况,我的80端口被System占用,刚开始以为是IIS,后来发现是SQL2008的reporting服务占用80端口,进入SQL的配置管理器把该服务停止后就能正常启动,一下是出错是apache的提示信息:
------------------------------------------------------------------------
(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次。  : make_sock: c
ould not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Note the errors or messages above, and press the <ESC> key to exit.  26...
------------------------------------------------------------------------

转载于:https://www.cnblogs.com/streamhope/archive/2011/05/10/2042359.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值