svn是一個功能強大的代碼版本管理系統,能夠將服務端安裝在linux、unix以及windows下。svn一般採用http方式進行代碼提交與下載。因爲密碼採用明文傳輸,所以存在泄密的風險。若採用https協議加密,則可大大提升安全性能。linux
在windows下配置基於apache的svn,帶openssl0.9.8。可經過http或者https訪問,或者只能經過https訪問。部分資料從網上摘錄,通過本人測試後,對部份內容進行了補充。apache
1、下載和安裝windows
(一)下載安全
一、下載apache,在此我下載的是apache-2.2.11-win32-x86-openssl-0.9.8,該版本的apache自帶了openssl。(2013年11月最新版已經更新到2.4.6)服務器
二、下載subversion,在此配置文檔裏我用的是1.6.4。可在官網上下載。svn
(二)安裝 性能
安裝apache和subversion; 測試
注:若是安裝完apache以後出了no services installed的狀況,請在cmd裏進入到apache的bin目錄,而後運行httpd.exe -k install -n apache2 便可。apache2根據本身apache的版本改變。 ui
2、建配置庫及用戶名。 加密
1、建配置庫
在cmd命令裏進入subversion的bin目錄,而後輸入
svnadmin create d:\svn\test
注:上層目錄d:\svn\test必須存在。即在d盤下建svn\test文件夾。
運行此命令即建好一個庫。打開以後可看到test空文件中多了下圖所示的那些文件。
2、建用戶名。
將apache設爲環境變量,而後在cmd命令裏進入apache\bin目錄,執行如下命令便可。
初次建用戶名:htpasswd -c [驗證文件名] username
username對應咱們的用戶名,而後輸入密碼便可。
增長用戶名:htpasswd -m [驗證文件名] username
刪除用戶: htpasswd -D passwd username 注:此處必須用大寫的D。
3、配置過程
在此爲止,咱們已經將客戶端及服務器端的軟件都安裝好了,接下來就是配置過程了。
(一)配置能夠經過http訪問
一、打開subversion的bin目錄,將下圖所示的三個文件複製到apache的modules目錄下。(由於apache自己不包含dav_svn.so和authz_svn.so模塊。
注:若是apache的版本不是2.2.11,libdb44.dll的名字可能就是libdb**.dll。
二、由於apache和subversion的版本不對應,因此應將subversion的bin目錄中的全部的dll文件複製到apache的bin目錄裏,在複製的過程當中,要讓apache中止。
三、打開apache的conf目錄裏的httpd.conf文件進行修改。
(1)在LoadModule部分,首先將如下兩行前面的#去掉。
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
(2) 在LoadModule部分添加如下兩句,由於咱們前面只是將subversion中的dav_svn.so和authz_svn.so模塊複製到apache的modules目錄下,可是apache啓動後並不會加載它,因此咱們添加如下兩句,以便讓apache會加載這兩個模塊。
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
(3)在httpd.conf文件的最後添加如下內容
<Location /repos>
DAV svn
SVNParentPath "d:\svn" # 庫的路徑。
SVNListParentPath on # 查看全部的庫(即庫列表)
AuthType Basic
#SSLRequireSSL #限制項目倉庫只能經過https的形式進行訪問,若只採用https訪問,則去掉#
AuthName "svn repos"
AuthUserFile "D:\svn\passwd" #用戶名及密碼的存放路徑,據本身的狀況寫。
AuthzSVNAccessFile "D:\svn\svnaccessfile" #權限文件的存放路 徑,據本身的狀況寫。
Require valid-user
</Location>
到此爲止經過http訪問的全部的配置都已經完成。給用戶權限便可經過http://ip:port/repos/test進行訪問。
注: (1)ip:服務器的IP。
port:安裝apache時咱們選擇的端口。
repos:location後面的部分,根據本身的實際狀況填寫。
test:庫的名稱。
(2)在配置文件httpd.conf中添加內容時必定要注意在英文狀態下輸 入,不然會致使apache啓動不了;另外上面#及#後內容必定要去掉。
(二)經過https訪問或者只能經過https訪問
打開apache的conf目錄裏的httpd.conf文件進行修改。
一、將如下三行的註釋去掉,即去掉#。
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule ssl_module modules/mod_ssl.so
#注:系統缺乏文件mod_ssl.so,須要從網上下載並複製到modules目錄,不然沒法啓動apache服務 下載mod_ssl.so
二、將如下行前面的註釋去掉
#Include conf/extra/httpd-ssl.conf
改成Include conf/extra/httpd-ssl.conf
三、若是但願只經過https訪問,則應該前面Location部分的#SSLRequireSSL前面的#去掉。沒有去掉的話是https和http形式均可以訪問。
四、申請證書
在cmd命令進入到apache的conf目錄,執行如下命令。
openssl genrsa -out server.key 1024 #生成密鑰
openssl req -new -key server.key -out server.csr -config .\openssl.cnf #生成server.csr,此處須要從互聯網下載openssl.conf文件,更名爲openssl.cnf
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt #生成證書
生成證書時365是證書的有效期,可根據本身的狀況進行填寫。以上命令執行完以後會生成server.key ,server.csr,server.crt三個文件。
4、分配權限
在此文檔我將權限文件命名爲svnaccessfile,在其中添加權限內容。
內容以下:
[groups]
admin = username
dev =
...... #對應咱們所須要的組。
[/] #設置哪些組或用戶能夠查看庫目錄(全部的庫的一個列表)
@admin=r
[test:/] #給庫設置訪問權限。
@admin =rw
@dev=r
[test:/xx/xx] #繼續細分庫的權限。
@admin = rw
到此爲止,全部的配置都已經完成,咱們能夠經過客戶端進行平常工做了。