当前位置: > Linux服务器 > SVN >

ubuntu14.10下搭建svn服务器

时间:2016-05-20 20:36来源:linux.it.net.cn 作者:IT
1. 安装subversion

 
  1. $ sudo apt-get install subversion  

 
  1. # apt-get install subversion  
p.s. 如果你的系统是linux的其他发行版, 如云主机Amazon linux AMI, centos等 , 可通过 yum来安装, 如下:


 
  1. # yum install -y subversion  
剩下的配置与下面的大同小异了



2. 验证版本

 
  1. $ svn --version  
  2. $ svnserve --version  
具体操作信息如下:

 
  1. xx@ubuntu:~$ svnserve --version  
  2. svnserve,版本 1.8.10 (r1615264)  
  3. 编译于 Aug 21 2014,13:44:15 在 x86_64-pc-linux-gnu  
  4.   
  5. Copyright (C) 2014 The Apache Software Foundation.  
  6. This software consists of contributions made by many people;  
  7. see the NOTICE file for more information.  
  8. Subversion is open source software, see http://subversion.apache.org/  
  9.   
  10. 下列版本库后端(FS) 模块可用:  
  11.   
  12. * fs_fs : 模块与文本文件(FSFS)版本库一起工作。  
  13. * fs_base : 模块只能操作BDB版本库。  
  14.   
  15. Cyrus SASL 认证可用。  
  16.   
  17. xx@ubuntu:~$ svn --version  
  18. svn,版本 1.8.10 (r1615264)  
  19. 编译于 Aug 21 2014,13:44:15 在 x86_64-pc-linux-gnu  
  20.   
  21. Copyright (C) 2014 The Apache Software Foundation.  
  22. This software consists of contributions made by many people;  
  23. see the NOTICE file for more information.  
  24. Subversion is open source software, see http://subversion.apache.org/  
  25.   
  26. 可使用以下的版本库访问模块:  
  27.   
  28. * ra_svn : 使用 svn 网络协议访问版本库的模块。 - 使用 Cyrus SASL 认证  
  29. - 处理“svn”方案  
  30. * ra_local : 访问本地磁盘的版本库模块。  
  31. - 处理“file”方案  
  32. * ra_serf : Module for accessing a repository via WebDAV protocol using serf.  
  33. - using serf 1.3.7  
  34. - 处理“http”方案  
  35. - 处理“https”方案  
  36.   
  37. xx@ubuntu:~$  
3. 查看相关路径

 
  1. $ which svn  
  2. $ which svnserve  
4. 创建 svn工作区

$ sudo mkdir svn  




5. 创建svn版本库
在svn工作区根目录下, 创建版本库


$ sudo svnadmin create 版本库名  



创建完版本库后, 在版本库根目录下初始化文件, 如下

 
  1. xx@ubuntu:/var/svn/ets$ ls  
  2. conf  db  format  hooks  locks  README.txt  
  3. xx@ubuntu:/var/svn/ets$   
进入conf目录,在其目录下有以下文件:

 
  1. xx@ubuntu:/var/svn/ets$ cd conf/  
  2. xx@ubuntu:/var/svn/ets/conf$ ls  
  3. authz  hooks-env.tmpl  passwd  svnserve.conf  
  4. xx@ubuntu:/var/svn/ets/conf$   
(1) svnserve.conf:  svn服务配置文件
(2) passwd: 用户名口令文件
(3) authz: 权限配置文件
 
svnserve.conf 文件, 该文件配置项分为以下5项:
       (1) anon-access: 控制非鉴权用户访问版本库的权限。
       (2) auth-access:  控制鉴权用户访问版本库的权限。
       (3) password-db: 指定用户名口令文件名。
       (4) authz-db:指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。
       (5) realm:指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件
6. 配置passwd文件


$ sudo vim passwd  

 
  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.   
  6. [users]  
  7. # harry = harryssecret  
  8. # sally = sallyssecret  
  9. # 用户名 = 密码(口令)  
  10. admin = admin  
