SVN基础:使用http方式使用svn服务
发布日期:2021-06-30 20:21:02 浏览次数:2 分类:技术文章

本文共 4418 字,大约阅读时间需要 14 分钟。

这篇文章介绍一下SVN的容器化方式的一个镜像:elleflorio/svn-server的使用方法。

目录


SVN镜像

Docker Hub地址

https://hub.docker.com/r/elleflorio/svn-server

镜像拉取命令

docker pull elleflorio/svn-server


启动服务

启动命令

执行命令:docker run -d --name svn-server -v $(PWD)/data:/home/svn -v $(PWD)/conf:/etc/subversion -p 80:80 -p 3690:3690 elleflorio/svn-server

挂载卷说明

  • /home/svn: 容器内的此目录为仓库数据保存目录,需要挂载出来进行持久化保存
  • /etc/subversion:容器内的此目录为配置文件保存目录,也需要挂载出来进行持久化保存

结果确认

Apache的http服务确认

通过暴露的80端口进行访问确认,提示如下It works!说明Apache服务已正常

在这里插入图片描述

svnadmin图形化配置

这个镜像提供了svnadmin的图形化页面配置方式

在这里插入图片描述
注意:需要注意要每次操作之后最好按一下最下面的保存按钮进行保存。

页面跳转设定

如果希望将/的跳转和svnadmin的图形化页面设定取消,可以按照如下步骤进行操作即可

修改页面跳转

  • 修改对象文件:页面显示的It works!的文件在容器内的如下位置:
liumiaocn:svn liumiao$ docker exec -it svn-server sh/ # cd /var/www/localhost/htdocs/var/www/localhost/htdocs # lsindex.html  svnadmin/var/www/localhost/htdocs # cat index.html 

It works!

/var/www/localhost/htdocs #
  • 修改内容:修改如下即可
/var/www/localhost/htdocs # vi index.html /var/www/localhost/htdocs # cat index.html 
/var/www/localhost/htdocs #

封住svnadmin页面

在同样的目录下可以看到svnadmin的软链接

/var/www/localhost/htdocs # pwd/var/www/localhost/htdocs/var/www/localhost/htdocs # ls -ltotal 4-rw-r--r--    1 root     root            64 Nov 14 22:25 index.htmllrwxrwxrwx    1 root     root            13 May  9  2020 svnadmin -> /opt/svnadmin/var/www/localhost/htdocs #

删除此链接即可

/var/www/localhost/htdocs # rm svnadmin//var/www/localhost/htdocs # ls -ltotal 4-rw-r--r--    1 root     root            64 Nov 14 22:25 index.html/var/www/localhost/htdocs #

配置设定

由于/etc/subversion在容器启动的时候就进行了挂载,会将之前缺省的两个文件给覆盖掉,所以需要手动创建如下两个文件

touch subversion-access-control passwd

/var/www/localhost/htdocs # cd/home # cd /etc/subversion//etc/subversion # ls/etc/subversion # touch subversion-access-control passwd/etc/subversion # ls -ltotal 0-rw-r--r--    1 root     root             0 Nov 14 22:32 passwd-rw-r--r--    1 root     root             0 Nov 14 22:32 subversion-access-control/etc/subversion #

常见功能确认

操作1:添加用户

执行命令:htpasswd -b /etc/subversion/passwd 用户名 用户密码

/etc/subversion # htpasswd -b /etc/subversion/passwd admin liumiaocnAdding password for user admin/etc/subversion # cat passwd admin:$apr1$.8iuymrB$lD/krn4MMylNdNB9Q4y250/etc/subversion #

结果确认

在这里插入图片描述
执行之后结果如下所示,因为此时尚未创建仓库,所以信息为空
在这里插入图片描述

操作2: 创建仓库

执行命令:svnadmin create 仓库名称

/etc/subversion # cd /home/svn/home/svn # ls/home/svn # svnadmin create repo1/home/svn # lsrepo1/home/svn # svnadmin create repo2/home/svn # svnadmin create repo3/home/svn # lsrepo1  repo2  repo3/home/svn #

操作3: 权限设定

缺省authz的文件在这个镜像中名字有所不同,内容设定并无区别,进行如下设定即可

/home/svn # cd /etc/subversion//etc/subversion # lspasswd                     subversion-access-control/etc/subversion # vi subversion-access-control /etc/subversion # pwd/etc/subversion/etc/subversion # cat subversion-access-control [repo1:/]admin = rw[repo2:/]admin = r[repo3:/]admin = w/etc/subversion #

在这里插入图片描述

操作4: co操作

liumiaocn:svn liumiao$ mkdir clientliumiaocn:svn liumiao$ cd c-bash: cd: c: No such file or directoryliumiaocn:svn liumiao$ cd client/liumiaocn:client liumiao$ svn co http://localhost/svn/repo1 --username=admin --password=liumiaocnChecked out revision 0.liumiaocn:client liumiao$ svn co http://localhost/svn/repo2 --username=admin --password=liumiaocnChecked out revision 0.liumiaocn:client liumiao$ svn co http://localhost/svn/repo3 --username=admin --password=liumiaocnsvn: E170013: Unable to connect to a repository at URL 'http://localhost/svn/repo3'svn: E175013: Access to '/svn/repo3' forbiddenliumiaocn:client liumiao$

可以看到由于在操作3中并未把r权限给予admin,所以无法对repo进行co操作

操作5: ci操作

liumiaocn:client liumiao$ cd repo1liumiaocn:repo1 liumiao$ lsliumiaocn:repo1 liumiao$ touch testforrepo1liumiaocn:repo1 liumiao$ echo "hello reop1" >testforrepo1 liumiaocn:repo1 liumiao$ svn add testforrepo1 A         testforrepo1liumiaocn:repo1 liumiao$ svn commit -m "test for new file"Adding         testforrepo1Transmitting file data .doneCommitting transaction...Committed revision 1.liumiaocn:repo1 liumiao$

然后从页面也可以进行了确认

在这里插入图片描述
对于没有写权限的repo2,admin只能进行co操作而无法进行ci操作,具体如下所示

liumiaocn:repo1 liumiao$ cd ../repo2liumiaocn:repo2 liumiao$ lsliumiaocn:repo2 liumiao$ touch testforrepo2liumiaocn:repo2 liumiao$ echo "hello repo2" >testforrepo2 liumiaocn:repo2 liumiao$ svn add testforrepo2 A         testforrepo2liumiaocn:repo2 liumiao$ svn commit -m "test for new file"svn: E175013: Commit failed (details follow):svn: E175013: Access to '/svn/repo2/!svn/me' forbiddenliumiaocn:repo2 liumiao$

其他常见问题与对应

总结

elleflorio/svn-server提供的功能基本够使用,只是版本也稍旧。

转载地址:https://liumiaocn.blog.csdn.net/article/details/109699741 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:2020年中国云原生用户调研的十二个要点
下一篇:SVN基础:常见问题记录:1

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月09日 12时03分19秒