Linux系统下SVN的安装

Posted Love馨蕊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统下SVN的安装相关的知识,希望对你有一定的参考价值。

 

  1. SVN简介

Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库 (repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。

  1. SVN中的一些概念 :

(1)       repository(源代码库)

源代码统一存放的地方

(2)       Checkout (提取)

当你手上没有源代码的时候,你需要从repository checkout一份

(3)       Commit (提交)

当你已经修改了代码,你就需要Commit到repository

(4)       Update (更新)

当你已经Checkout了一份源代码, Update一下你就可以和Repository上的源代码同步,你手上的代码就会有最新的变更 

  1. 客户端软件

(1)       Windows下常用的客户端软件常用TortoiseSVN。它是一个免费的开源的客户端。 下载地址:http://tortoisesvn.net/downloads.html

(2)       像Myeclipse,也有一些SVN的插件。

  1. 服务端软件安装

subversion服务器是不需要apache的,但是可以使用apache,视具体情况来选择。
1、如果只要通过file://或svn://来访问,则不需要apache,只安装svn即可,使用svnserve来作为服务。

2、如果你要建立一个可以通过http://或https://来访问的版本库服务器,则你需要使用apache。

(1)通过yum的方式安装不支持apache的SVN服务器

安装SVN软件

[[email protected] ~]# yum -y install subversion

验证安装的版本:

[[email protected] ~]# svnserve --version

svnserve, version 1.6.11 (r934486)

compiled Mar  6 2014, 10:49:10

创建SVN版本库目录

[[email protected] /]# mkdir -p /var/svn/svnrepos

创建版本库

[[email protected] /]# svnadmin create /var/svn/svnrepos

执行上面的命令以后,会在/var/svn/svnrepos目录下生成如下文件:

[[email protected] /]# cd /var/svn/svnrepos/

[[email protected] svnrepos]# ls -l

total 24

drwxr-xr-x. 2 root root 4096 Jul 25 16:39 conf

drwxr-sr-x. 6 root root 4096 Jul 25 16:52 db

-r--r--r--. 1 root root    2 Jul 25 16:24 format

drwxr-xr-x. 2 root root 4096 Jul 25 16:24 hooks

drwxr-xr-x. 2 root root 4096 Jul 25 16:24 locks

-rw-r--r--. 1 root root  229 Jul 25 16:24 README.txt

[[email protected] conf]# pwd

/var/svn/svnrepos/conf

[[email protected] conf]# ls

authz  passwd  svnserve.conf

其中conf文件夹下面有3个文件,作用分别是

Svnserve.conf        svn服务配置文件

Passwd                  用户名口令文件

Authz                    权限配置文件

svnserve.conf 文件, 该文件配置项分为以下5项:

anon-access: 控制非鉴权用户访问版本库的权限。

auth-access:  控制鉴权用户访问版本库的权限。

password-db: 指定用户名口令文件名。

authz-db:指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。

realm:指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件

vi svnserve.conf

打开下面的几个注释:

anon-access = read #匿名用户可读

auth-access = write #授权用户可写

password-db = passwd #使用哪个文件作为账号文件

authz-db = authz #使用哪个文件作为权限文件

realm = /var/svn/svnrepos # 认证空间名,版本库所在目录

 

passwd文件用于设置账号和密码

在[users]块中添加用户和密码,格式:帐号=密码,如czb=czb

vi passwd

[users]

# harry = harryssecret

# sally = sallyssecret

czb=czb

authz文件用于设置权限

vi authz

[/]

czb=rw

意思是czb用户对根目录/有读写的权限.

 

启动svn版本库

svnserve –d –r /var/svn/svnrepos

(2)通过源码的方式安装支持apache的SVN服务器

 本测试服务器系统为:centos 6.5 x86_64 ip:192.168.137.138

 软件包如下:

apr-1.5.1.tar.gz

apr-util-1.5.3.tar.gz

httpd-2.2.27.tar.gz

subversion-1.7.17.tar.gz

1. 安装相关的安装包

[[email protected] ~]# yum -y install gcc openssl openssl-devel zlib zlib-devel

2. 安装apr-1.5.1

[[email protected] ~]# tar zxvf apr-1.5.1.tar.gz

[[email protected] ~]# cd apr-1.5.1

[[email protected] apr-1.5.1]# ./configure

[[email protected] apr-1.5.1]# make && make install

[[email protected] apr-1.5.1]# cd ..

3. 安装apr-util-1.5.3

[[email protected] ~]# tar zxvf apr-util-1.5.3.tar.gz

[[email protected] ~]# cd apr-util-1.5.3

[[email protected] apr-util-1.5.3]# ./configure --with-apr=/usr/local/apr/

[[email protected] apr-util-1.5.3]# make && make install

[[email protected] apr-util-1.5.3]# cd ..

4. 安装httpd-2.2.27

[[email protected] ~]# tar zxvf httpd-2.2.27.tar.gz

[[email protected] ~]# cd httpd-2.2.27

[[email protected] httpd-2.2.27]# ./configure \

--prefix=/usr/local/apache \

--with-apr=/usr/local/apr/bin/apr-1-config \

--with-apr-util=/usr/local/apr/bin/apu-1-config \

--enable-modules=so \

--enable-dav \

--enable-maintainer-mode \

--enable-rewrite

[[email protected] httpd-2.2.27]# make && make install

5. 安装subversion-1.7.17

[[email protected] ~]# tar zxvf subversion-1.7.17.tar.gz

[[email protected] ~]# cd subversion-1.7.17

[[email protected] subversion-1.7.17]# ./configure \

--prefix=/usr/local/svn \

--with-apxs=/usr/local/apache/bin/apxs \

--with-apr=/usr/local/apr/bin/apr-1-config \

--with-apr-util=/usr/local/apr/bin/apu-1-config \

--with-ssl \

--with-zlib \

--enable-maintainer-mode

[[email protected] subversion-1.7.17]# make && make install

确认是否安装成功

[[email protected] subversion-1.7.17]# /usr/local/svn/bin/svnserve --version

svnserve, version 1.7.17 (r1591372)

compiled Jul 25 2014, 22:49:59

查看模块是否安装成功

[[email protected] modules]# ls /usr/local/apache/modules/

httpd.exp  mod_authz_svn.so  mod_dav_svn.so  mod_dontdothat.so

6. 建立版本库

[[email protected] ~]# mkdir -p /svn/project/www

[[email protected] ~]# /usr/local/svn/bin/svnadmin create /svn/project/www

查看是否建立成功

[[email protected] ~]# ls /svn/project/www/

conf  db  format  hooks  locks  README.txt

7. 修改/svn/project

[[email protected] ~]#chown -R apache:apache /svn/project

8. 配置apache支持svn

[[email protected] ~]# vi /usr/local/apache/conf/httpd.conf

最后添加如下代码:

<Location /svn>

DAV svn

SVNParentPath /svn/project

AuthType Basic

AuthName "Hello welcome to here"

AuthUserFile /svn/passwd

AuthzSVNAccessFile /svn/auth.conf

Require valid-user

</Location>

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

 

User daemon

Group daemon

修改为

User apache

Group apache

添加

#ServerName www.example.com:80

ServerName 192.168.137.138:80  #此ip为服务器IP地址

启动apache

[[email protected] ~]# /usr/local/apache/bin/apachectl -k  start

打开浏览器访问http://192.168.137.138/svn/www 会提示输入用户名密码

9. 配置svn权限配置(authz.conf的配置)

1)     添加用户:

