Svn

12.1 安装准备

  • 创建挂载映射目录并授权
<h1 id='h11'>请根据规划各服务器规划创建相应目录</h1>
mkdir -p /data/svn/repo
<h1 id='h12'>仓库给予权限为777,否则在svnadmin无法创建目录</h1>
chmod 777 /data/svn/repo
  • 拉取最新镜像
<h1 id='h13'>拉取</h1>
docker pull elleflorio/svn-server
...
Status: Downloaded newer image for elleflorio/svn-server:latest
docker.io/elleflorio/svn-server:latest
<h1 id='h14'>查看镜像</h1>
[root@iZwz9cqybaj4etacydj3zrZ svn]# docker images
REPOSITORY              TAG       IMAGE ID       CREATED        SIZE
elleflorio/svn-server   latest    b8cc2d411214   2 months ago   49.7MB

12.2 运行部署

步骤一:获取配置文件

  • 创建样例容器,目的是获取初始配置文件
docker run --privileged=true -d --name svn-server -p 8011:80 -p 3690:3690  elleflorio/svn-server
  • 复制容器svn相关配置文件或目录至宿主机
docker cp svn-server:/etc/subversion /data/svn
docker cp svn-server:/etc/apache2 /data/svn
<h1 id='h15'>查看</h1>
[root@iZwz9cqybaj4etacydj3zrZ svn]# pwd
/data/svn
[root@iZwz9cqybaj4etacydj3zrZ svn]# ls
apache2  repo  subversion
<h1 id='h16'></h1>
[root@iZwz9cqybaj4etacydj3zrZ svn]# cd subversion/
[root@iZwz9cqybaj4etacydj3zrZ subversion]# ls
passwd  subversion-access-control
  • 说明

passwd 该文件存储的是账号密码,该账号密码用于登录web页面的。不是后续创建的svn仓库授权的账号密码,切记

subversion-access-control 该文件控制的是passwd文件存在的用户在web页面访问仓库时的权限。

  • 删除样例容器
<h1 id='h17'>样例容器已经发挥完它的作用,可以干掉</h1>
docker stop svn-server
docker rm svn-server

步骤二:正式创建svn-server容器应用

  • 先修改apache配置文件
<h1 id='h18'>进入apache的映射目录下</h1>
[root@iZwz9cqybaj4etacydj3zrZ apache2]# pwd
/data/svn/apache2
<h1 id='h19'>修改以下信息</h1>
vi httpd.conf
#ServerName www.example.com:80  宿主机IP即可,8011端口是最终web应用访问端口,请实现规划好别冲突
ServerName 47.119.149.229:8011
  • 创建正式容器
docker run --privileged=true -d --restart always --name svn-server -p 8011:80 -p 3691:3690 
  -v /data/svn/repo:/home/svn 
  -v /data/svn/subversion/subversion-access-control:/etc/subversion/subversion-access-control  
  -v /data/svn/subversion/passwd:/etc/subversion/passwd  
  -v /data/svn/apache2:/etc/apache2 
  elleflorio/svn-server
  • 重要参数说明

--privileged=true 授予容器管理员权限,预防创建svn创库时提示权限不足

--restart always 设置容器随宿主机开机自启

-p 8011:80 web访问端口

-p 3691:3690 svn服务端口

  • 验证是否启动成功
