Linux教程

Linux-Centos7-下搭建svn服务器

本文主要是介绍Linux-Centos7-下搭建svn服务器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

svn是什么?

就是版本控制器,根据你的操作,记录你的代码更改和版本,方便以后的查询,出错还原和多人合作时等使用。

集中式管理的工作流程如下图:

集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码,然后开发,最后解决冲突,提交。所有的版本信息都放在服务器上。如果脱离了服务器,开发者基本上可以说是无法工作的。下面举例说明:

开始新一天的工作:

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

2、进入自己的分支,进行工作,每隔一个小时向服务器自己的分支提交一次代码(很多人都有这个习惯。因为有时候自己对代码改来改去,最后又想还原到前一个小时的版本,或者看看前一个小时自己修改了哪些代码,就需要这样做了)。

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

这就是经典的svn工作流程,从流程上看,有不少缺点,但也有优点。
缺点
1、服务器压力太大,数据库容量暴增。

2、如果不能连接到服务器上,基本上不可以工作,看上面第二步,如果服务器不能连接上,就不能提交,还原,对比等等。

3、不适合开源开发(开发人数非常非常多,但是Google app engine就是用svn的)。但是一般集中式管理的有非常明确的权限管理机制(例如分支访问限制),可以实现分层管理,从而很好的解决开发人数众多的问题。
优点
1、管理方便,逻辑明确,符合一般人思维习惯。

2、易于管理,集中式服务器更能保证安全性。

3、代码一致性非常高。

4、适合开发人数不多的项目开发。

5、大部分软件配置管理的大学教材都是使用svn和vss

 

svn工作流程图

 

 

 

 

 

第一步:通过yum命令安装svnserve,命令如下:

yum -y install subversion

此命令会全自动安装svn服务器相关服务和依赖,安装完成会自动停止命令运行

若需查看svn安装位置,可以用以下命令:

rpm -ql subversion

第二步:创建版本库目录(此仅为目录,为后面创建版本库提供存放位置)

选择在var路径下创建版本库,当前处于根目录下,一次性创建如下:

mkdir /var/svnrepos

第三步:创建svn版本库

在第二步建立的路径基础上,创建版本库,命令如下:

svnadmin create /var/svnrepos/xxxx  

 (xxxx为你预期的版本库名称,可自定义)

创建成功后,进入xxxx目录下

cd /var/svnrepos/xxxx

进入目录,可以看见如下文件信息:

复制代码
total 24
drwxr-xr-x 2 root root 4096 May  2 13:48 conf
drwxr-sr-x 6 root root 4096 May  2 13:48 db
-r--r--r-- 1 root root    2 May  2 13:48 format
drwxr-xr-x 2 root root 4096 May  2 13:48 hooks
drwxr-xr-x 2 root root 4096 May  2 13:48 locks
-rw-r--r-- 1 root root  229 May  2 13:48 README.txt

------------恢复内容开始------------

第一步:通过yum命令安装svnserve,命令如下:

yum -y install subversion

此命令会全自动安装svn服务器相关服务和依赖,安装完成会自动停止命令运行

若需查看svn安装位置,可以用以下命令:

rpm -ql subversion

第二步:创建版本库目录(此仅为目录,为后面创建版本库提供存放位置)

选择在var路径下创建版本库,当前处于根目录下,一次性创建如下:

mkdir /var/svnrepos

第三步:创建svn版本库

在第二步建立的路径基础上,创建版本库,命令如下:

svnadmin create /var/svnrepos/xxxx  

 (xxxx为你预期的版本库名称,可自定义)

创建成功后,进入xxxx目录下

cd /var/svnrepos/xxxx

进入目录,可以看见如下文件信息:

复制代码
total 24
drwxr-xr-x 2 root root 4096 May  2 13:48 conf
drwxr-sr-x 6 root root 4096 May  2 13:48 db
-r--r--r-- 1 root root    2 May  2 13:48 format
drwxr-xr-x 2 root root 4096 May  2 13:48 hooks
drwxr-xr-x 2 root root 4096 May  2 13:48 locks
-rw-r--r-- 1 root root  229 May  2 13:48 README.txt

第四步:配置修改

进入已经创建好的版本库目录下,也就是前文说创建的xxxx,进入conf

cd /var/svnrepos/xxxx/conf

conf目录下,一共存放三份重要的配置文件,如下:

total 12
-rw-r--r-- 1 root root 1080 May  2 13:48 authz
-rw-r--r-- 1 root root  309 May  2 13:48 passwd
-rw-r--r-- 1 root root 3090 May  2 13:48 svnserve.conf

authz:负责账号权限的管理,控制账号是否读写权限

passwd:负责账号和密码的用户名单管理

svnserve.conf:svn服务器配置文件

1.编辑 authz 文件(注意:[/]也是必须的)

 

 

[/]   表示根目录,即 /var/svnrepos

luo = rw  表示用户luo对根目录具有读写权限。

2.编辑 passwd 文件

 

 

如上所示,用户名为:luo,认证密码为:luo123456

3.编辑 svnserve.conf 文件(注意:配置的前面不能有空格,一定要顶格写)

 

 

anon-access = none:表示禁止匿名用户访问。

auth-access = write:表示授权用户拥有读写权限。

password-db = passswd:指定用户名口令文件,即 passwd 文件。

authz-db = authz:指定权限配置文件,即 authz 文件。

realm = /var/svnrepos:指定认证域,即 /var/svnrepos 目录。

第五步:防火墙开启(这里以iptable防火墻为例)

多数情况下服务器安装完成,配置完成后,无法连接svn服务器,均是防火墙问题【注意:如果是阿里云,腾讯云的服务器,还需在安全组添加端口开启规则】

vi /etc/sysconfig/iptables

添加配置信息

-A INPUT -p tcp -m state --state NEW -m tcp --dport 3690 -j ACCEPT

保存退出

systemctl restart iptables.service #重启防火墙使配置生效

六:启动svn服务器

svnserve -d -r /var/svnrepos

启动成功后,可用ps -aux查看服务启动是否成功

ps -ef | grep 'svnserve'

七:客户端访问svn服务器

在windows客户端,输入地址:svn://ip地址:3690/xxxx   (iP地址为你linux的ip,xxxx为前文创建的版本库名称,3690为svn默认端口)

弹出输入用户名和密码,输入即可访问

或者在linux服务器输入命令测试:

svn co svn://ip地址:3690/xxxx

如下为例子:

 

关闭SVN 方法:
这里采取linux杀死进程的方式处理的 
ps -ef|grep svnserve 
root      4967     1  0 Aug23 ?        00:00:00 svnserve -d -r repository/  
这里  kill -9 4967杀死进程, 此4967为进程号

 

遇到的问题小结:

问题1:执行svn命令:svn co svn://ip地址:3690/xxxx报错如下

这是因为修改svnserve.conf时,打开注释时,配置的前面有空格,应该顶格写。修改后即可

问题2:输入账号密码后,提示 svn: Authorization failed解决办法

把authz 文件 [/] 改为 [\] 试试

这篇关于Linux-Centos7-下搭建svn服务器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!