文档章节

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

寰宇01
 寰宇01
发布于 06/14 23:04
字数 2128
阅读 12
收藏 1
点赞 0
评论 0

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

 

© 著作权归作者所有

共有 人打赏支持
寰宇01
粉丝 4
博文 193
码字总数 377158
作品 0
南京
程序员
SVN+Apache服务器搭建

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

D杀手D ⋅ 2017/12/08 ⋅ 0

Apache+SVN构建代码仓库平台

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

wgkgood ⋅ 2017/02/21 ⋅ 0

SVN如何实现CA认证?

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

肖琦 ⋅ 2010/07/13 ⋅ 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

OpenStack学习教程

OpenStack 定义 来自于维基百科的定义: OpenStack是一个美国国家航空航天局和Rackspace合作研发的云计算软件,以Apache授权条款授权,并且是一个自由软件和开放源代码项目。 来自于 openst...

实验楼 ⋅ 2017/11/08 ⋅ 0

服务器下有iis的情况下,如何安装svn?

我有个万网的服务器,2003 64位的,里面装的是iis+php,iis下是公司的网站,占用80端口,我想在这个服务器上安装一个svn,但网上都是svn+Apache的,刚接触svn,不是很懂,如果这种情况如何安...

oldlei ⋅ 2013/03/29 ⋅ 4

使用docker镜像搭建svn+Apache环境

环境准备 虚拟机装好之后,按照官网步骤检查虚拟机内核版本,必须在3.10以上版本,故此处安装redhat_7.2 # uname -r3.10.0-327.el7.x86_64 安装docker: yum install docker-io 有依赖是直接...

丫丫的 ⋅ 2016/03/15 ⋅ 0

应用软件学习总结(包括监控,自动化运维工具,WEB服务等)

应用软件学习总结 目录 版本控制系统 SVN部署及使用 Git从入门到熟悉 监控系统 一健安装Zabbix 自动化运维工具 Ansible自动化运维工具安装及使用 VPN专线 PPTP服务器端部署到客户端连接使用 ...

yht_1990 ⋅ 2016/07/19 ⋅ 0

Esp8266学习之旅④ 了解PWM,更为深入地用PWM控制一盏LED的亮度变化。(附带demo)

欢迎来到物联网智能家居顶量级别wifi模块Esp8266学习之旅。 本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时...

xh870189248 ⋅ 2017/10/11 ⋅ 0

Jenkins实战演练之安全管理

【前提】 通过《Jenkins实战演练之Windows服务器快速搭建》(http://my.oschina.net/iware/blog/191818)和《Jenkins实战演练之Linux服务器快速搭建》(http://my.oschina.net/iware/blog/19...

woneiware ⋅ 2014/01/09 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Linux中的端口大全

1 被LANA定义的端口 端口 名称 描述 1 tcpmux TCP 端口服务多路复用 5 rje 远程作业入口 7 echo Echo 服务 9 discard 用于连接测试的空服务 11 systat 用于列举连接了的端口的系统状态 13 d...

寰宇01 ⋅ 14分钟前 ⋅ 0

Confluence 6 如何备份存储文件和页面信息

备份的 ZIP 文件包含有 entities.xml,这个 XML 文件包含有 Confluence 的所有页面内容和存储附件的目录。 备份 Zip 文件结构 页面的附件是存储在附件存储目录中的,通过页面和附件 ID 进行识...

honeymose ⋅ 17分钟前 ⋅ 0

【每天一个JQuery特效】根据状态确定是否滑入或滑出被选元素

主要效果: 本文主要采用slideToggle()方法实现以一行代码同时实现以展开或收缩的方式显示或隐藏被选元素。 主要代码如下: <!DOCTYPE html><html><head><meta charset="UTF-8">...

Rhymo-Wu ⋅ 21分钟前 ⋅ 0

度量.net framework 迁移到.net core的工作量

把现有的.net framework程序迁移到.net core上,是一个非常复杂的工作,特别是一些API在两个平台上还不能同时支持。两个类库的差异性,通过人工很难识别全。好在微软的工程师们考虑到了我们顾...

李朝强 ⋅ 26分钟前 ⋅ 0

请不要在“微服务”的狂热中迷失自我!

微服务在过去几年一直是一个非常热门的话题(附录1)。何为“微服务的疯狂”,举个例子: 众所周知,Netflix在DevOps上的表现非常棒。Netfix可以做微服务。因此:如果我做微服务,我也将非常...

harries ⋅ 27分钟前 ⋅ 0

oAuth2 升级Spring Cloud Finchley.RELEASE踩坑分享

背景 6.19号,spring团队发布了期待已久的 Spring Cloud Finchley.RELEASE 版本。 重要变化: 基于Spring Boot 2.0.X 不兼容 Spring Boot 1.5.X 期间踩过几个坑,分享出来给大伙,主要是关于...

冷冷gg ⋅ 57分钟前 ⋅ 0

OSChina 周一乱弹 —— 理发师小姐姐的魔法

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @冰冰棒- :分享田馥甄的单曲《My Love》 《My Love》- 田馥甄 手机党少年们想听歌,请使劲儿戳(这里) @Li-Wang :哎,头发又长了。。。又要...

小小编辑 ⋅ 今天 ⋅ 8

Kafka1.0.X_消费者API详解2

偏移量由消费者管理 kafka Consumer Api还提供了自己存储offset的功能,将offset和data做到原子性,可以让消费具有Exactly Once 的语义,比kafka默认的At-least Once更强大 消费者从指定分区...

特拉仔 ⋅ 今天 ⋅ 0

NEO智能合约之发布和升级(二)

接NEO智能合约之发布和升级(一),我们接下来说说智能合约的升级功能。 一 准备工作 合约的升级需要在合约内预先设置好升级接口,以方便在升级时调用。接下来我们对NEO智能合约之发布和升级...

红烧飞鱼 ⋅ 今天 ⋅ 0

个人博客的运营模式能否学习TMALL天猫质量为上?

心情随笔|个人博客的运营模式能否学习TMALL天猫质量为上? 中国的互联网已经发展了很多年了,记得在十年前,个人博客十分流行,大量的人都在写博客,而且质量还不错,很多高质量的文章都是在...

原创小博客 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部