Apache + svn 服务搭建

目录

前言

一、svn  简介

二、常见版本控制软件

2.1   git  分布式版本控制器

2.2   GitLab版本管理

三、SVN两种运行方式

四、SVN存储版本数据有2种方式

五、 svn 工作流程

5.1  SVN+Apache运行原理

六、实验步骤

6.1  关闭防火墙

6.2   安装svn服务 apache服务 和 mod_dav_svn 模块

6.3、hpptd:目录结构

6.4  创建  svn  仓库

6.4.1  创建仓库目录

6.4.2、创建svn版本库

6.4.3、修改用户、组权限

6.4.4、查看版本库

6.5  修改当前仓库的配置文件

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

6.7  重新启动httpd服务

6.8  建立本地访问控制文件

6.9  建立本地项目版本库,权限控制文件

6.10   浏览器测试访问效果

七、本机使用SVN

八、SVN客户端安装使用说明

 九、 svn图标代表含义

十、总结 


前言

SVN 是最流行的版本管理软件之一,可以为源码或者文档记录每次的修改记录,是开发团队协作必备的工具。
这篇文档,我们将讲解如何使用Apache来搭建SVN服务端,Linux服务器我们使用CentOS 7为例

一、svn  简介

SVN 是最流行的版本管理软件之一,可以为源码或者文档记录每次的修改记录,是开发团队协作必备的工具。svn是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion,简单来说SVN就是用于多个人共同开发同一个项目,共用资源的目的。SVN 版本控制系统, 在 2000 年由 CollabNet Inc 开发,现在发展成为 Apache 软件基金会的一个项目。如何使用Apache来搭建SVN服务端,Linux服务器我们使用CentOS 7为例。

二、常见版本控制软件

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

Svn  集中式版本控制器

2.1   git  分布式版本控制器

Git,Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds (林纳斯·托瓦兹)为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件

2.2   GitLab版本管理

GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找

三、SVN两种运行方式

模式1:svn单独运行   监听: 3690端口    访问: svn://IP

模式2: svn + apache   监听: 80 端口  访问: http://IP       

两种方式各有利弊,可以自行选择

四、SVN存储版本数据有2种方式

BDB  (一种事务安全型表类型)

FSFS  (一种不需要数据库的存储系统)。

因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点

五、 svn 工作流程

集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码,然

后开发,最后解决,提交。所有的版本信息都放在服务器上。如果脱离了服务器,开发者基本上可

以说是无法工作的

举例说明

开发开始新一天的工作

1、从服务器下载项目组最新代码。

2、进入自己的分支,进行工作,每隔一个小时向服务器自己的分支提交一次代码

(很多人都有这个习惯。因为有时候自己对代码改来改去,最后又想还原到前一个小时的版本,或者看看前一个小时自己修改了哪些代码,就需要这样做了)。

3、下班时间快到了,把自己的分支合并到服务器主分支上,一天的工作完成,并反映给服务器。

5.1  SVN+Apache运行原理

SVN搭配Apache的时候,Apache需要使用mod_dav_svn这个模块

运行机制:

在一台服务器上建立一个源代码库,库里可以存放许多不同项目的源程序。有源代码库管理员统一管理这些源程序。

每个用户在使用源代码库之前,首先要把源代码库里的项目文件下载到本地,然后开发人员可以在本地修改,然后用svn命令进行提交,由源代码库统一管理修改。

mod_dav_svn 可以让版本库通过http协议实现网站展现。

六、实验步骤

安装需要: svn服务器,apache, mod_dav_svn 软件包
# mod_dav_svn模块 : apache http 服务器的插件,可以让版本库通过http协议,在网站上展现。

6.1  关闭防火墙

systemctl stop firewalld
 setenforce 0

6.2   安装svn服务 apache服务 和 mod_dav_svn 模块

yum install httpd subversion mod_dav_svn -y

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

前往  /etc/httpd/modules/  下,检查是否包含mod_dav_svn.so和mod_authz_svn.so,如果有,mod_dav_svn安装成功。

开启 httpd 服务 

6.3、hpptd:目录结构

配置文件:/etc/httpd/conf/httpd.conf

其他配置:/etc/httpd/conf.d           --其他程序的配置文件,例如Subversion.conf

