实战:使用SVN+apache搭建一个版本控制服务器

SVN简介

       SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。

SVN官网

afa6d47ea842c0a3c871f955b1a545fc82c.jpg

      SVN(subversion)是版本管理工具,是CVS的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。作为一个运维人员安装和配置SVN服务器和客户端是必须要掌握的内容。

 

运行方式

 

svn服务器有2种运行方式:独立服务器和借助apache运行。两种方式各有利弊,用户可以自行选择。

数据存储

 

svn存储版本数据也有2种方式:BDB(一种事务安全型表类型)和FSFS(一种不需要数据库的存储系统)。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。

优缺点

 

1 存储类型格式

CVS是个基于RCS文件的版本控制系统。每个CVS文件都不过是普通的文件,加上一些额外信息。这些文件会简单的重复本地文件的树结构。因此,不必担心有什么数据损失,如果必要的话可以手工修改RCS文件。

SVN是基于关系数据库的(BerkleyDB)或一系列二进制文件的(FS_FS)。一方面这解决了许多问题 (例如,并行读写共享文件)以及添加了许多新功能(例如运行时的事务特性。)。然而另一方面,数据存储由此变得不透明。

2 速度

CVS比较慢。

整体而言,由于架构实现的不同, SVN的确比CVS快很多。在网络上它只传输很少的信息并支持更多的离线模式的功能。但这也是有代价的。速度的代价就是巨大的存储(完全备份所有的工作文件)。

3 标志&分支

SVN采用标志和分支而抛弃了其他三件东西,实际上这意味着他们把这个概念替换为在档案库内部复制文件或目录以便保存日志。这样一来,无论标志创建还是分支创建都只是仓库内部的文件复制了。对分支而言:分支不过是在仓库内部的一个单独的目录而已了,不像早期还有些什么交错。对标志而言:已经不能对代码加标志了。在某种程度上说,SVN全文件编号补足了这个缺陷,SVN里整个仓库都有版本号,但不是针对单个文件。

4 元数据

CVS只允许存储文件。

SVN允许一个文件有任意多的可命名属性,功能十分完全。

5 文件类型

CVS最初是为文本文件存储而设计的。因此其他文件类型(二进制,统一码)文件的支持几乎没有,如需要的话则要有其他信息,并且客户端服务器端都要调整。

SVN会关心所有的文件类型,不需要你来手工操作。

 

常见版本控制软件:

Cvs           由于之前CVS编码的问题,现在大多数软件开发公司都使用SVN替代了CVS

Svn 

git           分布式版本控制器

 

SVN        服务器运行模式:

模式1:   svn服务器  监听: 3690端口                  访问: svn://IP

模式2:  svn 服务器+ apache   : 80 端口           访问: http://IP     今天要讲的

安装:     svn服务器,apache, mod_dav_svn 软件包

 

  svn服务器使用流程

98807d94d843034589f430e4860f2e881bd.jpg

 

实战:CentOS 6 上安装配置 svn server+apache

# yum install subversion  httpd  mod_dav_svn  -y

mod_dav_svn模块 : apache http 服务器的插件,可以让版本库通过http协议,在网站上展现。

 

创建版本库目录,并修改相应权限。

[root@localhsot ~]# mkdir /var/repos

 

创建两个项目仓库。 xuegod.cn和svn2

[root@localhsot ~]# svnadmin create /var/repos/xuegod.cn

[root@localhsot ~]# svnadmin create /var/repos/svn2

[root@localhsot ~]# ls /var/repos/xuegod.cn

conf  db  format  hooks  locks  README.txt

 

[root@localhost conf]#ls /var/repos/xuegod.cn/conf

authz  passwd  svnserve.conf

#注:用户权限配置我们使用apache的,这里暂时不用svn自带

 

启动:SVN服务器

[svn@localhsot conf]# svnserve -d -r /var/repos/

  -d表示以daemon方式(后台运行)运行

  -r  /var/repos指定svn根目录是/var/repos

 

[svn@localhsot conf]# ps -axu | grep svn

Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ

root      6982  0.0  0.0 161476  1924 pts/2    S    18:09   0:00 su - svn

svn       6983  0.0  0.0 108392  1864 pts/2    S    18:09   0:00 -bash

svn       7262  0.0  0.0 182760  1056 ?        Ss   18:26   0:00 svnserve -d -r /var/repos/

 

[svn@localhsot conf]# netstat -antup | grep 3690

(Not all processes could be identified, non-owned process info

 will not be shown, you would have to be root to see it all.)

tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN      7262/svnserve  

 

 

svn服务器搭建流程:

1、安装:  yum install subversion httpd mod_dav_svn

2、创建仓库存储代码: svnadmin create /var/repos/xuegod.cn

3、启动svn服务器:svnserve -d -r /var/repos/

 

APACHE

第一步,查看apache支持subversion两个动态库有没有安装成功。

查看:

[root@localhost conf]# vim /etc/httpd/conf.d/subversion.conf  #看到下面配置文件中两个模块相关信息,说明安装成功。

     LoadModule dav_svn_module     modules/mod_dav_svn.so

