最新消息:

SVN专题-SVN安装

Linux ipcpu 2937浏览

一、系统自带或者yum安装subversion

1.1 subversion系统自带版本

CentOS5为1.4版本,CentOS6为1.6版本,若此版本符合要求可以直接使用。

  1. [root@CentOS6 subversion-1.8.13]#rpm -qa |grep subversion
  2. subversion-1.6.11-10.el6_5.x86_64
  3. [root@CentOS5 ~]#rpm -qa |grep subv
  4. subversion-1.4.2-4.el5_3.1

二、手动编译subversion

2.1 先安装APR和APRUTIL

否则编译时会报错:
The Apache Portable Runtime (APR) library cannot be found.
configure: WARNING: APRUTIL not found

  1. cd apr-1.5.2
  2. ./configure --prefix=/usr/local/apr
  3. make && make install && echo ok
  4. #
  5. cd apr-util-1.5.4
  6. ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
  7. make && make install && echo ok

2.2 附加sqlite包,否则会报错

checking sqlite library version (via pkg-config)… no

  1. cd subversion-1.8.13
  2. wget http://www.sqlite.org/sqlite-amalgamation-3071501.zip
  3. unzip sqlite-amalgamation-3071501.zip
  4. mv sqlite-amalgamation-3071501 sqlite-amalgamation

2.3 编译subversion

  1. cd subversion-1.8.13
  2. ./configure --prefix=/usr/local/subversion --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/
  3. make && make install && echo ok

三、SVN简单使用

3.1 启动SVN,创建repo

  1. #创建svn主目录
  2. mkdir -p /www/svnroot
  3. #启动SVN程序
  4. svnserve -d -r /www/svnroot
  5. #创建repo
  6. cd /www/svnroot
  7. svnadmin create repo

3.2 修改配置文件

创建完repo后,我们发现生成的repo文件夹内有conf目录,里面有3个文件authz(权限),passwd(密码),svnserve.conf(配置)。

配置文件authz

  1. [groups]
  2. dev = user1,user2
  3. #两个用户,都在dev组里你可以增加多个组
  4. [repo:/] #这里是目录名字
  5. @dev = rw #dev组赋予读写权限

配置文件passwd

  1. [users]
  2. user1 = 123456
  3. user2 = 456789

配置文件svnserve.conf

  1. [general]
  2. anon-access = none # 不允许匿名用户
  3. auth-access = write # 认证用户给予可写
  4. password-db = passwd # passwd的认证方式
  5. authz-db = authz # 使用这个authz 权限文件

配置完毕后,就可以使用了

  1. svn co svn://192.168.1.222/repo
  2. svn add file
  3. svn up
  4. svn info
  5. svn commit -m "some fixes."

TIPS:
a. 当使用链接地址是svn://192.168.1.222/repos 这种方式时,表示采用了svnserve作为服务器,它是一种基于TCP/IP的访问方式,权限由SVN仓库的配置文件设置。

b. 当使用链接地址是http://192.168.1.222/repos 这种方式时,表示采用了Apache作为服务器,它是一种基于HTTP的访问方式,权限由Apache设置。

3.3 SVN Hooks (post-commit和pre-commit)

为了方便管理员控制提交的过程,SVN提供了hook机制。当特定的事件发生时,相应的hook会被调用。

最常用的是pre-commit和post-commit。

pre-commit可以对提交内容进行检查,例如限制上传rar文件,强制提交时必须加注释等。
post-commit可以在提交完毕后执行一些命令,例如ssh到服务器,对代码目录svn up,发送通知邮件等。

  1. #cat /home/svn/vip.ipcpu.com/hooks/post-commit
  2. #!/bin/sh
  3. svn up /home/htdocs/vip.ipcpu.com/

四、整合Apache

4.1 安装apache

  1. httpd-2.2.29
  2. ./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-dav --enable-so --enable-ssl --enable-deflate
  3. make && make install && echo ok

4.2 重新编译subversion(指定apxs)

  1. ./configure --prefix=/usr/local/subversion --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/ --with-apxs=/usr/local/apache/bin/apxs
  2. make && make install && echo ok
  3. #
  4. cp /usr/local/subversion/libexec/mod_* /usr/local/apache/modules/

4.3 配置apache

修改httpd.conf配置文件

  1. #增加
  2. LoadModule dav_svn_module /usr/local/apache/modules/mod_dav_svn.so
  3. LoadModule authz_svn_module /usr/local/apache/modules/mod_authz_svn.so
  4. #末尾追加
  5. NameVirtualHost *:80
  6. <VirtualHost *:80>
  7. ServerName svn.ipcpu.com
  8. <Location /ipcpusvn>
  9. #Order Deny,Allow
  10. #Deny from All
  11. #Allow from 127.0.0.1 10.0.0.0/255.0.0.0
  12. DAV svn
  13. SVNParentPath /home/svn
  14. AuthType Basic
  15. AuthName "hello!!"
  16. AuthUserFile /home/svn/passwd
  17. AuthzSVNAccessFile /home/svn/auth.conf
  18. Require valid-user
  19. </Location>
  20. </VirtualHost>

4.4 配置SVN用户认证

在apache的配置中我们指定了/home/svn/passwd 作为密码文件,/home/svn/auth.conf为授权文件。

生成用户名和密码

  1. htpasswd -b /home/svn/passwd USER PASSWORD

编写授权文件/home/svn/auth.conf

  1. [login.ipcpu.com:/]
  2. user01=rw

好了,接下来就可以使用HTTP方式访问SVN了。

五、SVN数据存储方式

在SVN中,版本库的数据存储有两种方式,一种是在 Berkeley DB数据库中存放数据;另一种是使用普通文件,采用自定义的格式来储存,称为 FSFS。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。

默认使用的存储方式也是FSFS方式。

六、参考文章

http://www.361way.com/subversion-apache-ldap/2863.html
http://blog.chinaunix.net/uid-26215986-id-3395374.html
http://www.cnblogs.com/see7di/archive/2013/08/03/3234048.html
http://blog.csdn.net/deepwishly/article/details/5366757
http://blog.x8128.com/svn1_6_fedora_20/

转载请注明:IPCPU-网络之路 » SVN专题-SVN安装