Chinaunix首页 | 论坛 | 博客
  • 博客访问: 339799
  • 博文数量: 79
  • 博客积分: 3053
  • 博客等级: 中校
  • 技术积分: 861
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-27 20:43
文章分类

全部博文(79)

文章存档

2012年(3)

2011年(21)

2010年(15)

2009年(40)

分类: LINUX

2010-01-21 00:48:03

环境:虚拟机redhat 5.4
版本:httpd-2.2.4 subversion-1.2.3

首先是用yum安装httpd,因为在编译subversion时无法指定 --with-apr --with-apr-util两个参数,
无法通过。所以用上面的版本编译安装

./configure --prefix=/usr/local/apache2 --with-mpm=worker
编译安装完成后启动httpd时出现错误:httpd: Syntax error on line 53 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_dav_svn.so into server: /usr/local/apache2/modules/mod_dav_svn.so: undefined symbol: dav_register_provider

有些帖子说是因为httpd没有配置正确的原因,试了下不能解决问题
考虑到在编译subversion时有指定--with-apr --with-apr-util两参数,可能是需要安装这两个包
1.
# tar zxvf apr-1.2.12.tar.gz
# cd apr-1.2.12
# ./configure
# make
# make install
2.
# tar zxvf apr-util-1.2.12.tar.gz
# cd apr-util-1.2.12
# . /configure --with-apr=/usr/local/apr
# make
# make install

3、安装apache
./configure --prefix=/usr/local/apache2 --enable-lib64 -libdir=/usr/lib64 -enable-dav --enable-modules=so --enable-maintainer-mode --enable-rewrite --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config --with-mpm=worker
注:在64位的虚拟机里安装apache,需要加上lib64的两个选项,而且需要把/usr/lib64/libexpat.so文件链接到/usr/lib下,要不可能会报错,同时也需要 --with-mpm=worker,可能也跟我没有用make clean清历史文件有关。之后直接make && make install安装完成

现在开始配置subversion
//创建仓库"test"
# ./svnadmin create /home/svnroot/repository/test
# cd /home/svnroot/repository/test
//看看是不是多了些文件,如果是则说明Subversion安装成功了
# ls –l
# cd /usr/local/subversion/bin
//这条语句将把路径/home/user/import下找到的文件导入到你创建的Subversion 仓库中去,
//提交后的修订版为1。
# ./svn import /home/user/import file:///home/svnroot/repository/test –m "注释"
//不让其他人有该目录的权限
# chmod 700 /home/svnroot/repository


vi /usr/local/apache2/conf/httpd.conf 
   //在最下面添加 
   LoadModule dav_svn_module modules/mod_dav_svn.so 
   LoadModule authz_svn_module modules/mod_authz_svn.so 
   svn
> 
   DAV svn 
   SVNParentPath /home/svnroot/repository/ //svn父目录 
   AuthzSVNAccessFile /home/svnroot/repository/authz.conf //权限配置文件 
   AuthType Basic //连接类型设置 
   AuthName "Subversion.zoneyump" //连接框提示 
   AuthUserFile /home/svnroot/repository/authfile //用户配置文件 
   Require valid-user //采用何种认证 
  
   //其中authfile是通过"htpasswd [–c] /home/svnroot/repository/authfile username password"来创建的 
   //"Require valid-user"告诉apache在authfile中所有的用户都可以访问。如果没有它,
   //则只能第一个用户可以访问新建库

重启apache

# ./usr/local/apache2/bin/apachectl restart

权限管理
1)增加用户

# htpasswd [-c] /home/svnroot/repository/authfile wooin
//第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码,完成对用户的增加
# htpasswd authfile 用户名(加入新的用户)

2)权限分配

# vi /home/svnroot/repository/authz.conf 
   [test:/] //这表示,仓库test的根目录下的访问权限 
   wooin = rw //test仓库wooin用户具有读和写权限 
   bao = r //test仓库bao用户具有读权限 
   [test2:/] //test2仓库根目录下的访问权限 
   wooin = r //wooin用户在test2仓库根目录下只有读权限 
   bao = //bao用户在 test2仓库根目录下无任何权限 
   [/] //这个表示在所有仓库的根目录下 
   * = r //这个表示对所有的用户都具有读权限 
   #[groups] //这个表示群组设置 
   #svn1-developers = wooin, bao //这个表示某群组里的成员 
   #svn2-developers = wooin 
   #[svn1:/] 
   #@svn1-developers = rw //如果在前面加上@符号,则表示这是个群组权限设置

