文档章节

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

寰宇01
 寰宇01
发布于 06/14 23:04
字数 2128
阅读 44
收藏 1

SVN简介

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

SVN官网

      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服务器使用流程

 

实战: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

然后在浏览器上面,输入: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

 

新一个文件夹:localhost

取出版本为0的数据:

 

 

上传代码:

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

在浏览器里输入: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

 

© 著作权归作者所有

共有 人打赏支持
上一篇: Nagios
寰宇01
粉丝 7
博文 277
码字总数 698979
作品 0
南京
程序员
私信 提问
SVN+Apache服务器搭建

SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。也是就是CVS的接...

D杀手D
2017/12/08
0
0
Apache+SVN构建代码仓库平台

很多同学对SVN+Apache整合很少头疼,今天整理了一版Apache+SVN整合的文档,希望能帮助到大家! SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系...

wgkgood
2017/02/21
0
0
SVN如何实现CA认证?

各位大侠,我用SVN+apache做了个SSL的服务器,但并没有用到CA认证,我想给每个用户发一个证书,使用SVN下载版本内容时,要先登录用户名,密码,还要有CA认证才允许操作,不知怎么设置? 谢谢...

肖琦
2010/07/13
479
2
svn+apache 服务搭建

一、 需要的软件包: apr:apr-1.3.18 apr-util-1.3.19 apache:httpd-2.2.14 svn:subversion-1.6.17.tar.gz subversion-deps-1.6.17.tar.gz 二、 安装和配置步骤: 1、安装httpd-2.2.14 tar ......

学海有涯
2012/07/13
0
0
使用 Jenkins 构建 Coding 项目 (资源)

Jenkins简介 Jenkins是一种跨平台的持续集成和交付的应用软件,它便于不断稳定地交付新的软件版本,并提高你的工作效率。这款开发运维工具还让开发人员更容易把项目的变化整合起来,并使用大...

寰宇01
04/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

微信小程序 用canvas绘制的图插入到分享中

用canvas绘制图 createNewImg: function () {var that = this;var ctx = wx.createCanvasContext('mycanvas');ctx.setFillStyle("#F4F4F4");// context.setFillStyle("#fff")ctx.fillRe......

潇潇程序缘
7分钟前
0
0
公司报表数据库优化

报表系统优化 背景: 11.22早晨 刚放下背包,收到一份邮件,邮件意思是公司报表数据库慢,让我帮忙看看。邮件还附带了一个SQL文本,指出这个SQL慢。随后电话了开发人员了解事情来龙去脉,原来...

hnairdb
7分钟前
0
0
javascript代码技巧

1、var gt = window.showgt || (windows.showgt="abc");

gtandsn
11分钟前
0
0
TiDB EcoSystem Tools 原理解读(一):TiDB-Binlog 架构演进与实现原理

简介 TiDB-Binlog 组件用于收集 TiDB 的 binlog,并提供实时备份和同步功能。该组件在功能上类似于 MySQL 的主从复制,MySQL 的主从复制依赖于记录的 binlog 文件,TiDB-Binlog 组件也是如此...

TiDB
27分钟前
1
0
Confluence 6 文档主题合并问答

在 Confluence 官方 前期发布的消息 中,文档主题在 Confluence 6.0 及其后续版本中已经不可用。我们知道你可能对这个有很多好好奇的问题,因此我们在这里设置了一个问答用于帮助你将这个主题...

honeymose
30分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部