Linux下SVN部署/安全及權限配置
發表于:2013-10-30來源:web開發家園作者:sxwgf點擊數:
標簽:linux
本文包含以下內容: SVN服務器安裝 SVN權限管理 SVN使用SASL加密
本文包含以下內容:
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庫中的版本是可運行的代碼。
原文轉自:http://web.itivy.com/article-809-1.html