輔助開發的軟件有不少種,在Visual Studio開發中,針對於版本管控,Subversion+apache+AnkSVN多是比較好的搭配選擇。在配置服務器的時候,須要花費不少時間,下班閒暇之餘,我想mark一下,一邊將來再次須要配置的時候能夠比較從容,但願給閱讀該文章的朋友也能夠解決一些困惑。php
Subversion:置於服務器端,開發源代碼的版本管控軟件的核心。web
apache:置於服務器端,主要用於web管控,例如建制和開啓「服務」。(Subversion脫離apache,須要用Subversion安裝目錄下的一個svnserve.exe啓動服務repository,在這裏咱們不對此方法具體解釋,若有興趣的可留言mark,有機會一塊兒討論下)apache
AnkSVN:置於客戶端,結合visual studio使用,有使用過Tortoise的朋友應該很容易上手,由於具體的功能和操做相似,只是在visual studio端做了一個結合,方便visual studio開發者使用服務器
步驟以下:(注意:請沒有配置過的朋友嚴格按照文章的順序配置,跳過某段均可能致使配置時出現的問題沒法處理)ide
1) 複製C:\Program Files\Subversion \bin目錄下的mod_dav_svn.so、mod_authz_svn.so到C:\Program Files\Apache Software Foundation\Apache2.2\modules目錄下。svn
2) 複製C:\Program Files\Subversion \bin目錄下的全部dll文件(共17個文件)到C:\Program Files\Apache Software Foundation\Apache2.2\bin目錄下工具
3) C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf配置文件,找到#LoadModule dav_module modules/mod_dav.so和#LoadModule dav_fs_module modules/mod_dav_fs.so文件 ,並取消前面的「#」。並在LoadModule dav_fs_module modules/mod_dav_fs.so的下一行增長:LoadModule dav_svn_module modules/mod_dav_svn.so和LoadModule authz_svn_module modules/mod_authz_svn.so,一個語句一行,最後的形式爲:ui
LoadModule dav_module modules/mod_dav.so加密
LoadModule dav_fs_module modules/mod_dav_fs.sourl
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
2. 使用Apache自帶的htpasswd工具,生成密碼文件,操做以下:
1) 創建C:\Program Files\Apache Software Foundation\Apache2.2\conf_svn目錄(該目錄用於存儲 htpasswd命令生成的passwd的文件,在配置文件的編寫,你將看到)
2) 在DOS界面,輸入以下命令:
C :\ \Apache\Apache2\bin > htpasswd -cm d:\passwd user1 //用htpasswd命令建立第一個用戶(user1),同時生成密碼認證文件,c參數爲create,m參數爲MD5加密方式
New password: ******
Re-type new password: ******
Adding password for user user1 //加入用戶成功
C:\Program Files\Apache Group\Apache2\bin> htpasswd -m d:\passwd user2 //用htpasswd命令建立第二個用戶(user2),注意若是在這時加入c參數會覆蓋掉以前建立的用戶及文件。
New password: ******
Re-type new password: ******
Adding password for user user2 //加入用戶成功
SVN配置
版本庫配置
首先建立版本庫存儲位置,如:D:\svnserver\repository。
版本庫分單庫模式和多庫模式,簡單的說多庫就是在\repository目錄下有多個版本庫,好比能夠用http://localhost/repository/repo01,http://localhost/repository/repo02,...來訪問不一樣的版本庫,這些版本庫對應於D:\svnserver\repository下面的子目錄repo01、repo02,…。而單庫只能用http://localhost/repository來訪問惟一的版本庫。
1. 單庫模式配置
打開配置文件:
C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf,在文件最後增長:
<Location /repository>
DAV svn
SVNPath "D:\svnserver\repository"
AuthType Basic
AuthName "LiMengLei subversion repository"
AuthUserFile "C:\Program Files\Apache Software Foundation\Apache2.2\conf_svn\passwd"
Require valid-user
</Location>
配置表示:你全部的版本庫將位於D:\svnserver\repository目錄下,要訪問你的版本庫可使用這樣的URL:http://YourIP/ repository /,訪問權限將由passwd文件中的用戶名/密碼來限制。
詳細說明以下:
---------------------------------------------------------------------
<Location /repository > //訪問SVN服務器的URL組成模式
意味着能夠經過這樣的URL(http://serverIP/ repository)來訪問Subversion版本庫
DAV svn
告訴Apache哪一個模塊負責負責上面的URL--在這裏就是Subversion模塊
SVNPath "D:\svnserver\repository"
告訴Subversion在目錄D:\svnserver\repository下尋找版本庫
AuthType Basic
啓用基本的驗證,好比用戶名/密碼
AuthName "LiMengLei subversion repository"
當一個驗證對話框彈出時,告訴用戶這個驗證是用來作什麼的
AuthUserFile "C:\Program Files\Apache Software Foundation\Apache2.2\conf_svn\passwd"
指定C:\..\passwd做爲密碼文件用來驗證SVN用戶的用戶名及密碼
Require valid-user
限定用戶只有輸入正確的用戶名及密碼後才能訪問這個路徑
若想配置無需用戶名驗證的登陸方式,可在httpd.conf的最後添加以下內容:
<Location /repository>
DAV svn
SVNPath "D:\svnserver\repository"
</Location>
2. 多庫模式配置
多庫模式的配置方式實際上就是將SVNPath "D:\svnserver\repository"中的SVNPath變爲SVNParentPath。所有文件以下:
<Location /repository>
DAV svn
SVNParentPath "D:\svnserver\repository"
AuthType Basic
AuthName "LiMengLei subversion repository"
AuthUserFile "C:\Program Files\Apache Software Foundation\Apache2.2\conf_svn\passwd"
Require valid-user
</Location>
3. 運行版本庫
1).若已安裝TortoiseSVN,在D:\svnserver目錄下,選中repository文件夾,右鍵TortoiseSVN--->Create repository here
2).經過命令方式創建版本庫,
DOS命令輸入:C:\Program Files\Subversion\bin >svnadmin create D:\svnserver\repository
重啓Apache,在IE地址欄中輸入http://localhost/repository。輸入用戶名limenglei密碼123456,界面中出現Revision 0:/。恭喜,你的版本庫已經開始運做。
4. 權限控制
打開配置文件:
C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf。將最後添加的<Localtion /repository>內容修改以下:
<Location /repository>
DAV svn
SVNPath "D:\svnserver\repository"
AuthzSVNAccessFile D:\svnserver\repository\conf\authz(該文件的修改的方法在文章最低端,是權限的管控)
AuthType Basic
AuthName "LiMengLei subversion repository"
AuthUserFile "C:\Program Files\Apache Software Foundation\Apache2.2\conf_svn\passwd"(這是你生成的密碼文件,copy到該目錄下,或將目錄名稱指向該文件)
Require valid-user
</Location>
在authz文件中定義了每一個帳號或者每一個角色能夠幹什麼,看如下的例子:
[repo01:/]
User1 = rw
User2 = r
對於多庫,定義其中一個repo01下的全部目錄,運行user1讀寫,users只讀
[repo01:/project1]
User1 = rw
User2 = r
和上面相似,只不過規定細化到了子目錄
[/project1]
User1 = rw
User2 = r
這個說的是單庫的狀況
[groups]
Admin = user1,user3
Readonly = user2,user4
[repo01:/]
@admin = rw
@readonly = r
這個就是設定角色了,和前面的區別主要是有了group,而後group的名字前面有@,爲了和用戶名區分。
這暫時是大體的配置內容,後續再做修改~