Centos安装SVN版本管理系统
# 简介
Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库(repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。
SVN 官网:https://subversion.apache.org Github SVN 源码:https://github.com/apache/subversion
# 安装
# yum安装
yum install subversion
1
# 创建用户组
groupadd svn
useradd -g svn svn
# 设置svn用户权限
sudo vim /etc/sudoers
# 修改文件内容
99 ## Allow root to run any commands anywhere▫
100 root ALL=(ALL) ALL
101 svn ALL=(ALL) ALL
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 创建个人仓库
在/home下建立一个名为svn的仓库(repository),以后所有代码都放在这个下面,创建成功后在svn目录下会出现预置文件。
[root@ly-centos home]# mkdir -p /svn/library
[root@ly-centos home]# svnadmin create /svn/library
[root@ly-centos home]# chown -R svn:svn /svn/library
[root@ly-centos home]# ls /svn/library
conf db format hooks locks README.txt
1
2
3
4
5
2
3
4
5
conf文件夹,是存放配置文件的。
[root@ly-centos conf]# cd /svn/library/conf/
[root@ly-centos conf]# ls
authz passwd svnserve.conf
1
2
3
2
3
- authz 是权限控制文件
- passwd 是帐号密码文件
- svnserve.conf 是SVN服务配置文件
# 配置passwd
在[users]
下,可以创建svn用户和对应的用户密码。
[root@ly-centos conf]# vim passwd
### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.
[users]
# harry = harryssecret
# sally = sallyssecret
ly = 2Kk0B0gxPehyPjKY7AZw
wjh = ajsACEbRrBqsWhOcWU0g
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 配置authz
在下authz
文件的末尾,添加以下内容。
[root@ly-centos conf]# vim authz
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
[/]
ly = rw
wjh = rw
* =
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 配置svnserve.conf
在文件内容中,找到以下配置进行修改:
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = /svn/library
1
2
3
4
5
2
3
4
5
# 启动svn
svnserve -d -r /svn/library --config-file=/svn/library/conf/svnserve.conf
1
# 开放端口
如果使用的是云服务器,需要在安全组配置中增加开放端口,如果还使用了其它的集成控制面板,同样需要增加开放端口。
firewall-cmd --permanent --add-port=3690/tcp
systemctl restart firewalld.service
1
2
2
# 测试连接
svn co svn://39.108.229.126
Authentication realm: <svn://IP:3690> /svn/library
Password for 'ly':
1
2
3
2
3
# 增加开机自启
进入/usr/lib/systemd/system
目录下,创建svnserver.service
文件。
vim /usr/lib/systemd/system/svnserver.service
# svnserver.service文件添加如下内容
[Unit]
Description=SVN Server service
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/svnserve -d -r /svn/library --config-file=/svn/library/conf/svnserve.conf
ExecStop=/svn/stop.sh
User=svn
Restart=on-abort
[Install]
WantedBy=multi-user.target
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
创建停止脚本文件。
# 创建停止脚本文件
touch /svn/stop.sh
chmod +x /svn/stop.sh
# stop.sh文件添加如下内容
#!/bin/sh
ps -ef|grep svnserve |grep -v grep
if [ $? -ne 0 ]
then
echo "the svn server does not start"
else
killall -9 sh svnserve
fi
#####
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
添加到开机自启。
systemctl daemon-reload
systemctl enable svnserver.service
systemctl start svnserver.service
systemctl status svnserver.service
1
2
3
4
2
3
4
验证停止脚本是否生效。
systemctl stop svnserver.service
1
# 其他事项
CentOS自带的SELinux默认是Enforcing,处于打开状态,对于自启动的SVN服务,会导致客户端访问SVN服务器时出现Permisson Denied的错误,我们需要手动关闭它,修改/etc/selinux/config文件。
SELINUX从enforcing改为disabled,重启系统,SVN服务自启动后,从客户端访问不再出现Permssion Denied错误。
1
2
2
上次更新: 2023/09/16, 02:28:15