分类: 系统运维
2006-04-29 14:32:32
使用svn已有一段时间了,今天自己第一次在redhat AS4+apache上配,却不那么顺利..
1、编译安装源码包 apache2.2+subversion1.3.1
a、apache
./configure --prefix=/web/apache --enable-mods-shared=all make && make install |
b、subversion
./configure --with-apxs=/web/apache/bin/apxs --with-apr=/web/apache --with-apr-util=/web/apache make && make install |
提请注意的是:没有加上后面两个参数,服务器会出现500错误,apache的error_log显示如下:
Could not fetch resource information. [500, #0] Could not open the root of the repository [500, #22] Can't set position pointer in file '/web/www_root/svn/test/db/revs/0': Invalid argument [500, #22] |
2、修改httpd.conf
如没有,添加以下几句(一般编译后会自动修改)
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 |
以下这段开启svn的虚拟目录,可以放在某个虚拟主机配置段内
DAV svn #SVNPath "/web/svn/project1" #如果你想对每个项目单独配置,使用该项 SVNParentPath /web/svn #设定一个根,所有项目均放在此目录下 |
3、创建仓库
cd /web/svn svnadmin create project1 |
更改权限:改变/web/svn目录为apache运行用户有权写入
chmod -R 757 /web/svn |
4、控制存取权限 # 存取权限控制文件所在地 AuthzSVNAccessFile /etc/svn.access # 先尝试匿名操作,如有必要再转向用户认证 Satisfy Any Require valid-user #验证方式 AuthType Basic AuthName "tim's SVN" AuthUserFile /etc/svn.passwd
在
控制文件/etc/svn.access格式
[groups] AdminGroup = tim,stardust GuestGroup = guest [/project1] @AdminGroup = rw @GuestGroup = r |
密码文件/etc/svn.passwd使用htpasswd生成
/web/apache/bin/htpasswd -cbm /etc/svn.passwd username password |
5、问题及解决
a.服务器出现 HTTP 500错误,重编译subversion ,加上 --with-apr=/apache路径 及 --with-apr-util=/apache路径
b.客户端使用TSVN时出现 svn: PROPFIND of '/svn/project1': 301 Moved Permanently,修改httpd.conf,注释LoadModule dir_module
modules/mod_dir.so一行,类似错误还有可能是与mod_rewrite冲突,导致TSVN生成不识别的路径,修改相应的rewrite_rule即可
c.出现Can't create directory '/web/svn/projecct1/db/transactions/0-1.txn': Permission denied ,原因是权限不足,给相应目录加上
权限(chmod -R 757 /web/svn)
6、其它认证方式
可以采用多种其它方式的验证,以后再去试了
如:
SSL,mod_auth_sspi,mod_auth_mysql等