由於前些年在版本的管理上採用的都是CVS系統,總體上而言還是很優秀的,經過了多年 的項目開發管理經歷,在使用CVS系統在管理中大型的軟件項目時還是遇到了很多不可克服的 缺陷和局限性,主要表現在如下的幾個方向: 1. 無法進行文件名稱的修改活動,這樣一來就會導致必須先刪除該文件再上傳,丟失了 歷史信息,要不就必須到服務上將xxx,v文件進行改名(我採用這種方法,不過總是 找管理員太不方便了); 2. 目錄名稱沒有被管理,這樣就不能進行改名等動作,其實項目的目錄結構對於項目的 成功起了非常重要的作用,每次也只能到服務器上進行修改; 3. 項目的分支代價太高,需要對每一個文件都進行標記,對於大的項目耗時太長,並且 基本上不能刪除廢棄了的分支和標記,因為那樣很容易導致項目倉庫的損壞,我就遇 到了好多次這種讓人發狂的情況; 4. 對於文件二進制和文本的處理經常會出現混亂,結果就使將二進制文件當作文本上傳 後內容被擴展導致丟失,因為有些時候二進制文件的擴展名和某些文本文件的擴展名 相同了,所以導致CVS識別就會出錯。 可以安裝並配置subversion(簡稱svn)系統,使用svn來替換CVS系統,以解決上述問題。 Subversion有兩種運行方式,一種是基於Apache Http Server,另外一種是Subversion Standalone Server。下面我講解的是基於Apache Http Server的Subversion,這樣做幾個好處 A.能使用WebDAV協議。 B.能使用瀏覽器作為客戶端工具瀏覽源碼倉庫。 C.可以很容易的支持到SSPI(Windows域認證)和LDAP(AD?),這些都是Apache本身就支持的。 D.能得到比較完善的Apache安全認證系統,比如SSL加密連接。 2.svn安裝 安裝系統:CentOS 安裝方式:yum install(這種方式比較簡單,如果用源碼安裝容易產生版本兼容的問題) 建議: 最好將svn系統安裝在Linux操作系統環境下,這樣一來系統比較的穩定可靠,同時也可以減少很多的病毒和攻擊的服務器日常維護工作量,我將svn安裝在了CentOS的服務器版本下。 安裝: yum install httpd httpd-devel subversion mod_dav_svn mod_auth_mysql 確定已經安裝了svn模塊:mod_dav_svn #cd /etc/httpd/modules #ls | grep svn mod_authz_svn.so mod_dav_svn.so 如果要確認是否成功的安裝了svn可以通過如下的命令進行驗證: svn --version svn, 版本 1.6.11 (r934486) 編譯於 Jun 8 2011, 16:21:54 Copyright (C) 2000-2009 CollabNet. Subversion is open source software, see http://subversion.tigris.org/ This product includes software developed by CollabNet (http://www.Collab.Net/). 可使用以下的檔案庫存取 (RA) 模組: * ra_neon : Module for accessing a repository via WebDAV protocol using Neon. - handles 'http' scheme - handles 'https' scheme * ra_svn : Module for accessing a repository using the svn network protocol. - with Cyrus SASL authentication - handles 'svn' scheme * ra_local : Module for accessing a repository on local disk. - handles 'file' scheme 3.apache的配置 配置/etc/httpd/conf/httpd.conf (httpd的安裝目錄,一般是/etc/httpd或/usr/local/appache2) 進入到/etc/conf目錄下用vim打開httpd.conf配置文件進行選項的修改: a. KeepAlive選項(可選) 該選項可以修改也可以不修改,主要是為了提高http協議訪問的性能,可以 使得svn倉庫的訪問更快,KeepAlive表示可以保持http的永久性TCP連接, 省去了每次都需要進行重建TCP連接的巨大開銷,找到如下幾個選項並修改: KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 15 b. ServerAdmin/ServerName選項(可選) 對於需要對系統進行管理的可以在ServerAdmin選項設置成為管理員的email 地址,這樣在出現問題時apache會自動發送郵件到該地址中;而ServerName 必須設置為本服務器的域名,如xxx.xxx.cn:80。 為了使客戶端能夠通過Apache來訪問SVN檔案庫,Apache需要加載一個特殊的模塊mod_dav_svn。如果您的Apache是按照與預設目錄安裝的,mod_dav_svn 模塊應該會安裝在 Apache 安裝位置 (默認路徑是 /usr/local/apache2) 的 modules 子目錄內。同時在Apache的配置文件httpd.conf(默認路徑為/usr/local/apache2/conf)中已經使用LoadModule指令加載了該模塊(如果沒有,請手動添加)LoadModule 指令的語法很簡單, 就是將一個具名模塊對映到共享鏈接庫在磁盤上的位置: LoadModule dav_svn_module modules/mod_dav_svn.so 注意這個指令必須出現在其它的 Subversion 相關指令之前。 還要加載mod_authz_svn.so模塊 LoadModule authz_svn_module modules/mod_authz_svn.so 如圖: 測試Apache是否可以正常啟動: #vim /etc/httpd/conf/httpd.conf -- Edit what you need and save the file #/etc/init.d/httpd start #chkconfig httpd on 在瀏覽器中訪問:http://localhost, 如果能看到Apache的頁面,則說明Apache已經正常啟動。 Apache命令: 啟動:/etc/init.d/httpd start 關閉:/etc/init.d/httpd stop 重啟:/etc/init.d/httpd restart 查看日誌:tail -f /etc/httpd/logs/error-log 4.svn的配置 進入到/etc/httpd/conf.d目錄下用vim打開subversion.conf配置文件進行選項的 修改: a. module的配置 一定要保證下面的兩句話存在於配置文件中,否則無法在如svn的模塊,就 無法訪問svn的倉庫了: LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so b. 倉庫目錄配置 項目倉庫就是用於存放項目目錄結構的服務器目錄,一般情況下Linux的規則時間容易變化的內容存放在/var目錄下,所以我們需要在/var目錄下創建一個svn目錄,這樣所有的項目的根目錄都作為/var/svn/目錄下的一級子目錄了,這樣以來就可以在一個倉庫目錄下存放多個項目了。 下面將使用myapp這個倉庫來配置Subversion # mkdir -p /var/svn # cd /var/svn # svnadmin create myapp # chown -R apache.apache myapp # vi /etc/httpd/conf.d/subversion.conf 加入以下配置 LoadModule dav_svn_module modules/mod_dav_svn.so 下面建立可訪問用戶文件LoadModule authz_svn_module modules/mod_authz_svn.so <Location /svn> DAV svn SVNParentPath /var/svn # # # Limit write permission to list of valid users. # <LimitExcept GET PROPFIND OPTIONS REPORT> # # Require SSL connection for password protection. # # SSLRequireSSL # AuthType Basic AuthName "Authorization Realm" AuthUserFile /var/svn/passwd Require valid-user # </LimitExcept> </Location> # htpasswd -c /var/svn/passwd myapp 要增加用戶,則使用下面命令 # htpasswd /var/svn/passwd other 重起Apache # service httpd restart Subversion部分安裝完成,打開瀏覽器訪問http://localhost/svn/myapp即可看到效果。 在CENTOS 6下 須注意SELINUX
如下圖 建立相關連結指令
|