red hat 安装svn
素材:
?
httpd-2.2.22.tar ?subversion-1.6.17.tar ?apr-1.4.6.tar ? apr-util-1.4.1.tar ?apr-1.4.6.tar ?
?
?sqlite-autoconf-3071100.tar
?
1. 下载?apr-1.4.6.tar,apr-util-1.4.1.tar
?
因为这个是apache和svn安装的前提,所以我们必须安装,安装在一个指定的目录,如下:
?
./configure --prefix=/home/bard_cap/apr
?
./configure --prefix=/home/bard_cap/apr-util --with-apr=/home/bard_cap/apr
?
这些目录下面。
?
我们再装一下 sqlite, 因为svn服务器需要这个东西。
?
./configure --prefix=/home/bard_cap/sqlite
?
装好apr, apr-util, sqlite这几个东西后,我们再装apache, 看看apache能不能启动。
?
./configure --prefix=/home/bard_cap/apache
?
然后,我们观察一下 apache/conf/httpd.conf这个配置文件,很显然是没有
?
?
?
?
?
?
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mod_dav_svn.so这些库文件的。
?
然后,我们到apache的目录下 ./apachectl start启动一下,然后看看apache能不能work.
?
我们重新配置一下apache的编译选项,重新编译,安装一下apache.
?
./configure --prefix=/home/bard_cap/apache --enable-dav --enable-so --enable-maintainer-mode --with-apr=/home/bard_cap/apr --with-apr-util=/home/bard_cap/apr-util
?
这时候,我们发现apache modules目录下面还是没有新东西,而且httpd.conf也没有变化,
?
?
这时候,我们按照 svn
?
./configure --prefix=/home/bard_cap/server --with-apxs=/home/bard_cap/apache/bin/apxs --with-apr=/home/bard_cap/apr --with-apr-util=/home/bard_cap/apr-util --with-sqlite=/home/bard_cap/sqlite
?
?
可能这个过程要转 derby_DB ,不管他!!!!
?
我们可以发现apache modules目录下面终于多了几个文件,如下:
?
mod_authz_svn.so ?mod_dav_svn.so
?
conf目录下面的httpd.conf这个文件也神奇多了几行:
?
LoadModule dav_svn_module ? ? modules/mod_dav_svn.so
LoadModule authz_svn_module ? modules/mod_authz_svn.so
?
?
我们先不是试验 apache和svn服务器的结合使用,我们先单独使用svn服务器
?
?
/home/bard_cap/server/bin目录下面:
?
./svnadmin create /home/bard_cap/svn_data/hello 创建一个库
?
先到/home/bard_cap/svn_data/hello/conf目录下,有三个文件
?
authz ?passwd ?svnserve.conf
?
修改svnserve.conf
?
?
?anon-access = write (请注意,前面是没有任何空格的!!!!)
?
这个是没有做权限控制的,是任何匿名的人都可以读写的。
?
./svnserve -d -r?/home/bard_cap/svn_data 启动这个服务 -d表示deamon.
?
我们先在本地试验一下,找一个空白地,比如这个位置叫:
?
/home/bard_cap/laji
?
然后,我们输入命令:
svn checkout svn://localhost/hello,把这个仓库checkout出来后,我们可以看到本地有一个Hello目录了,
?
然后我们增加一个文本文件,bard.txt?
?
然后输入命令 svn add bard.txt
?
最后checkin svn commit --message="this is a try"
?
我们可以看到在本地目录
?
/home/bard_cap/svn_data/hello/db/revprops/0 下面有了版本文件,呵呵
?
最后,我们用eclipse的svn来checkout试试,
?
输入:svn://10.50.15.106/hello
?
成功checkout了,但是这些都是权限还没有配置的结果,我将继续研究。
?
下面要介绍如何用apache访问svn
?
apache的httpd.conf要配置,配置成这个样子。
?
?
?
<Location /svn>
? DAV svn
??SVNParentPath??/home/bard_cap/svn_data/ (这是个总目录)
? #或者SVNPath /home/bard_cap/svn_data/hello
? AuthType Basic
? AuthName "svn repos"
? AuthUserFile /home/bard_cap/apache/bin/passwd.conf
?<LimitExcept GET PROPFIND OPTIONS REPORT>
? ? ? require valid-user
? </LimitExcept>
</Location>
?
?
?
用apache的命令造个文件 ?./htpasswd -cb passwd.conf bardwu bardwu
?
?
然后重启apache即可,但是svn服务器不起来,也是OK的。
?
浏览器输入
http://10.50.15.106/svn/
?
输入用户名,密码即可,呵呵。
?
?
总结,其中apache和svn服务器的关系。
?
svn服务器提供了一种svn的协议来访问仓库, 所以svn服务不起来,svn://14.23.154.23/hello是找不到的。
?
但是当svn服务器停止的时候,光启动apache,apache也可以用完整的Http协议来完成 svn里面仓库的检出,checkin,
?
因为apche加载了svn.so,提供了一个纯Http协议的服务。
?
权限的配置
?
httpd.conf配置为
?
?
<Location /svn>
DAV svn
SVNParentPath /home/bard_cap/svn_data
AuthType Basic
AuthName "svn repos"
AuthUserFile /home/bard_cap/apache/bin/passwd.conf
AuthzSVNAccessFile /home/bard_cap/svn_data/control
Require valid-user
</Location>
?
control为:
?
?
[groups]
admin = wujiejie, dapao
other = look
[/]
@admin = rw
@other = r
?
这表示有两个用户,wujiejie,dapao为同一组,look为另外一组。
造用户还是用命令 ./htpasswd -c passwd.conf wujiejie
?
然后就是输入密码,追加一个用户。
?
./htpasswd ?passwd.conf kersh
?
?
eclipse SVN插件用户更改用户如下:
?
http://lovemitter.blog.163.com/blog/static/1657981342010101910934207/
?
为了实现精细化控制库
?
httpd.conf中的
<Location /svn>
DAV svn
SVNParentPath /home/bard_cap/svn_data
AuthType Basic
AuthName "svn repos"
AuthUserFile /home/bard_cap/apache/bin/passwd.conf
AuthzSVNAccessFile /home/bard_cap/svn_data/control
Require valid-user
</Location>
?
control可以这样写,并且同时用命令创造一个库,./svnadmin create /home/bard_cap/svn_data/world?创建一个库
admin = wujiejie, dapao
other = look, eva
[hello:/]
@admin = rw
[world:/]
@other = rw
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?