LoadModule authz_svn_module   modules/mod_authz_svn.so

 

配置apache通过mod_dav_svn模块访问SVN服务器

[root@localhost ~]# vim /etc/httpd/conf.d/subversion.conf

<Location /svn>

       DAV svn

       SVNParentPath /var/repos

        AuthType Basic

AuthName " SVN server of xuegod!"

   AuthUserFile /home/svn/passwd

        AuthzSVNAccessFile /home/svn/auth

        Require valid-user

</Location>

注释:

<Location /svn>    #apache的虚拟目录。后期通过链接:http://192.168.1.63/svn 来访问两个仓库:xuegod和svn2

       DAV svn

       SVNParentPath /var/repos                   #存放两个仓库:xuegod和svn2的真实目录

        AuthType Basic

        AuthName " SVN server of xuegod!"      #apache认证时弹出的消息

        AuthUserFile /home/svn/passwd              # passwd存储用户名和密码

        AuthzSVNAccessFile /home/svn/auth     #存放用户的权限

        Require valid-user

</Location>

 

建立本地访问控制文件/home/svn/passwd,#后期通过httpd服务器访问svn时,会使用这个文件中的用户信息验证用户和密码

 

[root@localhsot ~]# mkdir /home/svn

[root@localhsot ~]# htpasswd -c /home/svn/passwd  tube   

# -c create, 创建/home/svn/passwd文件。会提示你输入密码,默认是MD5加密

New password: 123456

Re-type new password:

Adding password for user tube

 

[root@localhost  ~]# htpasswd  /home/svn/passwd  cd   #后期再创建时,就不需要加-c参数,否则,会把之前添加到/home/svn/passwd中信息,全部覆盖。

New password: 123456

Re-type new password:123456

Adding password for user tree

 

查看用户名和密码:

[root@localhost  ~]# cat /home/svn/passwd

cd:sjplr6rMtpN3E

tube:gZEcmDnMwFsMc

注:tube和cd两个用户的明文密码都一样,但是加完密码以后是不一样。

 

加密时:  (密码+用户名 ) md5  -》  ll7IH3i5G0JfU

 

第四步,建立本地项目版本库,权限控制文件。

达到以下目标:

用户             仓库                  权限

tube            xuegod.cn,svn2     rw

cd               xuegod.cn            rw

 

[root@localhost  ~]# vim /home/svn/auth   #写入以下内容

[/]        

tube = rw   

[xuegod.cn:/]

cd = rw

 

解释:

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

tube = rw    #  表示tube用户对所有仓库根目录下的软件版本库有rm权限

[xuegod.cn:/]        #这表示,仓库xuegod.cn的根目录下的访问权限

cd= rw        # cd用户对xuegod.cn仓库具有读和写权限

 

给目录权限

[root@localhost conf.d]# chmod  777  /var/repos/ -R

 

[root@localhost ~]# service httpd restart

svn的访问地址是:       http://192.168.10.64/svn/xuegod.cn

7a97066cb9e72d17ffe7b52caf83a33d3aa.jpg

然后在浏览器上面,输入:192.168.168.140/svn

总结:配置apache+svn

1、修改配置文件:vim /etc/httpd/conf.d/subversion.conf  让apache可以支持svn

2、创建SVN用户和密码文件: /home/svn/passwd        htpasswd

3、创建SVN权限管理文件:/home/svn/auth

SVN客户端使用说明

subversion windows客户端TortoiseSVN配置:

http://tortoisesvn.net/about.zh.html

f54b05073d30ecb5ab89bb25ff83b33f04d.jpg

 

81c50fdcc2245d2838c7d83989243e5c659.jpg

新一个文件夹:localhost

取出版本为0的数据:

9de767b3bbfb99d7ca6106caee89c3bb26c.jpg

be32eeeb31cddcfce2c26fe855fd1b61fe0.jpg

 

14e478074f6ac3faabfa8114f29c3e9aa7a.jpg

 

上传代码:

随意保存一个网页,把网页源代码复制到目录localhost中,然后提交第一个网站代码:

f3cdc1561b44016dc2b5ccfb40304594dca.jpg

b5e98de3f50d9fc9096aa3dc531b2b7a8a8.jpg

ab5d02a3e1d4c2255f5780bc7665164db72.jpg

在浏览器里输入:192.168.168.140/svn/localhost

 

在Linux下测试客户端:

[root@localhost  ~]# svn checkout http://192.168.10.63/svn/xuegod.cn xuegod.cn

认证领域: <http://192.168.10.63:80>  SVN server of xuegod!

“root”的密码:

认证领域: <http://192.168.10.63:80>  SVN server of xuegod!

用户名: tube

“tube”的密码:

通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,

来避免再次出现此警告

 

保存未加密的密码(yes/no)?no

A    localhost .cn/salt主机地址密码.txt

A    localhost .cn/新建虚机需知.txt

取出版本 1。

[root@localhost ~]# cd localhost/

[root@localhost  localhost ]# ls

index.html  TortoiseSVN - About_files  TortoiseSVN - About.htm

 

转载于:https://my.oschina.net/u/3803405/blog/1830580

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值