CentOS下的SVN服务器搭建过程以及分析

来源:互联网 发布:线切割编程基础知识 编辑:程序博客网 时间:2024/06/02 05:21

1.yum安装svn

[plain]view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. yum install -y subversion    

等待一会儿,显示下边的内容。

[plain]view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. Dependency Installed:  

  2.  gnutls.i686 0:2.8.5-10.el6_4.2               libproxy.i686 0:0.3.0-4.el6_3                    

  3.  libproxy-bin.i686 0:0.3.0-4.el6_3            libproxy-python.i686 0:0.3.0-4.el6_3            

  4.  neon.i686 0:0.29.3-3.el6_4                   pakchois.i686 0:0.4-3.2.el6                      

  5.  perl-URI.noarch 0:1.40-2.el6                  

  6. Complete!  

2.验证是否安装完成

[plain]view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. svnserve --version  

这是我的显示内容。


[plain]view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. svnserve,版本 1.6.11 (r934486)  

  2.   编译于 Apr 11 2013,17:28:04  

  3. 版权所有 (C) 2000-2009 CollabNet。  

  4. Subversion 是开放源代码软件,请参阅 http://subversion.tigris.org/ 站点。  

  5. 此产品包含由 CollabNet(http://www.Collab.Net/) 开发的软件。  

  6. 下列版本库后端(FS) 模块可用:  

  7. * fs_base : 模块只能操作BDB版本库。  

  8. * fs_fs : 模块与文本文件(FSFS)版本库一起工作。  

  9. Cyrus SASL 认证可用。  


3.创建svn版本库

[plain]view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. mkdir /var/svn #我这里把版本库放在了var目录下的svn文件夹,方便管理  

  2. svnadmin create /var/svn/repo0 #我这里将svn作为所有版本库的目录,并创建了一个名为repo0的版本库

4.配置当前的版本库

创建版本库后,在当前版本库目录中会生成下面的文件,其中我们关心的是配置文件。

[plain]view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. [root@localhost svn]# ls  

  2. repo0  

  3. [root@localhost svn]# cd repo0  

  4. [root@localhost repo0]# ls  

  5. conf  db  format  hooks  locks  README.txt  

  6. [root@localhost repo0]# pwd  

  7. /var/svn/repo0  

  8. [root@localhost repo0]# cd conf  

  9. [root@localhost conf]# ls -a  

  10. .  ..  authz  passwd  svnserve.conf  



说明

           (1)svnserve.conf:  svn服务综合配置文件。

           (2)passwd: 用户名口令文件。

           (3)authz: 权限配置文件。

4.1 修改passwd文件

[plain]view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. ### This file is an example password file for svnserve.  

  2. ### Its format is similar to that of svnserve.conf. As shown in the  

  3. ### example below it contains one section labelled [users].  

  4. ### The name and password for each user follow, one account per line.  

  5. [users]  

  6. # harry = harryssecret  

  7. # sally = sallyssecret  

  8. repouser0 = user0passwd  

  9. rock=rockpasswd  

注意::: repouser0 = user0passwd  开头不能有空格,否则会报错
其中对应的是 用户名=密码 ,其中等号两边的空格不是必须的。


4.2修改authz文件

[plain]view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. [aliases]  

  2. # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average  

  3. #这里实现了别名的定义  

  4. [groups]  

  5. # harry_and_sally = harry,sally  

  6. # harry_sally_and_joe = harry,sally,&joe  

  7. team0=erpouser0 #将上面创建的分成两个组  

  8. team1=rock  

  9. # [/foo/bar]  

  10. # harry = rw  

  11. # &joe = r #上面的别名定义在这里实现 &在这里理解为指针就很容易了  

  12. # * =  

  13. # [repository:/baz/fuz]  

  14. # @harry_and_sally = rw  

  15. # * = r  

  16. [repo0:/]  

  17. @team0=r  

  18. @team1=rw  

  19. # 第一个小组只有读取的权限,第二个小组有读写的权限  

  20. # 单个版本库的权限配置在这个文件中实现  



4.3 修改svnserve.conf

[plain]view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. vim svnserve.conf  

[plain]view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. [general]  

  2. ### These options control access to the repository for unauthenticated  

  3. ### and authenticated users.  Valid values are "write", "read",  

  4. ### and "none".  The sample settings below are the defaults.  

  5. anon-access = none #没有登录的用户不能访问  

  6. auth-access = write #登录的用户可以写入  

  7. ### The password-db option controls the location of the password  

  8. ### database file.  Unless you specify a path starting with a /,  

  9. ### the file's location is relative to the directory containing  

  10. ### this configuration file.  

  11. ### If SASL is enabled (see below), this file will NOT be used.  

  12. ### Uncomment the line below to use the default password file.  

  13. password-db = passwd #密码文件为当前目录下的passwd  

  14. ### The authz-db option controls the location of the authorization  

  15. ### rules for path-based access control.  Unless you specify a path  

  16. ### starting with a /, the file's location is relative to the the  

  17. ### directory containing this file.  If you don't specify an  

  18. ### authz-db, no path-based access control is done.  

  19. ### Uncomment the line below to use the default authorization file.  

  20. authz-db = authz #验证文件为当前目录下的authz  


5 停止和启动svn


5.1启动svn


[plain]view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. svnserve -d -r /var/svn/  


5.2关闭svn


[plain]view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. ps -aux |grep svn  

  2. kill -9 进程id  


6 导入工程



[plain]view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. $ mkdir MyProject    

  2. $ mkdir MyProject/trunk    

  3. $ mkdir MyProject/branches    

  4. $ mkdir MyProject/tags    

  5. svn import MyProject svn://192.168.1.109/repo0/MyProject -m "first import project"  



7导出工程


[plain]view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. svn co svn://192.168.1.109/repo0/MyProject  



8 总结

在互联网如此发达的今天,几乎你想要找什么技术文章都能找到,但是,你会发现,完全一样【标点都一样】的文章,出现在大大小小的网站,在想找到第二篇不同视点的文章,太难了。拿来主义很疯狂,我们这些技术人员需要的,更是创新。开源精神,从我做起。写技术博客,更多的是多自己的一种修行,一种提高,实践是最好的老师。




并通过http访问


原来的svn://访问方式不变,只要在/var/svn/ 下添加 conf文件夹 ,在conf下添加下面所说的 pwd.conf 和authz.conf,这是给 http://访问的,原来的不受影响。

安装:

  1. 安装svn,一般情况下,选择yum方式安装还是比较简单的。

[root@moshi ~]# yum -y install mod_dav_svn#会自动安装mod_dav_svn及其依赖包:mod_dav_svn-1.6.11-9,neon-0.29.3-2,pakchois-0.4-3.2,subversion-1.6.11-9

直接安装这个就能把svn服务器直接KO了。

2.安装httpd

[root@moshi ~]# yum -y install httpd

一般情况下,linux服务器是有httpd服务的,你可以检查下,如果没有则安装。

检查方法:

[root@moshi ~]# vi /etc/httpd/conf.d/subversion.conf

安装完svn后看是否有该目录&文件,如果存在则不需要安装httpd了。

3.安装完SVN,接下来就是配置了。

配置:

1、配置svn仓库

#创建svn目录[root@moshi ~]# mkdir -p /home/svn/repos1  #仓库1[root@moshi ~]# mkdir -p /home/svn/repos2  #仓库2#可以任意配置,任意指定你喜欢的目录#建立svn版本库[root@moshi ~]# svnadmin create /home/svn/repos1[root@moshi ~]# svnadmin create /home/svn/repos2#有多少个仓库就执行多少次该命令,只需要换最后的名字即可

2、修改SVN版本库配置文件

[root@moshi ~]# vi /home/svn/repos1/conf/svnserve.conf

修改文件结果如下:

[general]anon-access = none    auth-access = writepassword-db = /home/svn/conf/pwd.conf    #指向用户配置文件authz-db = /home/svn/conf/authz.conf     #指向权限配置文件realm = repos1                           #指向svn仓库地址

备注:其他仓库配置和该配置相同,只需要修改仓库路径。

3.配置svn用户和权限

[root@moshi ~]# vim /home/svn/conf/pwd.cof[root@moshi ~]# vim /home/svn/conf/authz.conf#这是2个步骤,我这里为更好的阅读,写在一起1.配置用户由于这个配置是我自定义的,所以要先vim创建该文件,也可以用其他方式创建。[root@moshi ~]# vim /home/svn/conf/pwd.conf#保存退出[root@moshi ~]# htpasswd -c /home/svn/conf/pwd.conf admin#根据提示输入密码,第一个用户才需要加-c,后面的用户不需要-c[root@moshi ~]# htpasswd /home/svn/conf/pwd.conf test[root@moshi ~]# vi /home/svn/conf/pwd.conf在用户最上方加上[users]

加上[users]这一步是很重要的,因为用htpasswd的方式加用户会覆盖掉[users],所以每次加完用户需要回去补一下该节点

2.配置权限[root@moshi ~]# vim /home/svn/conf/authz.conf文件内容如下:[groups]admin=user1,user2test=user3[/]@admin=rw[repos1:/]user3=r

解释:[groups]为组定义,可以在该组下加很多用户,以,分割,

但是该用户数据必须在/homd/svn/conf/pwd.conf中定义好,

[/]表示根目录以下的权限定义

[repos1:/]表示仓库下的权限定义

如果要分项目,则以此规则类推:

如:[repos1:/aaa]则表示仓库下的aaa项目的权限定义。

@admin 表示admin这个组下的用户权限。

user1=r 表示user1这个用户的权限。

权限类型:r,w,rw 分别表示只读,只写,读写如果是user1= 这种空情况则表示没有

OK,到此svn配置完成。我们可以把默认的配置文件删除。

[root@moshi ~]# rm -rf /home/svn/repos1/conf/passwd[root@moshi ~]# rm -rf /home/svn/repos2/conf/authz##多个仓库则删除多个仓库对应的文件即可

4.建立启动svn的用户

[root@moshi ~]# useradd svn                    #如果提示svn账户已存在,则执行以下命令[root@moshi ~]# passwd svn                     ##根据提示修改下密码,不能过于简单,可使用常用密码[root@moshi ~]# chown -R svn:svn /home/svn/    ##允许用户svn访问版本库[root@moshi ~]# chmod –R o+rw /home/svn        ##解决windows检出提交提示/home/svn/db/txn-current-lock’错误

5.配置svn的端口

[root@moshi ~]# vi /etc/httpd/conf/httpd.conf

找到

#Listen 12.34.56.78:80这一行,

Listen 9999  ##9999就是svn的端口,默认是80,你可以修改成你自己想要的。不建议使用默认80端口

5.配置httpd

[root@moshi ~]# vi /etc/httpd/conf.d/subversion.conf

修改文件内容为:

<Location /svn>

    DAV svn

    SVNListParentPath on

    SVNParentPath /home/svn

    AuthType Basic

    AuthName "Authorization"

    AuthUserFile /home/svn/conf/pwd.conf                    ##对应你的用户配置文件

    AuthzSVNAccessFile /home/svn/conf/authz.conf      ##对应你的权限配置文件

    Require valid-user

</Location>

保存退出!

重启httpd服务。

[root@moshi ~]service httpd restart停止 httpd:                                               [确定]正在启动 httpd:                                           [确定]

出现以上字样,表名httpd的配置已经成功启动成功。

6.启动svn

[root@moshi ~]# svnserve -d -r /home/svn/

7.查看svn服务是否正常

[root@moshi ~]# ps aux|grep svn##出现以下内容说明svn服务已经成功启动root      8610  0.0  0.0 152864   740 ?        Ss   11:25   0:00 svnserve -d -r /home/svn/repos1/root     13128  0.0  0.0 103252   876 pts/0    S+   14:00   0:00 grep svn

8.进入浏览器访问。

在浏览器中输入:服务器Ip+端口+httpd配置中的<Location /svn>。

如:http://192.168.1.1:9999/svn

会提示你输入用户名密码。


9.总结

嗯,没啥太多总结,这些内容都是我从网上综合多个帖子试验出来的结果,希望能给你一些帮助。




友情链接

http://www.cnblogs.com/b028/archive/2010/07/23/1867311.html

http://www.aiezu.com/system/linux/linux_centos_yum_apache_svn.html











0 0
原创粉丝点击