剛接到這個任務的時候,我的臉上寫着兩個大大的懵逼倆字!可以說是零基礎,那時候的我對於svn客戶端的熟練程度也許還不如公司內的文職,更別說服務端了!
任務到手,死扛到底,這纔是我的性格~我的作戰環境可以說是很艱苦,沒有技術文檔,而且就我一個運維!
跟個無頭蒼蠅一樣在網上亂轉把資料翻個底朝天,才漸漸有了邏輯和思路。不過也廢了好些周折才搞定!那幾天每天在網上看資料下班之後眼都是紅的!
研究了好久,終於成功了,由於網上的資料參差不全,凌亂無章樓主飽受其苦,所以決定寫下來與君共勉以免其苦。
一、 首先了解下svn的簡介和基本原理:
簡介:
subversion(簡稱svn)是近幾年崛起的版本管理軟件,是cvs的接班人,目前絕大多數開源軟件都使用svn作爲代碼版本管理軟件。Subversion支持linux和windows,但較多安裝在linux下。
svn服務器常用的有兩種運行方式:獨立服務器svn://ip地址, 和基於apache http:// ip地址(也可基於nginx等服務)
svn客戶端是tortoisesvn
原理:
在一臺服務器上建立一個源代碼庫,庫裏可以存放許多不同項目的源程序。由源代碼庫管理員統一管理這些源程序。每個用戶在使用源代碼庫之前,首先要把源代碼庫裏的項目文件下載到本地,然後開發人員可以在本地修改,然後用svn命令進行提交。而不同的部門也可以上傳些資料提供本部門的人員上傳下載,類似於ftp,網盤之類的功能。
二、安裝svn的方式
首先介紹獨立svn服務器的安裝和配置,而apache方式訪問的svn是基於獨立服務器之上建立的。
安裝svn常用的有兩種方式:yum安裝,源碼安裝。個人推薦想簡單點的話使用yum安裝,就不用在考慮各種依賴關係和變量了,而源碼安裝這裏就不在贅述網上有很多教程!
yum安裝:
1.yum install -y subversion
2.安裝完之後查看下:rpm -ql subversion,之後拉到最上面如圖所示,代表安裝成功
3.配置svn
首先創建版本庫目錄:mkdir -p /opt/svn/ "目錄可以隨意創建指定"。
創建你想要的版本庫:svnadmin create /opt/svn/zt,創建好之後會在zt版本庫中生成如圖所示的幾個文件
進入到conf中會有三個配置文件分別添加如下文所示:
authz:權限配置文件
passwd:密碼文件
svnserve.conf:版本庫配置文件
進入版本庫配置文件,打開下面的幾個註釋,注意:得頂頭寫:
anon-access = read #匿名用戶可讀
auth-access = write #授權用戶可寫
password-db = passwd #使用哪個文件作爲賬號文件
authz-db = authz #使用哪個文件作爲權限文件
realm = /opt/svn/zt # 認證空間名,版本庫所在目錄
4.上訴配置完成之後啓動版本庫:svnserve -d -r /opt/svn/zt
若是出現下圖所報錯誤,請執行netstat -anpt |grep svn ————> kill pid號之後即可成功執行
5.然後在客戶端執行如下操作即可成功,前提是可以ping通
新建文件夾右擊checkout,下圖所示:
svn服務器ip/版本庫
passwd中指定的賬號密碼
(2.)如果想在獨立svn服務器上運行多個版本庫需要爲其指定端口。
svnserve --listen-port 3691 -d -r /opt/svn/zt/
svnserve --listen-port 3692 -d -r /opt/svn/repos/
svnserve -d -r /opt/svn/
重啓完各個版本庫之後再把整個版本庫目錄啓動
三、基於apache方式訪問的svn安裝與配置
這個是在獨立svn服務器成功的基礎上搭建的,首先ps -ef |grep httpd查詢下httpd是否屬於apache
反之需yum -y install mod_dav_svn httpd
ls /etc/httpd/modules/ | grep svn :svn驗證模塊
mod_authz_svn.so mod_dav_svn.so
2.apache相關配置:vim /etc/httpd/conf.d/subversion.conf
SVNPath 定義單個的庫
SVNParentpath 定義多個庫
注意:apache配置的地方實在版本庫目錄中建立 密碼和權限 配置文件,而svn服務器是在版本庫中創建,創建方法大同小異。
3.創建訪問用戶(第一創建需要加 -c,代表新建的第一個用戶)
htpasswd -c /opt/svn/passwd abc
密碼:
再次輸入密碼:
abc用戶創建成功
刪除用戶:htpasswd -D passwd abc
4.賦予權限問題
chown -R apache.apache /opt/svn/版本庫
chmod -R 777 /opt/svn/
5.authz的權限問題
[groups] #在這裏設置組,= 後面跟的是用戶以,分割
admin = admin,admin1,admin2
users = user,user1,user2
[zt:/]
#這裏是版本庫zt,表示對此庫有某種權限,@admin代表組,不加@代表單個用戶
#注意更改的配置需要頂到頭不可以有空格否則會報錯
@admin = rw
user = r
[zt:/123]
#這裏指的是對zt版本庫下的123目錄有什麼權限
@users = rw
創建完成之後只需要重啓httpd 就好了service httpd restart
然後照着第二步執行客戶端的操作只需要把路徑改一下就可以了:http://ip地址/svn/zt
#注意
原本正常運行的svn服務器突然崩掉了,很奇怪爲什麼會這樣,檢查了一整天,才發現權限文件衝突也會照成整個服務器崩掉,然後重新把權限調整了下才正常了。
而且版本庫路徑在authz中不可以有亂碼否則也不行
也許 照着此文完完整整的做下來也會報一些的錯誤,但是相信我,此文已經給了你完整的思路和配置步驟而你只需要再根據錯誤信息針對性的去網上找找答案,問題便可遊刃而解,而你也可以藉着這個機會更深一步的瞭解svn的層次架構。
覺得有用就轉發點贊,多多評論一起交流