将这个设置完成后。重启Apache,就可以通过 
svn/test 
这个URL来访问仓库了,当然,受权限的限制,必须是合法用户才能访问且具有相应的权限



error info:
Could not open the requested SVN filesystem
* Make sure SVNParentPath correct.
客户端无法提交文件
Can't open file "/opt/subversion/AT2/db/txn-current-lock" Permission denied
增加权限:chmod -R o+rw /opt/subversion/



常见错误:

1、svn: Not authorized to open root of edit operation

Subversion 有个小 bug ,当"anon-access=read"并且某个目录有被设置上"* ="标记,则会出现上述问题。实测中没有设"*="这种访问方式,用户名、密码、目录访问都正确设置也有同样的问题。当把 anon-access=read 改成 anon-access=none ,可以正常访问。
2、svn: '.' is not a working copy
当前的代码不是用svn co 拿出,所以不能同步到版本库里。
3、svn: Not authorized to open root of edit operation
没有正确配置授权文件,需配置库目录下的conf/authz、passwd、svnserve.conf三个文件,具体配置见上,注意svnserver.conf配置项不能有前置空格





svn的yum快速安装
yum install httpd
yum install subversion
yum install mod_dav_svn
安装完成
现在开始配置:

 1,创建版本库

  创建目录结构

 mkdir -p /etc/svn/repos

 repo SVN的根文件(/

2.运行创建版本库的命令,指定数据存储为 FSFS,如果要指定为 Berkeley DB,则将 fsfs 替换为 bdb
svnadmin create --fs-type fsfs /etc/svn/repos

3.创建的目录结构并导入项目:
mkdir -p /tmp/t/project/trunk
mkdir -p /tmp/t/project/branches
svn import /tmp/t file:///etc/svn/repos/ --message "init"
svnserve -d -r /etc/svn/   #启动服务
现在,应该可以通过TortoiseSVN checkout  svn://服务器IP/repo导出
修改svnserve.conf,打开匿名写权限,这样比较危险,不建议使用该功能
[general]
anon-access = write


配置apache 实现apache+svn的结构

1,第一步要给svn的源目录修改权限

chmod -R 0777 /etc/svn/repos/

chown -R apache:apache /etc/svn/repos/

apache http的启动用户

如果不修改会在web访问的时候出现:

Can't open file '/data/svn/develop/db/txn-current-lock': Permission denied

 

2,查看apache支持的模块是否指定vim /etc/httpd/conf/httpd.conf

添加

需要添加Location并且查看相应的模块

LoadModule dav_module modules/mod_dav.so

LoadModule dav_svn_module modules/mod_dav_svn.so

并添加相应的apache配置

  DAV svn

  SVNPath /etc/svn/repos

保存配置文件并启动apache

启动前先测试配置文件的有效性:

无错误启动apache


http.conf里添加功能authz的功能,确定已经加载authz模块

  DAV svn

  SVNPath /etc/svn/repos

  AuthType Basic

  AuthName "svn repos"

  AuthUserFile /etc/svn/passwordfile

  AuthzSVNAccessFile /etc/svn/accesspolicy

  Satisfy Any

  Require valid-user

  Order Deny,Allow

  Deny from all

AuthzSVNAccessFile 指向的是 authz 的策略文件,详细的权限控制可以在这个策略文件中指定,如:

在做策略的同时要给加入用户通过

htpasswd -c /etc/svn/passwordfile gp 

来创建用户,以下为用户权限的控制

#三个分组:comdevadmin

[groups]

com = wocao

dev = nima

admin = username

#在根目录下指定只有admin组用户有读权限

[/]

@admin = rw

[/project_online]

@admin= rw

@com = rw

[/project_test]

@admin = rw

@dev = rw

效果

wocao属于com组不能checkout根和project_test目录

只能checkout 所属的project_online目录

nima属于dev组不能checkout根和project_online目录

只能checkout 所属的project_test目录

Username属于admin能对所有目录进行checkoutcommit

如果出现错误“httpd: apr_sockaddr_info_get() failed for svn”

這個問題應該是沒有在 /etc/httpd/conf/httpd.conf 中設定 ServerName 所以它會用主機上的名稱來取代,首先會去找 /etc/hosts 中有沒有主機的定義,修改/etc/hosts中的主机名就可以解决
阅读(1303) | 评论(0) | 转发(0) |
0

上一篇:LAMP安装配置

下一篇:freeradius安装配置

给主人留下些什么吧!~~