本文包含以下內容:
SVN伺服器安裝
SVN許可權管理
SVN使用SASL加密
SVN上傳時同步其它目錄
需求
在WEB線上版本管理的基礎上,能夠在代碼上傳之後,立刻通過WEB訪問,查看修改效果;同時,保證資料的安全性;
SVN安裝
SVN伺服器有2種運行方式:獨立伺服器和藉助apache運行。
svnserve和apache相比是輕量級的,也比較簡單,svnserve包含在subversion裡面,所以只要安裝了subversion就相當於安裝了一個小型的svn伺服器。它使用自己的一套協議通訊。例如訪問apache時使用 http:// 首碼,而svnserve使用 svn:// 首碼.
這裡介紹的是通過獨立伺服器方式運行,優點是簡單小巧。如果是支援較大規模的開發,還是推薦使用apache伺服器方式;這裡使用svnserver安裝;
1.首先為SVN單獨建立一個使用者,這樣可以使用作業系統的安全特性;
2.將svnadmin這個使用者加入到sudu組;
3.安裝:
sudo apt-get install subversion
4.建立測試目錄:
mkdir /home/svnadmin/test
5.建立版本庫:
svnadmin create /home/svnadmin/test
4. 匯入項目
例如現在有個工程,名稱為examPro,
位置/alidata/www/examPro , 將這個工程匯入到本地倉庫中。
svn import /alidata/www/examPro file:///home/svnadmin/examPro -m "import examPro"
在上一個例子裡,將會拷貝目錄examPro到版本庫中;
這樣這個工程就在納入伺服器的本地倉庫管理。
為了使用SVN的同步更新機制,我們需要在svn伺服器環境上籤出一份最新工程拷貝(為表述方便,這裡稱為A目錄)。
$ svn checkout file:///home/svnadmin/examPro
在這個拷貝裡,我們一般不做修改,而是用來同步更新;當開發機器上有任何修改,更新到SVN伺服器上時,能同步更新到A目錄;這樣,就能保證A目錄下的代碼是整個工程的最新代碼,而使用A目錄搭建的WEB測試環境,就是最新的WEB測試環境;
5.啟動SVN服務
$ svnserve -d -r /home/svnadmin/examPro
描述說明:
-d 表示svnserver以“守護”進程模式運行
-r 指定檔案系統的根位置(版本庫的根目錄),這樣用戶端不用輸入全路徑,就可以訪問版本庫。
6.停止svn服務:
killall svnserve //停止svnserve服務
SVN許可權管理1.SVN版本庫目錄說明
db:存放具體資料;
hooks:鉤子程式存放地,比如我們要實現同步更新的操作,在這裡實現;
conf:設定檔存放地
下面具體說說conf目錄;
conf目錄下有三個檔案:
svnserve.conf、authz、以及passwd;
2.SVN服務組態檔:svnserve.conf
查看該檔案,首先是匿名使用者的許可權配置:
anon-access = none
auth-access = write
表示:對於匿名使用者,無存取權限;
對於授權使用者,有寫入權限;
接下來的一段用於配置使用哪種授權登入方式;
可選的有password-db ,就是使用者名稱和密碼都是明文存放在同級目錄下的passwd檔案中;優點是高效配置簡單,缺點是安全性弱,明文總不是那麼讓人感覺可靠;
另一種是authz-db,這種方式的使用者密碼使用了sasl加密,安全上有保證;
選擇這種方式的設定,將password-db 注釋掉:
# password-db = passwd
authz-db = authz
#指定授權所屬的域,C++的同志可將其理解為名字空間;
realm = examPro
接下來是[sasl]段,用於標識是否進行SASL加密處理;
use-sasl = true
min-encryption = 128
max-encryption = 256
變數 min-encryption 和 max-encryption 控制伺服器所需要的加密強度。
3. 詳細許可權設定檔authz:
這個就是授權資料庫,用於配置指定目錄對使用者的存取權限;
首先是指定一個使用者組,按組來分配許可權總是方便的,即使目前你的團隊一個組只有一個人。在新加入成員的時候,你就能體會到按組分配許可權的便利性了;
[groups]
g_fronter=cuicc,gdii
g_vip=coo
g_doc=yhh
[examPro:/]
@g_vip=rw
@g_fronter=r
@g_doc=r
[examPro:/protected/modules]
@g_vip=rw
@g_fronter=
*=
[examPro:/protected]
@g_doc=
對於以上代碼的配置的詳細說明,可以參考本文的參考文章[1]SVN許可權配置,裡面介紹的比較詳細,這裡就不多說,有疑問的請留言或mail;
SVN使用SASL加密
1.配置svnserve.conf,注釋掉password-db = passwd
並啟用sqsl:use-sasl = true
2.建立一個svn.conf檔案,一般放在/usr/lib/sasl2或者/etc/sasl2,內容為:
pwcheck_method: auxprop
auxprop_plugin: sasldb
sasldb_path: /home/svnadmin/config/sasldb
mech_list: DIGEST-MD5
其中sasldb_path 指定你打算將sasl加密的資料庫放置的位置;
注釋:pwcheck_method指明檢查的方法,這裡是“auxprop ”,這個pwcheck_method還對應了如啟動一個代理作為認證服務等方式,而現在的意思就是使用本檔案說的方式去檢查。然後我們指明auxprop_plugin為sasldb,也就是使用一個檔案存放使用者名稱密碼,也就是/home/svn/svnjiami/sasldb,其它的認證資訊存放plugin還有sql和ldapdb。而mech_list指明了認證資訊傳遞機制。
svnserve 已經在運行,你需要重啟服務,並確保它讀取了更新後的配置參數
killall svnserve //停止svnserve服務
svnserve –d –r /home/svn //啟動svnserve服務
3.建立使用者和密碼
使用saslpasswd2 程式
文法:saslpasswd2 –c –f /home/svn/jiami/sasldb –u [svnserve.conf裡面配置的realm名字] [username]
eg:saslpasswd2 -c -f /home/svnadmin/config/sasldb -u examPro colin
會出現互動介面,提示輸入兩次密碼;
附:
saslpasswd2 -d -f home/svnadmin/config/sasldb -u 使用者名稱//刪除使用者
sasldblistusers2 -f /home/svnadmin/config/sasldb // 查詢使用者
PS:如果訪問庫的時候出現以下提示 "Could not obtain the list of SASL mechanisms",原因是Linux預設沒有安裝DIGEST-MD5,此時,可用以下命令安裝更新:yum install cyrus-sasl-md5 , cyrus-sasl-md5首頁: http://asg.web.cmu.edu/sasl/, 安裝包:ftp://ftp.andrew.cmu.edu/pub/cyrus/
配置完成;
SVN上傳時同步到伺服器其它目錄
svn/examPro/hooks/目錄下:
能看到一堆模版鉤子檔案,我們需要的是post-commit.tmpl,
copy一份,命名為post-commit。然後修改;
1.設定語言環境:
#這行比較重要,需要根據你的伺服器環境選擇正確的語言環境,否則,這個update不會工作;
#export LANG=zh_CN.UTF-8
export LANG=en_US.UTF-8
2.設定SVN更新時需要同步更新的目錄
svn update /alidata/www/examplePro --username yoursname --password yourpwd
以上這行表明,當svn伺服器版本有更新時,則同步更新到/alidata/www/examPro目錄下的對應檔案;yoursname 和yourpwd是你在sasl中設定的使用者名稱和密碼;(這裡還是涉及到了明文存放,對此,你可以分配一個使用者對svn版本庫只有全域的讀許可權)
3.輸出日誌,便於跟蹤查詢
echo `whoami`,$REPOS,$REV >> /home/svnadmin/examPro/hooks/svn_hook.log
每當有更新時,更新日誌裡就會插入一條語句,表明何時有過更新;(這個也可用來配置環境時調試,用來查詢同步是否起效)
我們的配置到這裡就全部完成;
現在,SVN就實現了版本管理的功能,同時,同步更新的目錄有利於測試人員整合測試;
開發人員需要保證的是,任何時候簽入到svn庫中的版本是可啟動並執行代碼。
參考:
[1]:SVN許可權配置:http://hi.baidu.com/victorlin23/item/f3f42f276e9c810a42634a94
[2]:SVN使用SASL加密:http://www.cnblogs.com/linn/archive/2011/08/04/2127014.html
如果您認為這篇部落格讓您有些收穫,請點擊右下角的【推薦】按鈕。
Posted by: 大CC | APR08,2013
部落格:blog.me115.com [訂閱]
微博:新浪微博