程序目录:/var/www/html

日志目录:/var/log/httpd

6.4  创建  svn  仓库

6.4.1  创建仓库目录

mkdir -p /var/www/svn-repos

6.4.2、创建svn版本库

cd svn-repos/
svnadmin create repo1

6.4.3、修改用户、组权限

chown -R apache:apache repo1/

6.4.4、查看版本库

conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等),也是我们要关注的配置文件

db目录:就是所有版本控制的数据存放文件

format文件:是一个文本文件,里面只放了一个整数。表示当前文件库配置的版本号

hooks目录:放置hook脚本文件的目录

locks目录:用来放置subversion监控锁定数据的目录,用来追踪存取文件库的客户端

dav目录:是提供apache与mod_dav_svn使用的目录,让他们存储内部数据,刚开始新建时此目录没有

6.5  修改当前仓库的配置文件

禁用匿名用户并开启验证用户权限

vim  /var/www/svn-repos/repo1/conf/svnserve.conf  

anon-access = none    #关闭匿名访问
auth-access = write     #验证用户可写
password-db = passwd  #指向验证用户名密码的数据文件 passwd
auth-db=authz         #指向验证用户的权限配置文件 authz

注意:此配置文件的所有内容必须顶格,否则会报错

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

httpd: 肯定是要安装的
Mod_dav_svn : 是一个模块 首先让SVN与apache 之间互联
SVN+Apache
SVN+Apache的需要subversion的两个动态库支持,同时我们需要密码的验证支持!
查看apache对svn模块的支持

vim /etc/httpd/conf.modules.d/10-subversion.conf

#有下面svn相关库,就证明安装成功

 修改svn配置文件

 vim /etc/httpd/conf.d/subversion.conf

<Location /svn-repos>
      DAV svn
       SVNParentPath /var/www/svn-repos
        AuthType Basic
        AuthName " hello SVN user wudan! "
        AuthUserFile /var/www/svn-repos/repo1/conf/passwd
        AuthzSVNAccessFile /var/www/svn-repos/repo1/conf/authz
        Require valid-user
</Location>

扩展:     配置文件里

SVNPath和SVNParentPath 的区别

  •                         SVNParentPath是在仓库目录的上一级
  •                         SVNPath就是在仓库的目录下
  •                         两个不同的参数

SVNParentPath /var/www/svn-repos
或者
SVNPath /var/www/svn-repos/repo1

两种访问的模式不一样,SVNParentPath就是访问地址/svn/后面要加仓库名称,而另外一个不用加,直接/svn/就是仓库了。

6.7  重新启动httpd服务

systemctl restart httpd

