素材:
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