Centos7 下的SVN安装与配置
```
Centos7 下的SVN安装与配置
1.关闭防火墙
临时关闭防火墙
systemctl stop firewalld
永久防火墙开机自关闭
systemctl disable firewalld
临时打开防火墙
systemctl start firewalld
防火墙开机启动
systemctl enable firewalld
查看防火墙状态
systemctl status firewalld
2.关闭SELinux
临时关闭SELinux
setenforce
临时打开SELinux
setenforce
查看SELinux状态
getenforce
开机关闭SELinux
编辑/etc/selinux/config文件,如下图,将SELINUX的值设置为disabled。下次开机SELinux就不会启动了。
3.安装svn
yum install subversion -y
查看版本
[root@heyong ~]# svn --version
svnserve, version 1.7. (r1542130)
compiled Apr , ::
Copyright (C) The Apache Software Foundation.
This software consists of contributions made by many people; see the NOTICE
file for more information.
Subversion is open source software, see http://subversion.apache.org/
The following repository back-end (FS) modules are available:
* fs_base : Module for working with a Berkeley DB repository.
* fs_fs : Module for working with a plain file (FSFS) repository.
Cyrus SASL authentication is available.
4.创建SVN版本库
4.1单版本库管理案例
在/home下建立一个名为svn的仓库(repository),以后所有代码都放在这个下面,创建成功后在svn下面会多出几个文件夹。
[root@heyong ~]# mkdir -p /home/svn
[root@heyong ~]# svnadmin create /home/svn
[root@heyong ~]# ls /home/svn
conf db format hooks locks README.txt
[root@heyong ~]# cd /home/svn/conf/
[root@heyong conf]# ll
total
-rw-r--r-- root root Oct : authz
-rw-r--r-- root root Oct : passwd
-rw-r--r-- root root Oct : svnserve.conf
其中:
authz 是权限控制文件
passwd 是帐号密码文件
svnserve.conf 是SVN服务配置文件
4.2多版本库管理案例(一个项目一个仓库)
[root@heyong ~]# mkdir -p /home/svn/myproject 仓库保存总目录,以后总目录可以对应其下面的项目
[root@heyong ~]# mkdir -p /home/svn/myproject/ts3000 在总目录创建多个仓库
[root@heyong ~]# mkdir -p /home/svn/myproject/ts4000 在总目录创建多个仓库
[root@heyong ~]# svnadmin create /home/svn/myproject/ts3000 使用命令创建版本库
[root@heyong ~]# svnadmin create /home/svn/myproject/ts4000 使用命令创建版本库
[root@localhost conf]# pwd 进入对应项目仓库目录下将authz passwd文件拷贝到myproject目录下
/home/svn/myproject/ts3000/conf
[root@localhost conf]# cp authz passwd ../../ 总仓库使用统一配置
修改ts3000/conf下的svnserve.conf文件,将其中的passwd文件、authz文件指定路径修改,其他按正常svn配置。
(ts4000同样设置一遍)
[root@localhost conf]# pwd
/home/svn/myproject/ts3000/conf
[root@localhost conf]# grep -v "^#" svnserve.conf
[general]
anon-access = none #默认是read,不修改会有问题,show log也有问题
auth-access = write
password-db = ../../passwd
authz-db = ../../authz
realm = /home/svn/myproject/ts3000
5.配置passwd(创建用户)
5.1单仓库
[root@heyong conf]# vim passwd
[users]
test1=
test2=
5.2多仓库 修改刚复制出来的authz、passwd文件
[root@localhost ~]# cd /home/svn/myproject/
[root@localhost myproject]# ls
authz passwd ts3000 ts4000
[root@localhost myproject]# grep -v "^#" passwd
[users]
wangqs = abc/123
test1 = abc/123
test2 = abc/123
6.配置authz
[root@heyong conf]# vi authz
[/]
admin=rw #对/home/svn/下所有文件具有可读可写权限;
test1=r #只有只读权限;
test2=r #只有只读权限
*= #其它用户均无任何权限
7.使用用户分组
[root@heyong conf]# vi authz
[groups]
group1 = admin
group2 = test1,test2
[/]
@group1 = rw #对/home/svn/下所有文件具有可读可写权限;
@group2 = r #只有只读权限;
* = #其它用户无任何权限
多仓库分组
[root@localhost myproject]# grep -v "^#" authz
[groups]
admin = wangqs
dev = test1,test2
[/]
@admin = rw
@dev = r
* =
8.配置svnserve.conf
8.1单仓库
[root@heyong conf]# vim svnserve.conf
打开下面的5个注释
anon-access = read #匿名用户可读 read改为none否则报错
auth-access = write #授权用户可写
password-db = passwd #使用哪个文件作为账号文件
authz-db = authz #使用哪个文件作为权限文件
realm = /home/svn # 认证空间名,版本库所在目录
8.2多仓库
详见4.2
注意:
最后一行的realm记得改成你的svn目录
打开注释时切记前面不要留有空格,否则可能有问题
9.启动与停止
[root@heyong conf]# svnserve -d -r /home/svn(启动)
[root@heyong conf]# svnserve -d -r /home/svn/myproject 多仓库案例启动到总仓库,不是到库目录
[root@heyong conf]#killall svnserve(停止)
注意:
上述启动命令中,-d表示守护进程, -r 表示在后台执行。停止还可以采用杀死进程的方式
10.客户端连接
TortoiseSVN中使用地址svn://你的IP ,输入用户名和密码就能连接成功。(这里只输入到IP,不输入后面的库名,否则会报错)
默认端口3690,如果你修改了端口,那么要记得加上端口号。
多仓库案例访问及检出
仓库1的检出地址:svn://ip地址/ts3000
仓库1的检出地址:svn://ip地址/ts4000
修改默认端口
第一种方法:
svnserve -d -r /mnt/svn --listen-port 端口号
第二种方法:
svnserve -d -r /mnt/svn --listen-host IP+端口号
开机自启动 ##重点关闭防火墙和selinux 否则报错权限不足
# chmod u+x /etc/rc.d/rc.local 这个文件需要先加上可执行权限
# systemctl start rc-local
# systemctl enable rc-local
# systemctl status rc-local.service
# vi /etc/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
...
...
svnserve -d -r /home/svn/myproject 添加此行 也可以/usr/bin/svnserve
touch /var/lock/subsys/local
第二种方法:
1、查看下面文件得知/etc/sysconfig/svnserve
[root@localhost ~]# vi /lib/systemd/system/svnserve.service
2、[root@localhost ~]# vi /etc/sysconfig/svnserve
OPTIONS="-r /home/svn/myproject" #-r 后面指定svn库的目录 (这个路径最好从配置文件拷贝,要兼容字符编码问题)
3、[root@localhost ~]# systemctl enable svnserve 设定开启自启动
# netstat -ntlp | grep svnserve 重启系统验证是否自动启动
11.启动时遇到的问题
1.启动svnserve时出现cannot bind server socket:address already in use
解决方法:
方法一:找出svnserve id 杀死掉进程
netstat -ntlp
kill - id
方法二:重新指定一个端口号(默认端口3690)
svnserve -d --listen-port 端口号 -r /opt/svndata/repos
2.启动svnserve时出现svnserve.conf:12: Option expected的问题解决方法
svnserve.conf:12: Option expected
解决方法:
因为subversion读取配置文件svnserve.conf时,无法识别有前置空格的配置文件,删除前置空格即可;
如:anon-access = read
3.检查是否启动成功:(查看是否存在svnserve 进程)
[root@heyong svn]# ps -ef|grep svnserve
root : ? :: svnserve -d -r /home/svn
root : pts/ :: grep --color=auto svnserve
12.svn常见路径说明
1.查询安装的包
[root@heyong svn]# rpm -qa|grep subversion
subversion-libs-1.7.-.el7.x86_64
subversion-1.7.-.el7.x86_64
2.svn几个常用目录
/etc 一些设置文件放置的目录
/usr/bin 一些可执行文件
/usr/lib64 一些程序使用的动态函数库
/usr/share/doc 一些基本的软件使用手册与帮助文档
/usr/share/man 一些man page文件
3.列出某些包的具体文件
[root@heyong svn]# rpm -ql subversion-1.7.-.el7.x86_64
/etc/subversion
/etc/sysconfig/svnserve
/run/svnserve
/usr/bin/svn
/usr/bin/svnadmin
/usr/bin/svndumpfilter
/usr/bin/svnlook
/usr/bin/svnrdump
/usr/bin/svnserve
/usr/bin/svnsync
/usr/bin/svnversion
/usr/lib/systemd/system/svnserve.service
```
Centos7 下的SVN安装与配置
1.关闭防火墙
临时关闭防火墙
systemctl stop firewalld
永久防火墙开机自关闭
systemctl disable firewalld
临时打开防火墙
systemctl start firewalld
防火墙开机启动
systemctl enable firewalld
查看防火墙状态
systemctl status firewalld
2.关闭SELinux
临时关闭SELinux
setenforce
临时打开SELinux
setenforce
查看SELinux状态
getenforce
开机关闭SELinux
编辑/etc/selinux/config文件,如下图,将SELINUX的值设置为disabled。下次开机SELinux就不会启动了。
3.安装svn
yum install subversion -y
查看版本
[root@heyong ~]# svn --version
svnserve, version 1.7. (r1542130)
compiled Apr , ::
Copyright (C) The Apache Software Foundation.
This software consists of contributions made by many people; see the NOTICE
file for more information.
Subversion is open source software, see http://subversion.apache.org/
The following repository back-end (FS) modules are available:
* fs_base : Module for working with a Berkeley DB repository.
* fs_fs : Module for working with a plain file (FSFS) repository.
Cyrus SASL authentication is available.
4.创建SVN版本库
4.1单版本库管理案例
在/home下建立一个名为svn的仓库(repository),以后所有代码都放在这个下面,创建成功后在svn下面会多出几个文件夹。
[root@heyong ~]# mkdir -p /home/svn
[root@heyong ~]# svnadmin create /home/svn
[root@heyong ~]# ls /home/svn
conf db format hooks locks README.txt
[root@heyong ~]# cd /home/svn/conf/
[root@heyong conf]# ll
total
-rw-r--r-- root root Oct : authz
-rw-r--r-- root root Oct : passwd
-rw-r--r-- root root Oct : svnserve.conf
其中:
authz 是权限控制文件
passwd 是帐号密码文件
svnserve.conf 是SVN服务配置文件
4.2多版本库管理案例(一个项目一个仓库)
[root@heyong ~]# mkdir -p /home/svn/myproject 仓库保存总目录,以后总目录可以对应其下面的项目
[root@heyong ~]# mkdir -p /home/svn/myproject/ts3000 在总目录创建多个仓库
[root@heyong ~]# mkdir -p /home/svn/myproject/ts4000 在总目录创建多个仓库
[root@heyong ~]# svnadmin create /home/svn/myproject/ts3000 使用命令创建版本库
[root@heyong ~]# svnadmin create /home/svn/myproject/ts4000 使用命令创建版本库
[root@localhost conf]# pwd 进入对应项目仓库目录下将authz passwd文件拷贝到myproject目录下
/home/svn/myproject/ts3000/conf
[root@localhost conf]# cp authz passwd ../../ 总仓库使用统一配置
修改ts3000/conf下的svnserve.conf文件,将其中的passwd文件、authz文件指定路径修改,其他按正常svn配置。
(ts4000同样设置一遍)
[root@localhost conf]# pwd
/home/svn/myproject/ts3000/conf
[root@localhost conf]# grep -v "^#" svnserve.conf
[general]
anon-access = none #默认是read,不修改会有问题,show log也有问题
auth-access = write
password-db = ../../passwd
authz-db = ../../authz
realm = /home/svn/myproject/ts3000
5.配置passwd(创建用户)
5.1单仓库
[root@heyong conf]# vim passwd
[users]
test1=
test2=
5.2多仓库 修改刚复制出来的authz、passwd文件
[root@localhost ~]# cd /home/svn/myproject/
[root@localhost myproject]# ls
authz passwd ts3000 ts4000
[root@localhost myproject]# grep -v "^#" passwd
[users]
wangqs = abc/123
test1 = abc/123
test2 = abc/123
6.配置authz
[root@heyong conf]# vi authz
[/]
admin=rw #对/home/svn/下所有文件具有可读可写权限;
test1=r #只有只读权限;
test2=r #只有只读权限
*= #其它用户均无任何权限
7.使用用户分组
[root@heyong conf]# vi authz
[groups]
group1 = admin
group2 = test1,test2
[/]
@group1 = rw #对/home/svn/下所有文件具有可读可写权限;
@group2 = r #只有只读权限;
* = #其它用户无任何权限
多仓库分组
[root@localhost myproject]# grep -v "^#" authz
[groups]
admin = wangqs
dev = test1,test2
[/]
@admin = rw
@dev = r
* =
8.配置svnserve.conf
8.1单仓库
[root@heyong conf]# vim svnserve.conf
打开下面的5个注释
anon-access = read #匿名用户可读 read改为none否则报错
auth-access = write #授权用户可写
password-db = passwd #使用哪个文件作为账号文件
authz-db = authz #使用哪个文件作为权限文件
realm = /home/svn # 认证空间名,版本库所在目录
8.2多仓库
详见4.2
注意:
最后一行的realm记得改成你的svn目录
打开注释时切记前面不要留有空格,否则可能有问题
9.启动与停止
[root@heyong conf]# svnserve -d -r /home/svn(启动)
[root@heyong conf]# svnserve -d -r /home/svn/myproject 多仓库案例启动到总仓库,不是到库目录
[root@heyong conf]#killall svnserve(停止)
注意:
上述启动命令中,-d表示守护进程, -r 表示在后台执行。停止还可以采用杀死进程的方式
10.客户端连接
TortoiseSVN中使用地址svn://你的IP ,输入用户名和密码就能连接成功。(这里只输入到IP,不输入后面的库名,否则会报错)
默认端口3690,如果你修改了端口,那么要记得加上端口号。
多仓库案例访问及检出
仓库1的检出地址:svn://ip地址/ts3000
仓库1的检出地址:svn://ip地址/ts4000
修改默认端口
第一种方法:
svnserve -d -r /mnt/svn --listen-port 端口号
第二种方法:
svnserve -d -r /mnt/svn --listen-host IP+端口号
开机自启动 ##重点关闭防火墙和selinux 否则报错权限不足
# chmod u+x /etc/rc.d/rc.local 这个文件需要先加上可执行权限
# systemctl start rc-local
# systemctl enable rc-local
# systemctl status rc-local.service
# vi /etc/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
...
...
svnserve -d -r /home/svn/myproject 添加此行 也可以/usr/bin/svnserve
touch /var/lock/subsys/local
第二种方法:
1、查看下面文件得知/etc/sysconfig/svnserve
[root@localhost ~]# vi /lib/systemd/system/svnserve.service
2、[root@localhost ~]# vi /etc/sysconfig/svnserve
OPTIONS="-r /home/svn/myproject" #-r 后面指定svn库的目录 (这个路径最好从配置文件拷贝,要兼容字符编码问题)
3、[root@localhost ~]# systemctl enable svnserve 设定开启自启动
# netstat -ntlp | grep svnserve 重启系统验证是否自动启动
11.启动时遇到的问题
1.启动svnserve时出现cannot bind server socket:address already in use
解决方法:
方法一:找出svnserve id 杀死掉进程
netstat -ntlp
kill - id
方法二:重新指定一个端口号(默认端口3690)
svnserve -d --listen-port 端口号 -r /opt/svndata/repos
2.启动svnserve时出现svnserve.conf:12: Option expected的问题解决方法
svnserve.conf:12: Option expected
解决方法:
因为subversion读取配置文件svnserve.conf时,无法识别有前置空格的配置文件,删除前置空格即可;
如:anon-access = read
3.检查是否启动成功:(查看是否存在svnserve 进程)
[root@heyong svn]# ps -ef|grep svnserve
root : ? :: svnserve -d -r /home/svn
root : pts/ :: grep --color=auto svnserve
12.svn常见路径说明
1.查询安装的包
[root@heyong svn]# rpm -qa|grep subversion
subversion-libs-1.7.-.el7.x86_64
subversion-1.7.-.el7.x86_64
2.svn几个常用目录
/etc 一些设置文件放置的目录
/usr/bin 一些可执行文件
/usr/lib64 一些程序使用的动态函数库
/usr/share/doc 一些基本的软件使用手册与帮助文档
/usr/share/man 一些man page文件
3.列出某些包的具体文件
[root@heyong svn]# rpm -ql subversion-1.7.-.el7.x86_64
/etc/subversion
/etc/sysconfig/svnserve
/run/svnserve
/usr/bin/svn
/usr/bin/svnadmin
/usr/bin/svndumpfilter
/usr/bin/svnlook
/usr/bin/svnrdump
/usr/bin/svnserve
/usr/bin/svnsync
/usr/bin/svnversion
/usr/lib/systemd/system/svnserve.service
```