注:(重启时如果显示 Could not reliably determine the server's fully qualified domain name,则  vim /etc/httpd/conf/httpd.conf  , 加入 ServerName  localhost:80)

6.8  建立本地访问控制文件

使用htpasswd创建用户,首次创建用户。位置和subversion.conf里的一样,给第一个用户添加密码时要加c,意思是创建这个文件,以后就不用加了  。

 (后期通过httpd服务器访问svn时,会使用这个文件中的用户信息验证用户和密码。)

 cd /var/www/svn-repos/repo1/
cd conf/

(  执行添加用户命令必须在passwd文件所在的目录下执行,否则会另外创建一个passwd文件,之前的passwd文件和配置会失效)

htpasswd -cb passwd wud 123456###在命令行直接创建,改指令会 自动添加svn账号和加密的密码)

-c :  创建passwd文件,默认为MD5加密		
-b:在命令行中一并输入用户名和密码而不是根据提示输入密码

注意:#后期再创建时,就不需要加-c参数,否则,会把之前添加到/var/www/svn-repos/repo1/conf/passwd中信息,全部覆盖。

  	    #添加用户  
         htpasswd -b passwd 设置用户名 设置密码 
         #删除用户  
         htpasswd -D passwd user  
         #修改用户密码  
         htpasswd passwd user

6.9  建立本地项目版本库,权限控制文件

达到以下目标: 
用户       仓库                  权限

liy           repo1                rw

.....           repo2                r  ......

cd /var/www/svn-repos/repo1/
cd conf/
vim authz 
[/]
liy = rw

解释:
[/]			  #  表示在所有仓库的根目录下
liy = rw	  #  表示 liy 用户对所有仓库根目录下的软件版本库有rw权限

扩展:权限分配

 [groups]   			这个表示群组设置
 Admin=usr1,user2 		这个表示admin群组里的成员 user1,user2
Develop=u1, u2 		这个表示Develop群组里的成员 u1,u2
 [repo1:/] 				这表示,仓库repo1的根目录下的访问权限
 user1 = rw 			repo1仓库user1用户具有读和写权限
 user2 = r 			repo1仓库userl用户具只有读权限
 @develop=rw 		这表示 群 develop的成员都具有读写权限
  [/] 					这个表示在所有仓库的根目录下
  * = r 				这个表示对所有的用户都具有读权限
 注意:在编辑authz.conf文件时,所有行都必须要顶头写,不能有缩行出现,
否则会报错:"Access denied: 'user1' ",里面的内容可以根据自己的需要自行添加。

给目录授权,并重启httpd

 Linux系统配置文件/etc/sysconfig  修改指定仓库路径 

vim /etc/sysconfig/svnserve 

重启httpd服务和svn仓库服务

6.10   浏览器测试访问效果

七、本机使用SVN

现实中都是下载客户端

日常工作中我们使用SVN都是在图形化操作系统下使用,实际上图形化的操作在软件内部都是对应的命令。

import

将未版本化的文件纳入版本控制并提交

checkout

从版本库中检出

update

更新工作拷贝

add,delete,copy,move

增、删、复制、移动文件或目录

status

检查状态差异

diff

检查文件行级详细差异

revert

恢复

resolve

解决冲突

switch

切换工作拷贝对应的版本库分支

log

查看历史记录

list

显示文件目录

cat

查看某个文件内容

创建一个本地代码目录

svn import /home/daima/ file:///var/www/svn-repos/repo1 -m “first ”
将代码文件提交给svn仓库
-m “注释(随意写)”

八、SVN客户端安装使用说明

http://tortoisesvn.net/about.zh.html         #客户端下载地址 

下载完成后,直接就是双击运行,然后一直是下一步的进行安装就好了

 # 注: 下载 32 或者是 64 根据自己的操作系统来决定,我这里是安装的 64

此时你安装的是英文版,如果你需要汉化,则在下载页面继续往下滚动,找到如下图下载中文语言包

 安装完成客户端后,鼠标右击  

点击 “OK” 会提示你输入用户名和密码 

仓库更新(同步)

新建代码上传

在SVN目录右键这个源码文件

 输入注释,OK

打开网页端查看

 九、 svn图标代表含义

常规图标:当客户端文件和服务端文件完全同步时,显示以上图标

冲突图标:当客户端提交的文件和服务器端数据有冲突

 

 删除图标:当服务端数据已删除,客户端该文件显示以上图标

 

增加图标:当我们编写的文件添加到提交队列,系统自动显示

 

无版本控制图标:当我们编写的文件没有添加到上传队列时

修改图标:当有文件有修改但未提交

 只读图标:当客户端文件以只读形式存在时

 锁定图标:当服务端数据已锁定,客户端自动显示

 忽略图标:客户端文件已忽略,不需要进行提交上传

十、总结 

svn默认通过svn://访问,如果想要其通过http访问则需要依赖apache-httpdapache提供了mod_dav_svn组件,该组件可以让svn和apache关联简单来说SVN就是用于多个人共同开发同一个项目,共用资源的目的。SVN 版本控制系统, 在 2000 年由 CollabNet Inc 开发,现在发展成为 Apache 软件基金会的一个项目。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在CentOS上离线搭建SVN服务器,需要按照以下步骤进行操作: 1. 首先,在CentOS服务器上安装必要的软件包和依赖项。由于是离线环境,需要先将相关的软件包下载到一个可访问的计算机上,然后通过U盘或其他外部介质将它们传输到CentOS服务器上。在CentOS服务器上使用以下命令安装软件包: ``` rpm -ivh svn-server-rpm包 ``` 2. 创建一个用于存储SVN仓库的目录,并为其分配合适的权限: ``` mkdir /svn-repo chown -R apache.apache /svn-repo ``` 3. 初始化SVN仓库: ``` svnadmin create /svn-repo/myrepo ``` 4. 配置SVN服务。在`/etc/httpd/conf.d/`目录下创建一个新的配置文件,例如`svn.conf`,并添加以下内容: ``` # SVN 配置 <Location /svn> DAV svn SVNPath /svn-repo/myrepo </Location> ``` 5. 重启Apache服务以应用配置更改: ``` systemctl restart httpd ``` 6. 确保防火墙允许通过HTTP访问SVN服务。可以使用以下命令开放端口80: ``` firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --reload ``` 7. 完成上述步骤后,即可通过浏览器或相应的SVN客户端从其他计算机访问SVN仓库了。 请注意,这只是一个简单的离线搭建SVN服务器的示例步骤。实际操作中可能涉及到更多的细节和配置,具体的步骤可能会有所不同。建议根据自己的实际情况和需求进行相应的调整。 ### 回答2: 要离线搭建CentOS下的SVN服务器,需要以下步骤: 1. 下载SVN软件包:在网络连接正常的环境中,下载最新版本的Subversion软件包,并将其保存到本地或移动存储设备中。 2. 安装CentOS系统:在目标服务器上安装CentOS操作系统,确保操作系统的版本和架构与下载的软件包相匹配。 3. 安装Subversion:将下载的SVN软件包复制到目标服务器,解压并安装。执行相关的安装命令,如使用yum命令安装:sudo yum install subversion。 4. 创建SVN仓库:使用命令行工具,创建一个SVN仓库。在指定的目录中执行命令:svnadmin create /path/to/repository。 5. 配置访问权限:为SVN仓库设置访问权限,确保只有授权的用户可以访问。创建一个authz文件,用于配置用户和组的权限。编辑文件并添加相应的权限规则。 6. 配置SVN服务器:编辑svnserve.conf文件,配置SVN服务器的各项参数。例如,设置SVN服务器监听的端口、启用身份验证等。 7. 启动SVN服务器:执行启动命令,启动SVN服务器。例如,通过命令svnserve -d -r /path/to/repository启动并使其在后台运行。 8. 测试SVN服务器:使用SVN客户端工具,例如TortoiseSVN等,在另一台计算机上测试连接SVN服务器。尝试进行检出、更新和提交等操作,验证服务器是否正常工作。 通过以上步骤,就可以在CentOS服务器上离线搭建一个SVN版本控制系统。 ### 回答3: 要在CentOS上离线搭建SVN服务器,您需要按照以下步骤进行操作: 1. 安装CentOS:首先,确保您已经在离线环境中安装了CentOS操作系统。您可以使用官方的CentOS ISO镜像进行安装。 2. 安装SVN服务器软件:在离线环境中,您需要将SVN服务器软件的安装包下载到离线机器上。您可以从Subversion官方网站或其他可信的软件下载站点下载最新版本的SVN服务器软件安装包。将安装包复制到离线机器上,并使用命令行工具(如yum)安装。 3. 配置SVN服务器:一旦安装了SVN服务器软件,您需要进行相关配置。在离线环境中,您可以编辑SVN服务器的配置文件,通常是在/etc/httpd/conf.d目录下的svn.conf文件。您可以根据实际需求进行配置,如指定版本库的存储位置、访问控制等。 4. 创建SVN版本库:在SVN服务器上创建版本库以存储项目代码。您可以使用svnadmin命令创建版本库,如在命令行中运行"svnadmin create /path/to/repository"来创建名为repository的版本库。 5. 配置访问权限:为了保护SVN版本库中的代码,您需要为其设置访问权限。在离线环境中,您可以在每个项目的conf目录中的svnserve.conf文件中进行配置。通过编辑该文件,您可以控制用户及其对版本库的访问权限。 6. 启动SVN服务器:在离线环境中,您可以启动SVN服务器以便用户可以访问版本库。在命令行中运行"svnserve -d -r /path/to/repository"命令来启动SVN服务器,并将其绑定到指定的版本库路径。 这些步骤将帮助您在CentOS上离线搭建SVN服务器。需要注意的是,在离线环境中,您需要提前准备好所需的软件包及其依赖关系,并保存在本地供安装使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值