Linux服务器上搭建svn服务器sever

Linux服务器上搭建svn服务器

背景
项目开发中需要版本控制,而我们经常使用的是在windows系统上搭建svn服务器,下面介绍在Linux系统(CentOs)上搭建svn服务器。

1. 使用yum安装svn
使用yum安装svn,命令如下:
yum -y install subversion
在这里插入图片描述

安装完成之后,验证安装结果

2. 新建仓库目录
在/opt目录下面创建一个svn目录,用来作为svn存储目录,命令如下:

mkdir  /opt/svn

在这里插入图片描述

3. 创建一个测试仓库
执行如下命令,创建一个仓库
svnadmin create /opt/svn/test/
在这里插入图片描述
进入仓库目录下,查看仓库的文件,命令:
cd /opt/svn/test/ #进入仓库目录
ls #展示仓库文件
在这里插入图片描述

关于仓库文件的说明:

hooks目录:放置hook脚步文件的目录
locks目录:用来放置subversion的db锁文件和db_logs锁文件的目录,用来追踪存取文件库的客户端
format目录:是一个文本文件,里边只放了一个整数,表示当前文件库配置的版本号
conf目录:是这个仓库配置文件(仓库用户访问账户,权限)

4. 配置SVN服务的配置文件svnserver.conf
进入到conf文件夹下面,编辑svnserver.conf文件,命令如下:

cd conf
ls
vim svnserver.conf

执行命令
在svnserver.conf文件中,anon-access前面的注释去掉,将对应的值设置为none,将auth-access前面的注释也去掉,将password-db前面的注释也去掉,还有将authz-db前面的注释也去掉,显示如下:
在这里插入图片描述
最重要的一点,去掉注释之后,配置项前面不能有空格。

5. 配置访问的用户及密码
编辑passwd文件,在文件的末尾加上自己需要添加的用户名和密码,显示如图:

在这里插入图片描述

注意:用户和密码都是明文显示的

6. 配置新用户的授权访问的文件
编辑authz文件,在该文件中追加如下内容:
在这里插入图片描述
[/]
flytzuhan=rw
编辑授权文件

7. 启动svn服务
执行如下命令:

svnserve -d -r /opt/svn/

其中-d表示后台运行, -r指定根目录,这里需要注意:绝对不能将启动命令写成:svnserve -d -r /opt/svn/test/

还有启动的时候可能会出现如下错误:
在这里插入图片描述启动svn服务失败
这个是由于已经启动了SVN服务,所以需要先关闭进程,重新启动即可,命令如下:

killall svnserve
svnserve -d -r /opt/svn/

在这里插入图片描述

启动svn服务成功

8. windows系统拉取代码

可以在图形化界面中输入,svn://111.231.137.11/svn/test拉取代码
在这里插入图片描述

扩展
服务端命令

  1. svnserver - 控制svn系统服务的启动等

  2. svnadmin - 版本库的创建/导出/导入/删除等

  3. svnlook - 查看版本库的信息等

客户端命令

  1. svn - 版本库的检出/更新/提交/重定向等

创建版本库

  1. svnadmin create /www/version_test_1;

  2. cd /www; svnadmin create version_test_2;

注意:如果 cd /www/version_test_1; svnadmin create version_test_2 会抛出异常(svnadmin: E165002: ‘/www/version_test_1/version_test_2’ is a subdirectory of an existing repository rooted at ‘/www/version_test_1’),故不能再已有版本库里面再次创建版本库。

  1. 指定版本库数据保存类型: svnadmin create --fs-type fsfs(数据保存类型,还可以指定dbd) xxxx(版本库名称),如果想了解fsfs和dbd的区别可以自行百度,这里不过多阐述;推荐使用fsfs数据保存类型;

删除版本库

  1. rm -rvf /www/version_test_1;使用linux自带的命令把整个版本库删除即可;

版本库配置

配置文件位于: /www/version_test_2/conf/

存在三个文件分别是:

1. authz – 配置用户组以及用户组权限

2. passwd – 配置用户名和密码

3. svnserve.conf – 配置默认权限、权限配置文件及密码配置文件

svnserve.conf 文件
在19行: anon-access = read || write || none,表示没有用户名和密码的用户访问该版本库怎么操作

在20行: auth-access = write || read || none,表示通过用户名和密码的用户访问该版本库怎么操作

上述 read、write 、none 意思:

  1. read 指允许更新代码

  2. write 指允许更新代码,也允许提交代码

  3. none 指什么都干不了

在27行: password-db = passwd,表示指定用户名和密码的文件路径(既支持相对路径,又支持绝对路径)

在58行: authz-db = authz,表示指定权限分组的文件路径(既支持相对路径,又支持绝对路径)