如上, 在passwd文件里添加 访问svn的用户名和密码











7. 配置authz文件




$ sudo vim authz  




 
  1. ### This file is an example authorization file for svnserve.  
  2. ### Its format is identical to that of mod_authz_svn authorization  
  3. ### files.  
  4. ### As shown below each section defines authorizations for the path and  
  5. ### (optional) repository specified by the section name.  
  6. ### The authorizations follow. An authorization line can refer to:  
  7. ###  - a single user,  
  8. ###  - a group of users defined in a special [groups] section,  
  9. ###  - an alias defined in a special [aliases] section,  
  10. ###  - all authenticated users, using the '$authenticated' token,  
  11. ###  - only anonymous users, using the '$anonymous' token,  
  12. ###  - anyone, using the '*' wildcard.  
  13. ###  
  14. ### A match can be inverted by prefixing the rule with '~'. Rules can  
  15. ### grant read ('r') access, read-write ('rw') access, or no access  
  16. ### ('').  
  17.   
  18. [aliases]  
  19. # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average  
  20.   
  21. [groups]  
  22. # harry_and_sally = harry,sally  
  23. # harry_sally_and_joe = harry,sally,&joe  
  24.   
  25. # [/foo/bar]  
  26. # harry = rw  
  27. # &joe = r  
  28. # * =  
  29. devteam = admin  
  30. # [repository:/baz/fuz]  
  31. # @harry_and_sally = rw  
  32. # * = r  
  33. [/]  
  34. @devteam = rw  
  35. * = r  




 
8. 配置svnserve.conf文件


$ sudo vim svnserve.conf  

 
  1. ### This file controls the configuration of the svnserve daemon, if you  
  2. ### use it to allow access to this repository.  (If you only allow  
  3. ### access through http: and/or file: URLs, then this file is  
  4. ### irrelevant.)  
  5.   
  6. ### Visit http://subversion.apache.org/ for more information.  
  7.   
  8. [general]  
  9. ### The anon-access and auth-access options control access to the  
  10. ### repository for unauthenticated (a.k.a. anonymous) users and  
  11. ### authenticated users, respectively.  
  12. ### Valid values are "write", "read", and "none".  
  13. ### Setting the value to "none" prohibits both reading and writing;  
  14. ### "read" allows read-only access, and "write" allows complete   
  15. ### read/write access to the repository.  
  16. ### The sample settings below are the defaults and specify that anonymous  
  17. ### users have read-only access to the repository, while authenticated  
  18. ### users have read and write access to the repository.  
  19. anon-access = read  
  20. auth-access = write  
  21. ### The password-db option controls the location of the password  
  22. ### database file.  Unless you specify a path starting with a /,  
  23. ### the file's location is relative to the directory containing  
  24. ### this configuration file.  
  25. ### If SASL is enabled (see below), this file will NOT be used.  
  26. ### Uncomment the line below to use the default password file.  
  27. password-db = passwd  
  28. ### The authz-db option controls the location of the authorization  
  29. ### rules for path-based access control.  Unless you specify a path  
  30. ### starting with a /, the file's location is relative to the  
  31. ### directory containing this file.  The specified path may be a  
  32. ### repository relative URL (^/) or an absolute file:// URL to a text  
  33. ### file in a Subversion repository.  If you don't specify an authz-db,  
  34. ### no path-based access control is done.  
  35. ### Uncomment the line below to use the default authorization file.  
  36. authz-db = authz  
  37. ### The groups-db option controls the location of the groups file.  
  38. ### Unless you specify a path starting with a /, the file's location is  
  39. ### relative to the directory containing this file.  The specified path  
  40. ### may be a repository relative URL (^/) or an absolute file:// URL to a  
  41. ### text file in a Subversion repository.  
  42. # groups-db = groups  
  43. ### This option specifies the authentication realm of the repository.  
  44. ### If two repositories have the same authentication realm, they should  
  45. ### have the same password database, and vice versa.  The default realm  
  46. ### is repository's uuid.  
  47. realm = ets  
  48. ### The force-username-case option causes svnserve to case-normalize  
  49. ### usernames before comparing them against the authorization rules in the  
  50. ### authz-db file configured above.  Valid values are "upper" (to upper-  
  51. ### case the usernames), "lower" (to lowercase the usernames), and  
  52. ### "none" (to compare usernames as-is without case conversion, which  
  53. ### is the default behavior).  
  54. # force-username-case = none  
  55. ### The hooks-env options specifies a path to the hook script environment   
  56. ### configuration file. This option overrides the per-repository default  
  57. ### and can be used to configure the hook script environment for multiple   
  58. ### repositories in a single file, if an absolute path is specified.  
  59. ### Unless you specify an absolute path, the file's location is relative  
  60. ### to the directory containing this file.  
  61. # hooks-env = hooks-env  
  62.   
  63. [sasl]  
  64. ### This option specifies whether you want to use the Cyrus SASL  
  65. ### library for authentication. Default is false.  
  66. ### This section will be ignored if svnserve is not built with Cyrus  
  67. ### SASL support; to check, run 'svnserve --version' and look for a line  
  68. ### reading 'Cyrus SASL authentication is available.'  
  69. # use-sasl = true  
  70. ### These options specify the desired strength of the security layer  
  71. ### that you want SASL to provide. 0 means no encryption, 1 means  
  72. ### integrity-checking only, values larger than 1 are correlated  
  73. ### to the effective key length for encryption (e.g. 128 means 128-bit  
  74. ### encryption). The values below are the defaults.  
  75. # min-encryption = 0  
  76. # max-encryption = 256  



 