[[email protected] ~]# /usr/local/apache/bin/htpasswd -c /svn/passwd czb

New password:

Re-type new password:

Adding password for user czb

此次建立了一个账号为czb,密码也为czb的账号

第二次添加用户可以不加参数-c

[[email protected] ~]# /usr/local/apache/bin/htpasswd  /svn/passwd test

New password:

Re-type new password:

Adding password for user test

建立了一个账号test,密码也为test的账号

2)        权限分配:

[[email protected] ~]# vi /svn/auth.conf

[groups]   /*这个表示群组设置

Admin=czb,test   /*这个表示admin群组里的成员 czb,test

Develop=u1,u2   /*这个表示Develop群组里的成员 u1,u2

[www:/]         /*这表示,仓库www的根目录下的访问权限

czb = rw         /*www仓库czb用户具有读和写权限

test = r          /* www仓库test用户具只有读权限

@develop=rw    /*这表示 群 develop的成员都具有读写权限

 

[/] /*这个表示在所有仓库的根目录下

 * = r /*这个表示对所有的用户都具有读权限

注意:在编辑authz.conf文件时,所有行都必须要顶头写,不能有缩行出现,否则会报错:"Access denied: ‘‘czb‘‘ ",里面的内容可以根据自己的需要自行添加

10. 重启apache服务和启动svn服务

重启apache服务

[[email protected] ~]# /usr/local/apache/bin/apachectl -k restart

启动svn服务

[[email protected] ~]# /usr/local/svn/bin/svnserve -d -r /svn/project/www

 

       


以上是关于Linux系统下SVN的安装的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统下的SVN搭建

linux下安装svn服务器

linux下安装svn

Linux系统下实现SVN + Apache + SSL服务器框架的架设

SVN服务端的安装搭建(Linux)

linux下如何启动svn客户端