vim authz:

1 ### This file is an example authorization file for svnserve.
2 ### Its format is identical to that of mod_authz_svn authorization
3 ### files.
4 ### As shown below each section defines authorizations for the path and
5 ### (optional) repository specified by the section name.
6 ### The authorizations follow. An authorization line can refer to:
7 ###  - a single user,
8 ###  - a group of users defined in a special [groups] section,
9 ###  - an alias defined in a special [aliases] section,
10 ###  - all authenticated users, using the '$authenticated' token,
11 ###  - only anonymous users, using the '$anonymous' token,
12 ###  - anyone, using the '*' wildcard.
13 ###
14 ### A match can be inverted by prefixing the rule with '~'. Rules can
15 ### grant read ('r') access, read-write ('rw') access, or no access
16 ### ('').
17 
18 [aliases]
19 # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
20 
21 [groups]
22 # harry_and_sally = harry,sally
23 # harry_sally_and_joe = harry,sally,&joe
24 
25 # [/foo/bar]
26 # harry = rw
27 # &joe = r
28 # * =
29 
30 # [repository:/baz/fuz]
31 # @harry_and_sally = rw
32 # * = r

在18行:别名配置

在21行:用户组配置,格式是(组名 = 用户1,用户2,…,用户n)

示例:

[groups]
产品经理组
pm = jiangbo
#开发人员组
dev = zhangsan,wangwu
#菜鸟组
rookie = lisi

在25行:表示版本库的目录,例如 [/] 表示版本库的根目录,[/foo/bar] 表示版本库根目录下的 foo 文件夹下面的 bar 文件夹

示例:

[/]
#表示项目径路组有更新和提交的权限
@pm = rw
#表示开发组只有更新的权限
@dev = r
 表示 李四 这个用户自由更新的权限
lisi = r

在30行:表示repository版本库下目录,例如 [repository:/] 表示repository版本库的根目录,[repository:/baz/fuz] 表示repository版本库目录下的 baz 文件夹下面的 fuz 文件夹

示例:

[version_test_n:/]
 表示该版本库下面所有用户都有更新和提交的权限
* = rw

:wq 保存退出即可。

多项目管理配置方案

常见 SVN 管理多项目

# 步骤1: 创建svn多项目管理配置文件目录
mkdir /var/svn
# 步骤2: 创建svn配置文件目录
mkdir /var/svn/svnconfig
# 步骤3: 创建第一个项目
svnadmin create /var/svn/pigeonfan
# 步骤3: 创建第二个项目
svnadmin create /var/svn/mall
# 步骤3: 创建第三个项目
svnadmin create /var/svn/hardware
# 步骤4: 拷贝任意一个项目conf文件目录下所有文件至svn配置文件目录
cp /var/svn/pigeonfan/conf/* /var/svn/svnconfig/
# 步骤5: 删除svn配置文件目录的svnserve.conf
rm -f svnserve.conf
# 步骤6: 修改/var/svn/svnconfig/passwd文件
# 步骤7: 修改/var/svn/svnconfig/authz文件
# [groups]
# admin_group=admin
# [pigeonfan:/]
# @admin_group=rw
# *=
# [mall:/]
# @admin_group=rw
# *=
# [hardware:/]
# @admin_group=rw
# *=
vim /var/svn/svnconfig/authz
# 步骤8: 修改pigeonfan、mall、hardware下面的svnserve.conf,统一修改成
# anon-access = none
# auth-access = write
# password-db = /var/svn/svnconfig/passwd
# authz-db = /var/svn/svnconfig/authz
# 建议修改一个进行覆盖替换即可
# cp -f /var/svn/pigeonfan/svnserve.conf /var/svn/mall/svnserve.conf
# cp -f /var/svn/pigeonfan/svnserve.conf /var/svn/hardware/svnserve.conf
vim /var/svn/pigeonfan/svnserve.conf
vim /var/svn/mall/svnserve.conf
vim /var/svn/hardware/svnserve.conf
# 步骤9: 重启svn服务器
svnserve -d -r /var/svn
 如果继续添加版本库或者后续工作需要添加版本库,请按下面步骤操作就OK了:

### 如果后续有需要继续添加更多版本库的话
# 步骤1: 创建一个新的版本库
svnadmin create /var/svn/newrule
# 步骤2: 复制覆盖掉新的版本库中的svnserve.conf文件
cp /var/svn/pigeonfan/conf/svnserve.conf /var/svn/newrule/conf/svnserve.conf
# 步骤3: 将/var/svn/svnconfig/authz文件添加权限
# [newrule:/]
# @admin_group = rw
# * =

链接:https://www.jianshu.com/p/e7037e010635

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值