其中, 将下面的项最前面的 # 去掉, 且前面置顶不留空格。
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
realm = 版本库名
9. 启动和停止svn服务
(1) 启动svn服务
回到svn工作区根目录,即版本库的所有目录


$ sudo svnserve -d -r 版本库名  
-d表示后台运行
-r 指定根目录是 版本库/





(2) 停止svn服务

停止svn的服务, 可以通过查找svn的进程并获知其PID, 再用kill -9 (pid)来强行杀掉svn服务进程。
查看svn服务是否启动:



$ lsof -i:3690  
$ ps -aux|grep svn  
$ ps -ef|grep svn  
具体操作如下:

 
  1. xx@ubuntu:/var/svn/ets/conf$ lsof -i:3690  
  2. COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME  
  3. svnserve 6231   xx    3u  IPv4  40745      0t0  TCP *:svn (LISTEN)  
  4. xx@ubuntu:/var/svn/ets/conf$ ps -aux|grep svn  
  5. xx         6231  0.0  0.1  73916  2552 ?        Ss   23:01   0:00 svnserve -d -r ets/  
  6. xx         6838  0.0  0.1  13676  2104 pts/1    R+   23:49   0:00 grep --color=auto svn  
  7. xx@ubuntu:/var/svn/ets/conf$ ps -ef|grep svn  
  8. xx         6231   2612  0 23:01 ?        00:00:00 svnserve -d -r ets/  
  9. xx         6841   3570  0 23:49 pts/1    00:00:00 grep --color=auto svn  
  10. xx@ubuntu:/var/svn/ets/conf$   



 
10. 访问svn版本库
版本库URL: svn://ip
如:svn://192.168.247.128
再输入在passwd文件配置的用户名和密码即可
windows下, 建议安装并使用tortoise svn客户端, 官网下载软件安装包和中文语言名安装即可 
 
 
p.s. 如果你在windows系统下安装了vmware workstation, 在vmware安装了虚拟机ubuntu, 且在ubuntu像以上搭建了svn服务器, 那在vmware的菜单可编辑虚拟网络, 使其在物理机win可访问虚拟机ubuntu, 则在虚拟机ubuntu下搭建的svn服务器, 在物理机win下, 通过tortoise svn客户端也可以访问虚拟机ubuntu里的svn远程版本库哦!!!



(责任编辑:IT)
------分隔线----------------------------