一、幾句題外話
受項(xiàng)目要求,要在一臺(tái)純空白服務(wù)器上搭建一套SVN服務(wù),所以在網(wǎng)上找了很久的教程,每一個(gè)都不是那么的完整,經(jīng)過(guò)多方查找,跨越多個(gè)平臺(tái),最終還是得以解決。就在這里記錄一下,不期望能指導(dǎo)后來(lái)人,只求能在以后需要再裝的時(shí)候幫助自己。
先感謝在我安裝路上提供了大量支持幾位博主,下邊是教程,有興趣的可以看看:
基礎(chǔ)安裝:http://blog.csdn.net/roy_70/article/details/52166331
? ? ? ? ? ? ? ? ? ?https://www.cnblogs.com/shaohuixia/p/5532448.html
? ? ? ? ? ? ? ? ? ?http://blog.csdn.net/xyw591238/article/details/51271602
apr-util 報(bào)錯(cuò):http://blog.csdn.net/u013091013/article/details/76153154
linux 啟動(dòng)svn服務(wù):?http://blog.csdn.net/qq_33556185/article/details/50756181
linux 倉(cāng)庫(kù)配置文件說(shuō)明:
?https://www.cnblogs.com/liuxianan/p/linux_install_svn_server.html
開(kāi)通防火墻、添加入站規(guī)則
http://blog.csdn.net/testcs_dn/article/details/45392963
http://www.cnblogs.com/wucg/p/6143204.html
二、準(zhǔn)備階段
1、服務(wù)器系統(tǒng)
這個(gè)看個(gè)人情況,我用的是紅帽
2、首先要下載相應(yīng)的包:
先檢查自己是否已安裝如下幾個(gè)包,我這邊使用rpm檢測(cè)
?[svn@localhost svn]$?rpm -qa|grep svn(若有則證明已安裝該服務(wù),可以選擇刪除或者,使用已安裝服務(wù),不需要重新下載,下同)
?[svn@localhost svn]$?rpm -qa|grep apr
?[svn@localhost svn]$?rpm -qa|grep zlib
需要下載的
subversion-1.9.7.tar.gz------地址:http://subversion.apache.org/download/(最主要的安裝包)
sqlite-autoconf-3180000.tar.gz------地址:http://www.sqlite.org/download.html(數(shù)據(jù)庫(kù)依賴包)
apr-1.6.3.tar.gz,apr-util-1.6.1.tar.gz------地址:http://apr.apache.org/download.cgi(svn基礎(chǔ)依賴包)
zlib-1.2.8.tar.gz------地址:http://linux.softpedia.com/get/Programming/Libraries/zlib-159.shtml(svn基礎(chǔ)依賴包)
3、創(chuàng)建文件路徑
我是在home下創(chuàng)建了一個(gè)文件夾svn,按照自己的需求自行設(shè)定。將文件上傳至服務(wù)器,依次將文件進(jìn)行解壓。
?[svn@localhost svn]$ tar -xzvf?subversion-1.9.7.tar.gz
?[svn@localhost svn]$ tar -xzvf?sqlite-autoconf-3180000.tar.gz
?[svn@localhost svn]$ tar -xzvf?apr-1.6.3.tar.gz
?[svn@localhost svn]$ tar -xzvf?apr-util-1.6.1.tar.gz
?[svn@localhost svn]$ tar -xzvf?zlib-1.2.8.tar.gz
三、開(kāi)始安裝
1、安裝apr、apr-util
先安裝apr
?[svn@localhost svn]$?cd?apr-1.6.3
?[svn@localhost apr-1.6.3]$?./configure prefix=/home/svn/apr-1.6.3
?[svn@localhost?apr-1.6.3]$?make
?[svn@localhost?apr-1.6.3]$?make install
安裝 apr-uill
?[svn@localhost svn]$?cd?apr-util-1.6.1
?[svn@localhost apr-util-1.6.1]$?./configure prefix=/home/svn/apr-util-1.6.1 --with-apr=/home/svn/apr-1.6.3
?[svn@localhost?apr-util-1.6.1]$?make
?[svn@localhost?apr-util-1.6.1]$?make install
make時(shí)可能會(huì)出現(xiàn)如下報(bào)錯(cuò)?
make[1]: Entering directory `/deployment/apr-util-1.6.0'
xml/apr_xml.c:411: error: ‘a(chǎn)pr_xml_parser’ has no member named ‘xp’
?需要安裝expat-devel
2、安裝zlib
?[svn@localhost svn]$?cd?zlib-1.2.8
?[svn@localhost?zlib-1.2.8]$?./configure prefix=/home/svn/zlib-1.2.8
?[svn@localhost?zlib-1.2.8]$?make
?[svn@localhost?zlib-1.2.8]$?make install
3、若已將安裝sqllite可跳過(guò)此步驟
將解壓的sqlite-autoconf-3180000 改名為sqlite-amalgamation 并移動(dòng)到?subversion-1.9.7 文件夾下
?[svn@localhost svn]$?mv sqlite-autoconf-3180000?./subversion-1.9.7/sqlite-amalgamation
4、安裝subversion
?[svn@localhost svn]$?cd?subversion-1.9.7
?[svn@localhost?subversion-1.9.7]$?./configure prefix=/home/svn/subversion-1.9.7?--with-apr=/home/svn/apr-1.6.3 --with-apr-util=/home/svn/apr-util-1.6.1 --with-zlib=/home/svn/zlib
?[svn@localhost?subversion-1.9.7]$?make
?[svn@localhost?subversion-1.9.7]$?make install
注意prefix前是兩個(gè)減號(hào).?默認(rèn)不帶BDB包,?所以默認(rèn)使用的是FSFS模式.?若想使用BDB模式需另外下載BDB包.建議使用FSFS模式。
四、驗(yàn)證安裝是否成功
修改PATH路徑配置文件,將svn加入path
?[svn@localhost?subversion-1.9.7]$?cd??
?[svn@localhost?~]$?vim .bash_profile?
PATH=/home/svn/subversion-1.9.7/bin:$PATH
在export PATH 之前 添加一條PATH
執(zhí)行配置文件,讓修改的內(nèi)容生效
?[svn@localhost?~]$.?.bash_profile?
輸入svnserve --version來(lái)驗(yàn)證svn是否安裝成功,如下圖所示出現(xiàn)svn的版本即安裝成功
五、配置倉(cāng)庫(kù)
??[svn@localhost?svn]$ mkdir -p myproject
??[svn@localhost?svn]$ svnadmin create /home/svn/myproject?
? 注意文件位置要對(duì)應(yīng),執(zhí)行此命令后svn自動(dòng)在myproject目錄下添加必須的配置文件。
修改配置文件
[svn@localhost?svn]$ cd myproject/conf
修改 subversion.conf
將以下幾項(xiàng)前的#刪除,并頂格編寫(xiě)
[svn@localhost?conf]$ vim?subversion.conf
[general]
anon-access = none #?使非授權(quán)用戶無(wú)法訪問(wèn)
auth-access = write #?使授權(quán)用戶有寫(xiě)權(quán)限
password-db = /opt/svndata/repos/conf/passwd ?#?指明密碼文件路徑
authz-db = /opt/svndata/repos/conf/authz?? ?#?訪問(wèn)控制文件
realm = /opt/svndata/repos ??#?認(rèn)證命名空間,subversion會(huì)在認(rèn)證提示里顯示,并且作為憑證緩存的關(guān)鍵字。?
修改 passwd 用于創(chuàng)建用戶
[svn@localhost?conf]$ vim passwd
輸入以下內(nèi)容:?
[users]?
<用戶1> = <密碼1>?admin = admin
<用戶2> = <密碼2>?username2 = password2
可以添加多個(gè),此為用戶名密碼對(duì)。
修改author 用戶權(quán)限控制
[svn@localhost?conf]$ vim authz
?指令簡(jiǎn)介:此配置文件采用“基于路徑的授權(quán)”策略,中括號(hào)里指定路徑,以下列出對(duì)各用戶的授權(quán)。包括只讀r,讀寫(xiě)rw。沒(méi)有列出的用戶,則不允許訪問(wèn)。還可以對(duì)用戶分組,具體請(qǐng)參考svn手冊(cè),以下是簡(jiǎn)單例子:
? ? ? ?用戶組格式:
? ??[groups]
? ? <用戶組名> = <用戶1>,<用戶2>
? ? 其中,1個(gè)用戶組可以包含1個(gè)或多個(gè)用戶,用戶間以逗號(hào)分隔。
版本庫(kù)目錄格式:
[<版本庫(kù)>:/項(xiàng)目/目錄](méi)
@<用戶組名> = <權(quán)限>
<用戶名> = <權(quán)限>
其中,方框號(hào)內(nèi)部分可以有多種寫(xiě)法:
/,表示根目錄及以下。根目錄是svnserve啟動(dòng)時(shí)指定的,我們指定/opt/svndata。這樣,/就是表示對(duì)全部版本庫(kù)設(shè)置權(quán)限。
repos1:/,表示對(duì)版本庫(kù)1設(shè)置權(quán)限
repos2:/abc, ,表示對(duì)版本庫(kù)2中的abc項(xiàng)目設(shè)置權(quán)限
repos2:/abc/aaa, ,表示對(duì)版本庫(kù)2中的abc項(xiàng)目的aaa目錄設(shè)置權(quán)限
權(quán)限主體可以是用戶組、用戶或*,用戶組在前面加@,*表示全部用戶。權(quán)限可以是w、r、wr和空,空表示沒(méi)有任何權(quán)限。
以下是簡(jiǎn)單例子
[/]
* = rw
六、啟動(dòng)服務(wù)
啟動(dòng)命令:?svnserve -d -r?版本庫(kù)路徑?--listen 端口號(hào)
如:[svn@localhost ~]$ ?svnserve -d --listen-port 3690 -r /home/svn
? ? ? -d 表示守護(hù)服務(wù),在后臺(tái)執(zhí)行
????--listen 3690(默認(rèn)端口,也可以自行指定)?
????-r?指定svn服務(wù)的根目錄,這樣用戶就可以使用相對(duì)路徑訪問(wèn),而不用提供完整路徑。
啟動(dòng)后,可在進(jìn)程中查找是否已啟動(dòng)svn服務(wù)
[svn@localhost ~]$ ps - ef|grep svn
七、開(kāi)通端口,開(kāi)通防火墻端口
添加入站規(guī)則(建議法一、法二都做一遍,應(yīng)該是添加文件最為直接,但是我當(dāng)時(shí)是沒(méi)有效果,用了第一種方法才成功)
方法一
[root@localhost svn]$ ?/sbin/iptables -I INPUT -p tcp --dport 3690 -j ACCEPT
[root@localhost svn]# /etc/init.d/iptables save
iptables 將防火墻規(guī)則保存到 /etc/sysconfig/iptables: [確定]
方法二
直接編輯/etc/sysconfig/iptables
-A INPUT -p tcp -m tcp --dport 3690 -j ACCEPT
保存在前面部分
重啟防火墻
[root@localhost svn]# service iptables restart
iptables:將鏈設(shè)置為政策 ACCEPT:filter mangle nat? ? ? ? [確定]
iptables:清除防火墻規(guī)則:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [確定]
iptables:正在卸載模塊:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [確定]
iptables:應(yīng)用防火墻規(guī)則:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [確定]
八、訪問(wèn)服務(wù)
現(xiàn)在可以使用安裝了svn客戶端的電腦遠(yuǎn)程連接至剛才建立的svn版本庫(kù)
地址是svn://SVN服務(wù)器的IP地址/myproject
如果不想用戶輸入myproject,可以在啟動(dòng)服務(wù)時(shí)指定目錄時(shí)加上具體的位置
[svn@localhost ~]$ ?svnserve -d --listen-port 3690 -r /home/svn/myproject
九、寫(xiě)在最后
經(jīng)過(guò)一下午的百度以后,最終還是成功的部署了服務(wù)。期間坎坷不斷,最初的服務(wù)器中連gcc都沒(méi)有,一臉的生無(wú)可戀。其中在教程的指導(dǎo)下,也是仍有各種報(bào)錯(cuò),好在都在最后解決了。以上的安裝步驟都是我第二天回憶編寫(xiě)的,可能在細(xì)節(jié)上會(huì)有疏漏,如有錯(cuò)誤,請(qǐng)?jiān)谙路搅粞裕⑦M(jìn)行指正。