<h1 id='h110'>查看日志,有以下信息则表示启动成功</h1>
[root@iZwz9cqybaj4etacydj3zrZ subversion]# docker logs svn-server
[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
...
[services.d] starting services
[services.d] done.
  • 开放防火墙,以下有2种方式。请根据情况设置

    • 普通方式
    firewall-cmd --zone=public --add-port=8011/tcp --permanent
    firewall-cmd --zone=public --add-port=3691/tcp --permanent
    • 阿里云设置

12.3 web访问及配置

步骤一:web页面配置管理

  • 访问链接
<h1 id='h111'>验证是否部署成功</h1>
http://xxx.xxx.xxx.xxx:8011
<h1 id='h112'>开始初始配置</h1>
http://xxx.xxx.xxx.xxx:8011/svnadmin
  • 注意这里对应的都是容器内的路径
/etc/subversion/subversion-access-control
/etc/subversion/passwd
/home/svn
/usr/bin/svn
/usr/bin/svnadmin
  • 最后点击"Save configuration" 保存提交,会出现以下界面
  • 注意这里是web端登陆的超级管理员账号密码 admin / admin 登陆进去后务必修改。
  • 这里修改密码为: Svnweb@zyb2021
  • 登陆按钮下面的国旗图标指的是登陆后界面文字显示为对应国家语言,当然进去后右上角也课可以设置语言

12.4 仓库实现实战-NO1

  • 任务:创建运维人员信息发布的专用仓库
  • 仓库名称:OperationReleaseCenter

12.4.1 仓库创建

方式一:web页面创建

  • 路径:"代码仓库" > 添加"
  • 出现以下提示表示创建成功
  • 创建的仓库实例如下

方式二:命令行方式创建仓库

  • 说明:需要进入容器
  • 补充:既然选择了这个镜像,就是希望在页面操作。所以能在界面操作配置的避免用命令行方式操作
<h1 id='h113'>进入容器</h1>
docker exec -it svn-server /bin/sh    
<h1 id='h114'>执行创建仓库命令</h1>
svnadmin create /home/svn/OperationReleaseCenter
<h1 id='h115'>进入仓库存放目录查看</h1>
/ # cd /home/svn/
/home/svn # ls
OperationReleaseCenter

12.4.2 配置仓库权限

  • 说明:方式一或方式二都需要配置此步骤

  • 提示:进入容器修改或者直接修改映射目录对应的文件均可

步骤一:创建账号密码

  • 创建操作此仓库的账号密码,这里是进到容器中修改
<h1 id='h116'>进入仓库目录</h1>
/home/svn/OperationReleaseCenter # ls
README.txt  conf        db          format      hooks       locks
/home/svn/OperationReleaseCenter # vi conf/passwd
<h1 id='h117'>格式 用户名 = 密码</h1>
[users]
 hkf = hkf@zyb2021     
 hhz = hhz@zyb2021    
 cxd = cxd@zyb2021
 hzz = hzz@zyb2021

步骤二:配置访问路径权限

  • 这一步是配置账号能访问仓库的路径
<h1 id='h118'>修改以下配置文件</h1>
/home/svn/OperationReleaseCenter # vi conf/authz
<h1 id='h119'>多用户且需要给的权限相同的情况下可以加入同一组</h1>
[groups]
 admin = hkf,hhz,cxd,hzz       
<h1 id='h120'>统一为这个组成员授权</h1>
 [/]        
 @admin = rw
  • 重要说明

[/] 表示授权对象可以访问此仓库所以目录路径,代表最高权限。

@admin 表示为组成员对象授权,如果是单个对象换成用户名即可

步骤三:编辑svnserve.conf

  • 修改或新增以下信息
#以下操作完成后
/home/svn/OperationReleaseCenter # vi conf/svnserve.conf
[general]
anon-access = none        匿名用户无权限操作
auth-access = write       授权用户可写
password-db = passwd      密码文件路径,相当于当前目录
authz-db = authz          授权文件
realm = /home/svn/OperationReleaseCenter 仓库域
  • 补充说明
    • 通过上面直接在项目中配置的账号和权限可以在客户端用svn协议访问,例如 svn://localhost:3691/***
    • 如果不配置的话,客户端只能用http协议访问。即读的是以下这两个文件的配置,而这两个文件是可以通过界面配置。
/etc/subversion/subversion-access-control
/etc/subversion/passwd
<h1 id='h121'>http协议访问</h1>
http://localhost:8011/**
  • 至此,已完成权限这块的配置

12.4.4 客户端连接测试

  • 连接工具:TortoiseSVN

  • 请自行安装TortoiseSVN工具

  • 创建对应的项目目录,进入项目目录后鼠标右键

  • 检出顺利,就可以看到此时目录下会有svn仓库上的文件
  • 浏览器方式访问,是需要账号密码的。请在web页面用户管理中配置
  • 至此整个svn的部署及配置已完成,后续的操作请自行学习