Centos7 下的SVN安裝與配置
```
Centos7 下的SVN安裝與配置
1.關(guān)閉防火墻
臨時(shí)關(guān)閉防火墻
systemctl stop firewalld
永久防火墻開機(jī)自關(guān)閉
systemctl disable firewalld
臨時(shí)打開防火墻
systemctl start firewalld
防火墻開機(jī)啟動(dòng)
systemctl enable firewalld
查看防火墻狀態(tài)
systemctl status firewalld
2.關(guān)閉SELinux
臨時(shí)關(guān)閉SELinux
setenforce
臨時(shí)打開SELinux
setenforce
查看SELinux狀態(tài)
getenforce
開機(jī)關(guān)閉SELinux
編輯/etc/selinux/config文件,如下圖,將SELINUX的值設(shè)置為disabled。下次開機(jī)SELinux就不會(huì)啟動(dòng)了。
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.創(chuàng)建SVN版本庫(kù)
4.1單版本庫(kù)管理案例
在/home下建立一個(gè)名為svn的倉(cāng)庫(kù)(repository),以后所有代碼都放在這個(gè)下面,創(chuàng)建成功后在svn下面會(huì)多出幾個(gè)文件夾。
[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 是權(quán)限控制文件
passwd 是帳號(hào)密碼文件
svnserve.conf 是SVN服務(wù)配置文件
4.2多版本庫(kù)管理案例(一個(gè)項(xiàng)目一個(gè)倉(cāng)庫(kù))
[root@heyong ~]# mkdir -p /home/svn/myproject 倉(cāng)庫(kù)保存總目錄,以后總目錄可以對(duì)應(yīng)其下面的項(xiàng)目
[root@heyong ~]# mkdir -p /home/svn/myproject/ts3000 在總目錄創(chuàng)建多個(gè)倉(cāng)庫(kù)
[root@heyong ~]# mkdir -p /home/svn/myproject/ts4000 在總目錄創(chuàng)建多個(gè)倉(cāng)庫(kù)
[root@heyong ~]# svnadmin create /home/svn/myproject/ts3000 使用命令創(chuàng)建版本庫(kù)
[root@heyong ~]# svnadmin create /home/svn/myproject/ts4000 使用命令創(chuàng)建版本庫(kù)
[root@localhost conf]# pwd 進(jìn)入對(duì)應(yīng)項(xiàng)目倉(cāng)庫(kù)目錄下將authz passwd文件拷貝到myproject目錄下
/home/svn/myproject/ts3000/conf
[root@localhost conf]# cp authz passwd ../../ 總倉(cāng)庫(kù)使用統(tǒng)一配置
修改ts3000/conf下的svnserve.conf文件,將其中的passwd文件、authz文件指定路徑修改,其他按正常svn配置。
(ts4000同樣設(shè)置一遍)
[root@localhost conf]# pwd
/home/svn/myproject/ts3000/conf
[root@localhost conf]# grep -v "^#" svnserve.conf
[general]
anon-access = none #默認(rèn)是read,不修改會(huì)有問題,show log也有問題
auth-access = write
password-db = ../../passwd
authz-db = ../../authz
realm = /home/svn/myproject/ts3000
5.配置passwd(創(chuàng)建用戶)
5.1單倉(cāng)庫(kù)
[root@heyong conf]# vim passwd
[users]
test1=
test2=
5.2多倉(cāng)庫(kù) 修改剛復(fù)制出來的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 #對(duì)/home/svn/下所有文件具有可讀可寫權(quán)限;
test1=r #只有只讀權(quán)限;
test2=r #只有只讀權(quán)限
*= #其它用戶均無任何權(quán)限
7.使用用戶分組
[root@heyong conf]# vi authz
[groups]
group1 = admin
group2 = test1,test2
[/]
@group1 = rw #對(duì)/home/svn/下所有文件具有可讀可寫權(quán)限;
@group2 = r #只有只讀權(quán)限;
* = #其它用戶無任何權(quán)限
多倉(cāng)庫(kù)分組
[root@localhost myproject]# grep -v "^#" authz
[groups]
admin = wangqs
dev = test1,test2
[/]
@admin = rw
@dev = r
* =
8.配置svnserve.conf
8.1單倉(cāng)庫(kù)
[root@heyong conf]# vim svnserve.conf
打開下面的5個(gè)注釋
anon-access = read #匿名用戶可讀 read改為none否則報(bào)錯(cuò)
auth-access = write #授權(quán)用戶可寫
password-db = passwd #使用哪個(gè)文件作為賬號(hào)文件
authz-db = authz #使用哪個(gè)文件作為權(quán)限文件
realm = /home/svn # 認(rèn)證空間名,版本庫(kù)所在目錄
8.2多倉(cāng)庫(kù)
詳見4.2
注意:
最后一行的realm記得改成你的svn目錄
打開注釋時(shí)切記前面不要留有空格,否則可能有問題
9.啟動(dòng)與停止
[root@heyong conf]# svnserve -d -r /home/svn(啟動(dòng))
[root@heyong conf]# svnserve -d -r /home/svn/myproject 多倉(cāng)庫(kù)案例啟動(dòng)到總倉(cāng)庫(kù),不是到庫(kù)目錄
[root@heyong conf]#killall svnserve(停止)
注意:
上述啟動(dòng)命令中,-d表示守護(hù)進(jìn)程, -r 表示在后臺(tái)執(zhí)行。停止還可以采用殺死進(jìn)程的方式
10.客戶端連接
TortoiseSVN中使用地址svn://你的IP ,輸入用戶名和密碼就能連接成功。(這里只輸入到IP,不輸入后面的庫(kù)名,否則會(huì)報(bào)錯(cuò))
默認(rèn)端口3690,如果你修改了端口,那么要記得加上端口號(hào)。
多倉(cāng)庫(kù)案例訪問及檢出
倉(cāng)庫(kù)1的檢出地址:svn://ip地址/ts3000
倉(cāng)庫(kù)1的檢出地址:svn://ip地址/ts4000
修改默認(rèn)端口
第一種方法:
svnserve -d -r /mnt/svn --listen-port 端口號(hào)
第二種方法:
svnserve -d -r /mnt/svn --listen-host IP+端口號(hào)
開機(jī)自啟動(dòng) ##重點(diǎn)關(guān)閉防火墻和selinux 否則報(bào)錯(cuò)權(quán)限不足
# chmod u+x /etc/rc.d/rc.local 這個(gè)文件需要先加上可執(zhí)行權(quán)限
# 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庫(kù)的目錄 (這個(gè)路徑最好從配置文件拷貝,要兼容字符編碼問題)
3、[root@localhost ~]# systemctl enable svnserve 設(shè)定開啟自啟動(dòng)
# netstat -ntlp | grep svnserve 重啟系統(tǒng)驗(yàn)證是否自動(dòng)啟動(dòng)
11.啟動(dòng)時(shí)遇到的問題
1.啟動(dòng)svnserve時(shí)出現(xiàn)cannot bind server socket:address already in use
解決方法:
方法一:找出svnserve id 殺死掉進(jìn)程
netstat -ntlp
kill - id
方法二:重新指定一個(gè)端口號(hào)(默認(rèn)端口3690)
svnserve -d --listen-port 端口號(hào) -r /opt/svndata/repos
2.啟動(dòng)svnserve時(shí)出現(xiàn)svnserve.conf:12: Option expected的問題解決方法
svnserve.conf:12: Option expected
解決方法:
因?yàn)閟ubversion讀取配置文件svnserve.conf時(shí),無法識(shí)別有前置空格的配置文件,刪除前置空格即可;
如:anon-access = read
3.檢查是否啟動(dòng)成功:(查看是否存在svnserve 進(jìn)程)
[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幾個(gè)常用目錄
/etc 一些設(shè)置文件放置的目錄
/usr/bin 一些可執(zhí)行文件
/usr/lib64 一些程序使用的動(dòng)態(tài)函數(shù)庫(kù)
/usr/share/doc 一些基本的軟件使用手冊(cè)與幫助文檔
/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.關(guān)閉防火墻
臨時(shí)關(guān)閉防火墻
systemctl stop firewalld
永久防火墻開機(jī)自關(guān)閉
systemctl disable firewalld
臨時(shí)打開防火墻
systemctl start firewalld
防火墻開機(jī)啟動(dòng)
systemctl enable firewalld
查看防火墻狀態(tài)
systemctl status firewalld
2.關(guān)閉SELinux
臨時(shí)關(guān)閉SELinux
setenforce
臨時(shí)打開SELinux
setenforce
查看SELinux狀態(tài)
getenforce
開機(jī)關(guān)閉SELinux
編輯/etc/selinux/config文件,如下圖,將SELINUX的值設(shè)置為disabled。下次開機(jī)SELinux就不會(huì)啟動(dòng)了。
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.創(chuàng)建SVN版本庫(kù)
4.1單版本庫(kù)管理案例
在/home下建立一個(gè)名為svn的倉(cāng)庫(kù)(repository),以后所有代碼都放在這個(gè)下面,創(chuàng)建成功后在svn下面會(huì)多出幾個(gè)文件夾。
[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 是權(quán)限控制文件
passwd 是帳號(hào)密碼文件
svnserve.conf 是SVN服務(wù)配置文件
4.2多版本庫(kù)管理案例(一個(gè)項(xiàng)目一個(gè)倉(cāng)庫(kù))
[root@heyong ~]# mkdir -p /home/svn/myproject 倉(cāng)庫(kù)保存總目錄,以后總目錄可以對(duì)應(yīng)其下面的項(xiàng)目
[root@heyong ~]# mkdir -p /home/svn/myproject/ts3000 在總目錄創(chuàng)建多個(gè)倉(cāng)庫(kù)
[root@heyong ~]# mkdir -p /home/svn/myproject/ts4000 在總目錄創(chuàng)建多個(gè)倉(cāng)庫(kù)
[root@heyong ~]# svnadmin create /home/svn/myproject/ts3000 使用命令創(chuàng)建版本庫(kù)
[root@heyong ~]# svnadmin create /home/svn/myproject/ts4000 使用命令創(chuàng)建版本庫(kù)
[root@localhost conf]# pwd 進(jìn)入對(duì)應(yīng)項(xiàng)目倉(cāng)庫(kù)目錄下將authz passwd文件拷貝到myproject目錄下
/home/svn/myproject/ts3000/conf
[root@localhost conf]# cp authz passwd ../../ 總倉(cāng)庫(kù)使用統(tǒng)一配置
修改ts3000/conf下的svnserve.conf文件,將其中的passwd文件、authz文件指定路徑修改,其他按正常svn配置。
(ts4000同樣設(shè)置一遍)
[root@localhost conf]# pwd
/home/svn/myproject/ts3000/conf
[root@localhost conf]# grep -v "^#" svnserve.conf
[general]
anon-access = none #默認(rèn)是read,不修改會(huì)有問題,show log也有問題
auth-access = write
password-db = ../../passwd
authz-db = ../../authz
realm = /home/svn/myproject/ts3000
5.配置passwd(創(chuàng)建用戶)
5.1單倉(cāng)庫(kù)
[root@heyong conf]# vim passwd
[users]
test1=
test2=
5.2多倉(cāng)庫(kù) 修改剛復(fù)制出來的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 #對(duì)/home/svn/下所有文件具有可讀可寫權(quán)限;
test1=r #只有只讀權(quán)限;
test2=r #只有只讀權(quán)限
*= #其它用戶均無任何權(quán)限
7.使用用戶分組
[root@heyong conf]# vi authz
[groups]
group1 = admin
group2 = test1,test2
[/]
@group1 = rw #對(duì)/home/svn/下所有文件具有可讀可寫權(quán)限;
@group2 = r #只有只讀權(quán)限;
* = #其它用戶無任何權(quán)限
多倉(cāng)庫(kù)分組
[root@localhost myproject]# grep -v "^#" authz
[groups]
admin = wangqs
dev = test1,test2
[/]
@admin = rw
@dev = r
* =
8.配置svnserve.conf
8.1單倉(cāng)庫(kù)
[root@heyong conf]# vim svnserve.conf
打開下面的5個(gè)注釋
anon-access = read #匿名用戶可讀 read改為none否則報(bào)錯(cuò)
auth-access = write #授權(quán)用戶可寫
password-db = passwd #使用哪個(gè)文件作為賬號(hào)文件
authz-db = authz #使用哪個(gè)文件作為權(quán)限文件
realm = /home/svn # 認(rèn)證空間名,版本庫(kù)所在目錄
8.2多倉(cāng)庫(kù)
詳見4.2
注意:
最后一行的realm記得改成你的svn目錄
打開注釋時(shí)切記前面不要留有空格,否則可能有問題
9.啟動(dòng)與停止
[root@heyong conf]# svnserve -d -r /home/svn(啟動(dòng))
[root@heyong conf]# svnserve -d -r /home/svn/myproject 多倉(cāng)庫(kù)案例啟動(dòng)到總倉(cāng)庫(kù),不是到庫(kù)目錄
[root@heyong conf]#killall svnserve(停止)
注意:
上述啟動(dòng)命令中,-d表示守護(hù)進(jìn)程, -r 表示在后臺(tái)執(zhí)行。停止還可以采用殺死進(jìn)程的方式
10.客戶端連接
TortoiseSVN中使用地址svn://你的IP ,輸入用戶名和密碼就能連接成功。(這里只輸入到IP,不輸入后面的庫(kù)名,否則會(huì)報(bào)錯(cuò))
默認(rèn)端口3690,如果你修改了端口,那么要記得加上端口號(hào)。
多倉(cāng)庫(kù)案例訪問及檢出
倉(cāng)庫(kù)1的檢出地址:svn://ip地址/ts3000
倉(cāng)庫(kù)1的檢出地址:svn://ip地址/ts4000
修改默認(rèn)端口
第一種方法:
svnserve -d -r /mnt/svn --listen-port 端口號(hào)
第二種方法:
svnserve -d -r /mnt/svn --listen-host IP+端口號(hào)
開機(jī)自啟動(dòng) ##重點(diǎn)關(guān)閉防火墻和selinux 否則報(bào)錯(cuò)權(quán)限不足
# chmod u+x /etc/rc.d/rc.local 這個(gè)文件需要先加上可執(zhí)行權(quán)限
# 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庫(kù)的目錄 (這個(gè)路徑最好從配置文件拷貝,要兼容字符編碼問題)
3、[root@localhost ~]# systemctl enable svnserve 設(shè)定開啟自啟動(dòng)
# netstat -ntlp | grep svnserve 重啟系統(tǒng)驗(yàn)證是否自動(dòng)啟動(dòng)
11.啟動(dòng)時(shí)遇到的問題
1.啟動(dòng)svnserve時(shí)出現(xiàn)cannot bind server socket:address already in use
解決方法:
方法一:找出svnserve id 殺死掉進(jìn)程
netstat -ntlp
kill - id
方法二:重新指定一個(gè)端口號(hào)(默認(rèn)端口3690)
svnserve -d --listen-port 端口號(hào) -r /opt/svndata/repos
2.啟動(dòng)svnserve時(shí)出現(xiàn)svnserve.conf:12: Option expected的問題解決方法
svnserve.conf:12: Option expected
解決方法:
因?yàn)閟ubversion讀取配置文件svnserve.conf時(shí),無法識(shí)別有前置空格的配置文件,刪除前置空格即可;
如:anon-access = read
3.檢查是否啟動(dòng)成功:(查看是否存在svnserve 進(jìn)程)
[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幾個(gè)常用目錄
/etc 一些設(shè)置文件放置的目錄
/usr/bin 一些可執(zhí)行文件
/usr/lib64 一些程序使用的動(dòng)態(tài)函數(shù)庫(kù)
/usr/share/doc 一些基本的軟件使用手冊(cè)與幫助文檔
/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
```

浙公網(wǎng)安備 33010602011771號(hào)