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