SVN(subversion)部署手册
安装
Docker部署
创建Dockerfile
FROM maisi/alpine:3.22.2 WORKDIR /var/opt/svn EXPOSE 3690 VOLUME ["/var/opt/svn"] RUN echo http://mirrors.aliyun.com/alpine/v3.22/main/ > /etc/apk/repositories && \ apk update && apk upgrade RUN apk add --no-cache subversion==1.14.5-r0 wget==1.25.0-r1 HEALTHCHECK CMD netstat -ln | grep 3690 || exit 1 CMD [ "/usr/bin/svnserve", "--daemon", "--foreground", "--root", "/var/opt/svn" ]构建镜像并创建容器
[root@ecs ~]# docker build -t svn-server . < Dockerfile [root@ecs ~]# docker run --name svn \ --privileged=true \ --restart=unless-stopped \ -p 3690:3690 \ -v /data/svn:/var/opt/svn \ -d svn-server防火墙放行
[root@ecs ~]# firewall-cmd --zone=public --add-port=3690/tcp --permanent [root@ecs ~]# firewall-cmd --reload
配置
创建用户和组
[root@ecs ~]# cat > /data/svn/authz << EOF [groups] maisi = alice,bob [/] alice = rw [maisi:/] @maisi = rw EOF [root@ecs ~]# cat > /data/svn/passwd << EOF [users] alice = 123456789 EOF[/]:所有仓库[maisi:/]:仅maisi仓库@maisi = rw:maisi组内所有用户拥有读写权限
创建仓库
[root@ecs ~]# docker exec -it svn svnadmin create maisi每个仓库都有独立的
conf/svnserve.conf配置文件,配置文件中指定密码文件(passwd)和授权文件(authz)的路径。可以将每个仓库的passwd和authz都指向同一个文件,这样只需要建立一套账号和授权即可。
配置账号和授权
[root@ecs ~]# docker exec -it svn /bin/sh -c "cd /var/opt/svn/maisi/conf/ \ && sed -i '/# anon-access = read/a\anon-access = none' svnserve.conf \ && sed -i '/# auth-access = write/a\auth-access = write' svnserve.conf \ && sed -i '/# password-db = passwd/a\password-db = \/var/opt\/svn\/passwd' svnserve.conf \ && sed -i '/# authz-db = authz/a\authz-db = \/var/opt\/svn\/authz' svnserve.conf \ && sed -i '/# realm = /a\realm = Maisi Lab' svnserve.conf"当多个仓库共用同一个passwd和authz时,可以让这些仓库使用相同的
realm(默认值是仓库的UUID)。当客户端检测到相同的realm后,则可以共用保存在客户端的用户名和密码进行认证。重启服务
[root@ecs ~]# docker restart svn
数据
备份
[root@ecs ~]# svnadmin dump maisi > /data/svn/backup/maisi.dump还原
[root@ecs ~]# svnadmin load maisi < /data/svn/backup/maisi.dump