Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2026751
  • 博文数量: 433
  • 博客积分: 918
  • 博客等级: 准尉
  • 技术积分: 3218
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-24 18:21
个人简介

你是不是暗恋我,那就给我发个消息呀,让我知道o(∩∩)o

文章分类

全部博文(433)

分类: LINUX

2015-01-04 11:28:25


subversion 是基于 APR—Apache 可移植运行库构建的。APR 提供了 Subversion 需要的全部与操作系统相关的操作接口,如磁盘访问, 网络访问,内存管理等。这使得 Subversion 能够使用 Apache 作为其网络服务器程序之一,Subversion 对 APR 的依赖并不 意味着必须使用 Apache 作为它的网络服务器程序。APR是一个独立的程序库,任何应用程序都可以使用它。相反,它意味着 Subversion 能够在所有可运行 Apache 服务器的操作系统上运行,如 Windows, Linux, 各种 BSD, Mac OS X, Netware 等。

一、安装

Subversion的安装方式很多,本文采用最简单的方式安装。在 Subversion 的网站( )上通常可以找到由志愿者提供下载的程序包。

选择CentOS即可下载制作好的二进制文件,采用如下命令即可安装:

  1. Install Instructions:   
  2. # chmod +x svninstall_centos5_wandisco.sh  
  3. # ./svninstall_centos5_wandisco.sh  



安装的时候选择安装httpd,安装之后有如下提示:

  1. Installation complete.   
  2. You can find the subversion configuration file for apache HTTPD at /etc/httpd/conf.d/subversion.conf   
  3. By default, the modules are commented out in subversion.conf.   
  4. To enable the modules, please edit subversion.conf and remove the # infront of the LoadModule lines.   
  5. You should then restart httpd (/etc/init.d/httpd restart)  


Subversion的配置文件就在/etc/httpd/conf.d/subversion.conf,之后的配置工作也就围绕他进行了。

二、账号和权限文件配置

1.  创建账号密码文件 
htpasswd –c /svn/passwd.conf test
   输入密码,两次确认
  注意:第一次设置用户密码要加入 –c 这个参数,以后就可以不用了
2. 创建资料库
首先要创建一个资料库(我使用单资料库的方式),使用svnadmin增加资料库
  svnadmin create /svn/svnroot/icec
到icec下看是不是多了文件,多了就是说明创建成功
3.创建权限文件
  在icec目录的conf目录下,找到authz文件,复制到/svn目录下,重命名为authz.conf

  vi authz.conf

 
  1. [groups]            #组   
  2. Admin = test        #admin组成员   
  3. [icec:/]            #版本库icec的权限   
  4. @Admin = rw         #admin组有读写的权限   
  5. [telnet:/]   
  6. @Admin = rw   
  7. [/]   
  8. * = r               #svn父目录所有人都与读的权限  
注意:最后的[/]这个要设置好了,这里面的权限设置可以让你对icec和telnet的版本库有相同的权限,一般不要也行,个人建议不要


三、Subversion配置subversion.conf
1、模块加载

打开/etc/httpd/conf.d/subversion.conf,这个文件中的如下两行取消注释。
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

相应的so文件已经自动copy到了apache/modules。这些工作就不用自己动手了。

2、版本库配置

下面需要自己动手修改subversion.conf最后增加以下内容

  1. 单个版本库:   
  2.    #svn在访问的时候用到,http://ip/svn   
  3. DAV svn           #不用修改     
  4. SVNPath /svn/svnroot/icec   #资料库的绝对地址     
  5. AuthType Basic                            
  6. AuthName "Subversion repository"             
  7. AuthUserFile /svn/passwd.conf  #账号文件   
  8. AuthzSVNAccessFile /svn/authz.cong  #权限文件   
  9. Require valid-user   
  10.   
  11. 多个版本库:   
  12.   
  13. DAV svn   
  14. SVNListParentPath on               #这个是多版本特有的   
  15. SVNParentPath /svn/svnroot         #多版本库时的共同目录,与但版本的不同   
  16. AuthType Basic   
  17. AuthName " Subversion repository "  
  18. AuthUserFile /svn/passwd.conf      
  19. AuthzSVNAccessFile /svn/authz.conf   
  20. Require valid-user   
  21.   



3、注意事项

注意:
(1)单个版本库就是SVNPath /svn/svnroot/icec跟./svnadmin create /svn/svnroot/icec目录要一样,要不忙死你……【这个是对单个版本库】,多个版本库知道svn的主目录,我这就是 SVNParentPath /svn/svnroot
(2)AuthzSVNAccessFile是权限控制文件,单个版本库不需要,多个版本库要设置不同版本库的权限
(3)目录svnroot目录的权限设置成755


四、验证安装
打开浏览器,输入地址为http://服务器ip/svn
出现登陆窗口,输入用户名跟密码,

如果可以正常打开如上页面则说明安装配置正常,可以正常使用了,在页面上可以看到由于目前资料库中没有内容,因此看到的内容为空。

五、导入数据到资料库
Cd /usr/local/subversion/bin
./svn import /要导入的目录 file:///svn/svnroot -m “说明文字”
重新打开浏览器,输入地址http://服务器ip/svn,输入用户名密码。

安装配置就完成了。


六、可能遇到的问题

整个过程不会一帆风顺的,这里介绍一些可能遇到的问题。

1、【这个问题是我创建单个版本库时遇到的】安装好了后,浏览器打开http://服务器ip/svn,登陆出现不了页面,出现:

Could not open the requested SVN filesystem  
解决:这是httpd.conf里的中的SVNPath指向错误没指到创建的资料库

2、输入账号密码提示不能认证,查看Apache的/etc/httpd/logs/error_log,有如下提示:

[Tue Oct 05 18:07:09 2010] [error] [client 125.223.118.90] (13)Permission denied: Could not open password file: /svn/svnroot/passwd
[Tue Oct 05 18:07:09 2010] [error] [client 125.223.118.90] access to /svn failed, reason: verification of user id 'test' not configured

从日志看,因为检查过配置文件没有拼错,所以可以肯定是权限问题。从ls命令的结果可以看出,由于passwd的权限是没有问题的。
后来看了一位朋友的帖子【Linux环境下搭建Apache+subversion+svnmanager】的启发,可能是SELinux引发的问题,
于是执行命令:
chcon -R -h -t httpd_sys_content_t /svn/svnroot
后来还是不行。执行以下命令后搞定
chcon -R -h -t httpd_sys_content_t /svn

总结教训:还是linux不熟悉的原因造成的,我是linux的新手。看来得恶补linux的基本知识。

3、组(group)设置

在TortoiseSVN中做Commit操作时可能遇到如下错误:

Can't open file '/svn/svnroot/telnet/db/txn-current-lock': Permission denied

可以将telnet的所属组设置为apache

chgrp -R apache  /svn/svnroot/telnet

4、文件夹创建删除属性

在TortoiseSVN中做Commit操作时可能遇到如下错误:

Can't open '/svn/svnroot/telnet/db/tempfile.tmp': Permission denied

Can't make directory '/svn/svnroot/telnet/dav/activities.d': Permission denied

设置telnet 群组的访问方式为“创建和删除文件”

阅读(1938) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~