最近想跟一幫朋友做點東西,由于幾個朋友都身處異地,要想實現版本控制,只能自己搭建一個小的服務器,通過互聯網環境來實現版本控制了。本來也在網上找了好多資料,但是總是缺少一些必要的信息,導致最后連接不上服務器。今天好幾天的折騰,到網上去查資料,自己動手測試,最后終于搞定了,這里跟大家分享一下,希望對一些朋友會有用。如果文章中有不對的地方,還請大家輕拍磚,多多指正!
【基本原理】
通過apache或IIS搭建一個小型的服務器,使用花生殼工具或路由器自帶的動態域名解析功能,將申請的免費域名綁定動態的IP地址上,利用路由器完成端口映射,通過HTTP協議完成SVN版本控制。
【工具準備】
1、apache工具(xampp):http://www.apachefriends.org/zh_cn/xampp-windows.html#1787?????該鏈接包含三種壓縮方式的下載鏈接,你可以根據自己的喜好去下載相應的版本。至于具體的用法的話,可能需要你自己去研究了,畢竟在本文中不是我們講述的重點。
2、SVN 服務器(Subversion):http://sourceforge.net/projects/win32svn/? (點擊那個Download綠色按鈕就會自動下載了)
3、SVN 客戶端(TortoiseSVN):http://tortoisesvn.net/downloads.html? ?(選擇相應的處理器版本進行下載)
4、SVN 中文語言包:http://tortoisesvn.net/downloads.html? ? (在Language Package部分,選擇自己對應的語言版本和處理器信息的語言包進行下載,我們就是簡體中文)
5、花生殼:http://www.oray.com/peanuthull/download.php? ?(在此頁面,選擇你的操作系統版本,進行下載。本文標題是Win7下,自然就乖乖選擇Windows吧)
【配置過程】
1、利用花生殼網站申請一個免費的個人域名,利用申請到的護照登錄花生殼客戶端,在該域名上右鍵選擇“域名診斷”,如果顯示了以下圖片,就表明動態域名解析已經OK了。大家可以試著ping一下自己申請的域名,應該是可以ping通的。
2、安裝SVN服務器程序、SVN客戶端程序、SVN客戶端中文語言包。
安裝好這三個程序之后,在SVN客戶端程序的設置里面,配置成中文語言,這樣大家使用SVN就更加方便一點了。PS: 當然,如果你習慣玩英文的話,不用裝中文語言包也是OK的。
3、安裝xampp。(建議安裝或解壓到不存在空格和中文字符的文件夾目錄下)
如果你下載的是安裝版的,直接安裝就好了;如果你下載的是非安裝版,解壓后,執行setup-xampp.bat文件,也能夠一樣完成安裝操作。
?
4、配置端口映射
登錄到路由器,找到“轉發規則”--->“虛擬服務器”,然后添加新的條目,如下圖所示:
5、配置Apache服務
在目錄xampp/apache/conf中找到httpd.conf,分別找到Listen部分和ServerName部分,修改數據如下:
#Listen 80
Listen 你的端口號(例如"Listen 8080")
#ServerName localhost:80
ServerName 你的花生殼域名:你的端口號(例如“ServerName xxx.gicp.net:8080”)
保存后重啟Apache服務,在瀏覽器地址欄輸入“xxx.gicp.net:8080”,看看能不能看到xampp的首頁。如果可以看到,說明你的服務器搭建好了,我們就可以配置SVN服務了。
但是!!!!!!!!!
我的電腦在最開始的時候就是這個地方不行。為什么?
后來經過各位網友的提示,可能是防火墻的問題,于是將Windows自帶的防火墻關閉了,但是還是不行啊!坑爹啊,你裝了安全軟件,有木有?你妹啊,你裝了殺毒軟件,有木有!
如果經過上面的步驟,你們跟我一樣不能連接到服務器,還是乖乖的檢查一下你的安全類軟件的配置吧,看看是不是把入站和出站的規則防護的太嚴了?不管你們是不是防護的太嚴,反正我是防護太嚴了。找到了問題,各位試著關閉安全類軟件的防火墻,或者設置一下過濾規則吧,然后再試試打開網址,應該是可以的。當然,不能關著防火墻裸奔吧,嗯,還是把系統自帶的防火墻,安全軟件的防火墻都設置一個過濾規則吧,允許Apache的服務通過防火墻!
6、配置SVN服務
在適合的地方新建一個文件夾,用于存放你的第一個SVN版本倉庫。進入新建的文件夾,在空白地方右鍵選擇“TortoiseSVN”--->“在此創建版本庫”,則在該文件夾下會自動生成幾個文件夾和若干個文件,我們不需要對這個文件夾再做其他操作了,如果各位感興趣可以去查一下每個文件夾的用途。
將SVN服務器配置成一個開機自動啟動的服務,方便每次開機時可以自動開啟此服務。打開CMD,進入到SVN服務器Subversion的bin目錄下,執行如下命令:
sc create subversion_service binpath= "c:\subversion\bin\svnserve.exe --service -r 你的版本倉庫的目錄" displayname= "Subversion Repository" depend= Tcpip
(注意:以上命令在每個“=”符號之后都有一個空格,請各位博友看清楚哈)
然后啟動該服務,我們的SVN服務器就運行起來了。
但是,還沒有結束。復制svn服務器bin中的四個文件mod_dav_svn.so,mod_authz_svn.so,intl3_svn.dll,libdb44.dll到apache的modules文件夾中, 并修改httpd.conf文件中的配置信息。
去掉LoadModule dav_module modules/mod_dav.so簽名的“#”注釋符號,并在其下一行添加如下信息?
LoadModule dav_svn_module modules/mod_dav_svn.so?
LoadModule authz_svn_module modules/mod_authz_svn.so?
在文件最后添加 :
?
DAV svn?
SVNPath "d:\svn_repository\test"?
AuthType Basic?
AuthName "Subversion repositories"?
AuthUserFile "d:\passwordfile"?
Require valid-user?
?
保存該文件后,需要重啟apache服務。
說明:
/svn是用來訪問倉庫的?
d:\svn_repository這個是你設置的版本倉庫的路徑
d:\passwordfile這個是密碼文件,現在就來創建該密碼文件:?
打開命令窗口cmd?
cd到apache的bin目錄,然后輸入?
htpasswd -c d:\passwordfile ?你的賬戶名稱?
輸入兩次密碼 (是你為賬戶名稱設置的登錄密碼)
就搞定了 。
?
7、測試
打開游覽器,輸入http://xxx.gicp.net:端口號/svn/,輸入用戶密碼(就剛才設置的),如果見到下圖,那就萬事大吉了。
?
? 接下來,你可以用SVN客戶端來控制你的版本了。