subversion配置记录
服务器
CentOS 7
安装svn
[root@localhost conf]# yum install -y subversion
建立仓库
[root@localhost conf]# mkdir /svn [root@localhost conf]# svnadmin create /svn/repo
查看
[root@localhost svn]# ls /svn repo runservice.sh [root@localhost svn]# ls /svn/repo conf conf-20200410-bak.zip db format hooks locks README.txt [root@localhost svn]# ls /svn/repo/conf authz passwd svnserve.conf [root@localhost svn]#
配置
主要是修改/svn/repo/conf目录下的三个文件
1、修改svnserve.conf
只要去掉里面关键5行的注释即可,参见下图。
2、修改passwd
在“[users]”下面逐行添加用户名和密码即可。
[users] zhangsan = 123456 lisi = 123456 wangwu = 123456
3、修改authz
# 这里表示添加用户组 [groups] admin = zhangsan sw_team = lisi,zhangsan hw_team = wangwu #上面添加了admin,sw_team,hw_team三个组 # 这里根据目录来限制用户权限 # “[/]”表示仓库的根目录 [/] @admin = rw * = # 上面 “@admin” 表示用户组具有读写权限 # 上面 “*”表示出去已经列明的用户、组之外的人员不具备任何权限 # 这里根据具体的目录进行权限限制 [/project1/bootload] @admin = rw wangwu = r * = # 上面用"@"开头的表示用户,否则表示用户
4、启动SVN服务
[root@localhost conf]# svnserve -d -r /svn/repo
5、客户端访问SVN仓库
如果是管理员用户,按照上面的配置可以直接访问仓库根目录,那么直接访问“svn://192.168.1.114”就可以。
如果不是管理员,只能按照权限访问,按照上面的配置,比如“wangwu”可以访问“svn://192.168.1.114/project1/bootload”下的内容,但是他无法访问“svn://192.168.1.114/project1”这个目录。
开机自启动
如果你试图在“/etc/rc.d/rc.local”中添加脚本进行启动,是无法实现的。我们需要创建 systemd service 来启动服务。
先查看“/lib/systemd/system/svnserve.service”中的内容:
[Unit] Description=Subversion protocol daemon After=syslog.target network.target [Service] Type=forking EnvironmentFile=/etc/sysconfig/svnserve ExecStart=/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid $OPTIONS [Install] WantedBy=multi-user.target
里面的“ExecStart”表示启动SVN服务,最后的“$OPTIONS”就是对应的启动参数。
我们前面手动启动时,输入的是“svnserve -d -r /svn/repo”,对照一看,这个OPTIONS就应该是“-d -r /svn/repo”这些。
那在哪里添加这个参数?
看上面一行“EnvironmentFile”定义的地方,我们打开看看
# OPTIONS is used to pass command-line arguments to svnserve. # # Specify the repository location in -r parameter: OPTIONS="-r /var/svn"
第一行明确说了是svnserve的参数,那么我们修改成我们自己的仓库地址就行了。
然后在命令行使能服务
[root@localhost ~]# systemctl enable svnserve.service Created symlink from /etc/systemd/system/multi-user.target.wants/svnserve.service to /usr/lib/systemd/system/svnserve.service. [root@localhost ~]# ps aux | grep svn root 3929 0.0 0.1 112724 988 pts/0 S+ 10:30 0:00 grep --color=auto svn [root@localhost ~]# shutdown -r now
重启之后,我们查看一下是不是真的启动了。
[C:\~]$ ssh root@192.168.1.110 Connecting to 192.168.1.110:22... Connection established. To escape to local shell, press 'Ctrl+Alt+]'. WARNING! The remote SSH server rejected X11 forwarding request. Last login: Fri Apr 10 10:17:40 2020 from 192.168.1.95 [root@localhost ~]# ps aux | grep svn root 3635 0.0 0.1 185116 1228 ? Ss 10:31 0:00 /usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid -d -r /svn/repo root 3900 0.0 0.1 112724 988 pts/0 S+ 10:31 0:00 grep --color=auto svn [root@localhost ~]#
问题
昨天在创建一个tag的时候,提示说“Unreadable path encountered; access denied”,网上查找了以下,在https://www.cnblogs.com/you-jia/p/4549350.html中提到说是“在项目的conf/svnserve.conf 中, 设置 anon-access = none 即可. 然后重启Subversion 服务.”
照着做了,果然可以,特此记录。
<完>