文章出處

一 、工作環境

  操作系統:Windows Server 2008 R2 SP1 x64
  Apache版本:2.4.4
  Subversion版本: Setup-Subversion-1.7.10.msi
   TortoiseSVN版本: TortoiseSVN-1.7.13.24257-x64-svn-1.7.10.msi + LanguagePack_1.7.13.24257-x64-zh_CN.msi

Subversion 1.7.10支持如下版本:

APR 1.4.5
APR-util 1.3.12
APR-ICONV 1.2.1
Neon 0.29.6
Berkeley DB 4.8.30
OpenSSL 1.0.0e
ZLib 1.2.5
Apache 2.2.21
Python 2.6.6 and 2.7.2
Perl 5.12.3 (ActivePerl)
libintl 0.14.1 (patched)
Ruby 1.8.6
Cyrus SASL 2.1.23
serf 1.0.0
sqlite 3.7.7.1
SWIG 1.3.24 (newer versions doesn't work with VC++6)

下載地址

apache_2.4.4-x86-no-ssl.msi-Download.rar:http://www.yimuhe.com/file-1159841.html
apache_2.4.4-x86-openssl-1.0.1e.msi-Download.rar:http://www.yimuhe.com/file-1159842.html
apache_2.4.4-x64-no-ssl.msi-Download.rar:http://www.yimuhe.com/file-1159838.html
apache_2.4.4-x64-openssl-1.0.1e.msi-Download.rar:http://www.yimuhe.com/file-1159839.html
Setup-Subversion-1.7.10.exe-Download.rar:http://www.yimuhe.com/file-1159844.html
TortoiseSVN-1.7.13.24257-x64-svn-1.7.10-zh-CN.msi-Download.rar:http://www.yimuhe.com/file-1159859.html

二 、安裝步驟

    1.安裝Apache

  如果您已經擁有Apache的安裝程序,那么你就可以雙擊安裝程序開始安裝。請確保你輸入正確的服務器URL(如果你的服務器沒有DNS名稱,你可以直接輸入IP地址)。我建議你將Apache安裝成 for all Users,on Port 80,as a service。注意:如果你已經有一個IIS或者其它的程序使用80端口,安裝可能會失敗。如果是這樣,你可以在Apache安裝完畢后,到該程序目錄下的C:\Program Files\Apache Software Foundation\Apache2.4\conf目錄中找到文件httpd.conf,將其中的Listen 80改成一個不被程序占用的端口,比如Listen 81(如果81也被占用,請自行修改成其它不被占用的端口)。為了預防萬一請先看第二步把81端口加入防火墻例外,再重新運行這個安裝程序,這次應該不會再有問題了。
測試Apache是否安裝成功?
你可以在你的瀏覽器中鍵入 http://loccalhost:81,如果呈現了一個已經配置好的網站(頁面顯示內容為:It works!),那么你的Apache就安裝成功了。 

    2.加入防火墻例外

  按Win鍵+R鍵打開運行,輸入WF.msc,按Enter鍵確認打開 高級安全Windows防火墻。在左邊單擊 入站規則,在右邊單擊 新建規則,選擇 端口,單擊 下一步,選擇 TCP(默認) 和 特定本地端口(默認):填寫:81,單擊 下一步,選擇 阻止連接,單擊 下一步,在 域,專用,公用 上打勾(默認),單擊 下一步,輸入名稱:81端口(任意名稱,隨你填),輸入描述:供Apache服務器使用端口(可選填寫),單擊 完成。至此完成創建防火墻例外。

  3.提高Apache安全性

  如果你將Apache安裝成一個服務,它將以本地system帳戶來運行。為Apache創建一個單獨的用戶來運行它將會更安全一些。請確保運行Apache的用戶有版本庫的完全訪問權限(右鍵版本庫目錄->屬性->安全)。要不然,用戶將無法提交他們的更改。就算Apache以本機system來運行,你也要設置它能完全讀寫版本庫目錄。如果沒有為Apache配置這個許可,用戶將會得到"禁止訪問"的錯誤信息,在Apache的錯誤日志中表現為錯誤500。
在這里,我已經為我的Apache創建一個系統賬戶:apache_admin,并默認加入Users用戶組。
然后Win鍵+R鍵 打開運行,輸入Services.msc,按Enter鍵確認打開服務窗口,找到Apache2.4服務,右鍵選擇屬性->登錄->此賬戶,設置為你新創建好的系統賬戶apache_admin。
設置好登錄賬戶之后,重啟Apache2.4服務,你會發現啟動Apache2.4失敗,彈出錯誤窗口:"windows不能在本地計算機啟動apache2.4.有關更多信息,查閱系統事件日志。如果這是非microsoft服務,請與服務廠商聯系,并參考特定服務錯誤代碼1。"
這是因為某些Apache需要用到的目錄,而apache_admin沒有權限讀寫,這是Windows 6.1以后版本所導致的,Windows 6.1以后版本提高了文件系統安全性,尤其是文件系統為NTFS格式的服務器。
這時需要設置以下幾個目錄的安全性:

為Apache安裝目錄的上級目錄(C:\Program Files\Apache Software Foundation)添加apache_admin賬戶權限:在該目錄右鍵 屬性->安全->編輯->添加->輸入apache_admin,然后確定。
Apache安裝目錄的上級目錄,只需要設置“讀取”的權限。
Apache安裝目錄(C:\Program Files\Apache Software Foundation\Apache2.4),需要設置“列出文件夾目錄”和“讀取”的權限(可以為了方便使用繼承)。
Apache安裝目錄下的子目錄“bin”和“modules”目錄,需要設置“讀取和運行”、“列出文件夾和目錄”、“讀取”的權限。
Apache安裝目錄下的子目錄“logs”目錄,需要設置“列出文件夾和目錄”、“讀取”、“寫入”的權限(若使用Apache安裝目錄的權限繼承,只添加“寫入”權限即可)。
版本庫目錄需要為apache_admin設置完全訪問權限,要不然客戶端無法文件上載,可能會出現禁止訪問等提示,在Apache的錯誤日志中表現為錯誤500。

有些時候,我們創建了新的賬戶,卻沒有作為服務運行的權限,這時候,我們還需要額外設置:Win鍵+R鍵打開運行,輸入Secpol.msc,按Enter鍵確認打開 本地安全策略->本地策略->用戶權限分配->作為服務登錄->添加用戶或組->把apache_admin添加進入后按確定。

    4.安裝Subversion并配置Apache

   A,雙擊Subversion的安裝程序來完成默認安裝,安裝完畢之后。我們進入subversion文件目錄中(默認安裝位置是:C:\Program Files (x86)\Subversion),  在該目錄中的bin文件夾中找到mod_dav_svn.somod_authz_svn.solibdb48.dllintl3_svn.dll這四個文件,將它們拷貝到Apache的modules目錄(通常為C:\Program Files\Apache Software Foundation\Apache2.4\modules)下。

   B,打開Apache的配置文件httd.conf(通常為C:\Program Files\Apache Software Foundation\Apache2.4\conf\httd.conf),修改以下內容:

1 #LoadModule dav_fs_module modules/mod_dav_fs.so
2 #LoadModule dav_module modules/mod_dav.so
3 修改為:
4 LoadModule dav_fs_module modules/mod_dav_fs.so
5 LoadModule dav_module modules/mod_dav.so

其實就是去掉這兩行的注釋。
然后在LoadModule節的最后添加以下兩行:

1 LoadModule dav_svn_module modules/mod_dav_svn.so
2 LoadModule authz_svn_module modules/mod_authz_svn.so

*注意: 這兩行的代碼順序不能錯,以免帶來不必要的麻煩。 

   C,現在,你已經安裝了Apache和Subversion,但是Apache還不知道如果處理像TortoiseSVN一樣的Subversion客戶端。要讓Apache知道哪個URL將
被Subversion使用,你要像下面這樣編輯Apache配置文件,在配置文件的最后添加下面這些行:(通常為C:\Program Files\Apache Software Foundation\Apache2.4\conf\httd.conf):

1 <Location /svn>
2 DAV svn
3 SVNParentPath D:\Subversion\SVN
4 AuthType Basic
5 AuthName "test"
6 AuthUserFile D:\Subversion\passwd
7 #AuthzSVNAccessFile D:\Subversion\svnaccessfile
8 Require valid-user
9 </Location>

這樣配置表示:你所有的版本庫將位于D:\Subversion\SVN目錄下,要訪問你的版本庫可以使用這樣的URL:http://MyServer/svn/,訪問權限將由passwd文件中的用戶名/密碼來限制。

==============================================

對剛剛輸入的apache配置作一些簡短的說明:
<Location /svn>
意味著可以通過像這樣的URL(http://MyServer/svn)來訪問Subversion版本庫
DAV svn
告訴Apache哪個模塊負責服務像那樣的URL--在這里就是Subversion模塊
SVNListParentPath on
在Subversion 1.3及更高版本中,這個指示器使得Subversion列出由SVNParentPath指定的目錄下所有的版本庫
SVNParentPath D:\Subversion\SVN
告訴Subversion在目錄D:\Subversion\SVN下尋找版本庫
AuthType Basic
啟用基本的驗證,比如用戶名/密碼對
AuthName "test"
當一個驗證對話框彈出時,告訴用戶這個驗證是用來做什么的
AuthUserFile D:\Subversion\passwd
指定D:\Subversion\passwd用為密碼文件用來驗證用戶的用戶名及密碼
AuthzSVNAccessFile D:\Subversion\svnaccessfile
指定D:\Subversion\svnaccessfile來限定各個用戶或組在版本庫中目錄的訪問權限
Require valid-user
限定用戶只有輸入正確的用戶名及密碼后才能訪問這個路徑

==============================================

要創建passwd文件,可以按Win鍵+R輸入CMD,按Enter鍵確認打開命令提示符(DOS窗口)。

輸入以下命令切換到apache2.4的bin目錄(通常為C:\Program Files\Apache Software Foundation\Apache2.4\bin):

cd /d C:\Program Files\Apache Software Foundation\Apache2.4\bin

然后輸入以下命令在D:\Subversion創建passwd文件,并且新建一個admin賬戶:

htpasswd -c D:\Subversion\passwd admin

根據提示輸入該admin賬戶的新密碼,再按Enter鍵
輸入以下命令重啟Apache服務或輸入命令Services.msc打開服務窗口,手動重啟Apache2.4服務:

1 net stop "Apache2.4"
2 net start "Apache2.4"

這個時候,你又會發現啟動Apache2.4服務失敗,彈出錯誤窗口:"windows不能在本地計算機啟動apache2.4.有關更多信息,查閱系統事件日志。如果這是非microsoft服務,請與服務廠商聯系,并參考特定服務錯誤代碼1。"
這個錯誤和那幾個新Copy到Apache的so文件有關,因為已經在httd.conf文件中加入這幾個so文件的配置信息,所以在Apache2.4服務啟動的時候,會讀取這幾個文件,但讀取出錯,導致無法啟動服務。當然,這只是我的猜想,歡迎指正。

解決方法
如果承載Subversion和Apache的服務器沒有安裝Microsoft Visual C++ 2008 SP1 Redistributable Package (x64),請先下載并運行完成安裝。
需要注意的是,必須是這個版本VC2008,是不是SP1都無所謂,請根據服務器系統架構,下載x86或x64。當然了,如果你的服務器是x64的,全部安裝也是可以的,但請按順序安裝。

下載地址
Microsoft Visual C++ 2008 Redistributable Package (x86):http://www.microsoft.com/zh-cn/download/details.aspx?id=29
Microsoft Visual C++ 2008 SP1 Redistributable Package (x86):http://www.microsoft.com/zh-cn/download/details.aspx?id=5582
Microsoft Visual C++ 2008 Redistributable Package (x64):http://www.microsoft.com/zh-cn/download/details.aspx?id=15336
Microsoft Visual C++ 2008 SP1 Redistributable Package (x64):http://www.microsoft.com/zh-cn/download/details.aspx?id=2092

 安裝完畢后,請再下載由國外友人提供的修改版Subversion文件,以達到兼容并識別Apache的效果,請根據Subversion版本以及系統架構選擇相應版本:
注意: Subversion 1.7.10不提供x86的修改版本。

下載地址:
Mod Subversion 1.7.8 for Apache 2.4.x x86:

  文件名:mod_svn-1.7.8-ap24-x86.zip
  SHA1: 31c202f9eec1fc566fca78fcda69d3fc7d2c1e58
  下載地址:http://yimuhe.com/file-1158563.html

Mod Subversion 1.7.8 for Apache 2.4.x x64:

  文件名:mod_svn-1.7.8-ap24-x64.zip
  SHA1: d7a6125b9d56404d48272d227ff2196614ecfb22
  下載地址:http://yimuhe.com/file-1158544.html

Mod Subversion 1.7.10 for Apache 2.4.x x64:

  文件名:mod_svn-1.7.10-ap24-x64.zip
  SHA1: 55f0a697f409fd40c0a69fe939c21dcf4c8a403d
  下載地址:http://yimuhe.com/file-1158540.html

 下載完畢后解壓到任意目錄。

1.把bin目錄直接覆蓋到C:\Program Files (x86)\Subversion的bin目錄。

2.把modules目錄直接覆蓋到C:\Program Files\Apache Software Foundation\Apache2.4的modules目錄。

 重啟Apache2.4服務,成功。

 D,權限控制文件創建

在D:\Subversion目錄下創件svnaccessfile文件,然后打開進行配置,可以參照下面的示例:

#組配置  組 = 用戶名
[groups]        
@admin = admin
@user = test  #test用戶還需要按照上面d步驟來創建它和它的密碼
# 為所有庫指定默認訪問規則
# 所有人可以讀
[/]
* = r
# 為test版本庫制定權限
#admin組擁有讀寫權限
#user組只有讀取權限
[test:/svn/test]
@admin = rw
@user = r

 5.TortoiseSVN

雙擊安裝程序,默認安裝即可!完成之后,你就可以用URL(http://IP/svn/test)來訪問版本庫了!
好了,現在你就應該可以去體會一下你的勞動成果咯!
* 為什么要先裝Apahce后安裝SVN呢?
先安裝Apahce后安裝的原因是,如果Apache安裝成功,那么在安裝 SVN的時候,會自動配置相關的屬性!不過也沒什么關系,我們還是可以自己來配置的!


上面的配置僅僅是一個簡單的示例。你還可以對Apache進行許許多多的配置。
1如果你想讓所有用戶對版本庫都有讀的權限而只有特定的用戶才有寫的權限,你可以將這行

Require valid-user

改為

<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>

2上面的配置使用了passwd文件將你所有的版本庫作為一個單元來限定訪問權限。如果你想獲得更多的控制,如限定某個用戶可以訪問版本庫中
的哪個目錄,可以把下面這行的#去掉:

#AuthzSVNAccessFile D:\Subversion\svnaccessfile

然后用文本編輯器創建一個Subversion授權文件。Apache將確保只有有效的用戶可以訪問你的/svn位置,然后將用戶名傳到
AuthzSVNAccessFile模塊,這樣可以依據Subversion授權文件得到更精細的權限控制。注意,路徑將被指定為[庫:路徑]或者簡單的[路徑]。如
果你不明確指定一個庫,訪問規則將應用到由SVNParentPath指定的目錄下所有的版本庫中。一個授權文件例子可能像這樣:

[groups]
admin = admin,administrator
devteam1 = john,rachel,sally
devteam2 = kate,peter,mark
docs = bob,jane,mike
training = zak
# 為所有庫指定默認訪問規則
# 所有人可以讀,管理員可以寫,危險分子沒有任何權限
[/]
* = r
@admin = rw
dangerman =
# 允許開發人員可以完全訪問他們的項目版本庫
[proj1:/]
@devteam1 = rw
[proj2:/]
@devteam2 = rw
[bigproj:/]
@devteam1 = rw
@devteam2 = rw
trevor = rw
# 文檔編寫人員對所有的docs目錄有寫權限
[/trunk/doc]
@docs = rw
# 培訓人員可以完全訪問培訓版本庫
[TrainingRepos:/]
@training = rw

3. 使用SSL來保護你的服務器
因為美國出口限制,默認安裝的Apache服務器不支持SSL。但是你自己可以很容易地在其它地方下載到所需要的模塊,然后安裝它。
首先你需要SSL的必需文件。
下載地址:
文件名:openssl-0.9.8y-downgrade-2.4.4-x86.zip
SHA1: 9fae76682e11863f79a6fe27dfb588f5936e7fbd
來源:http://yimuhe.com/file-1159436.html
文件名:openssl-0.9.8y-downgrade-2.4.4-x64.zip
SHA1: 96cddd184f1bf1e1e1a7deddfd89fccf3aba2c7a
來源:http://yimuhe.com/file-1159431.html
解壓后,將modules目錄覆蓋到Apache的modules目錄。
(含:mod_ssl.so、mod_session_crypto.so)
bin目錄覆蓋到Apache的bin目錄。
(含:abs.exe、apr_crypto_openssl-1.dll、libeay32.dll、openssl.exe、ssleay32.dll)
conf目錄覆蓋到Apache的conf目錄,同時把conf目錄里的openssl.cnf文件復制多一份到bin目錄里,方便使用。
(含:openssl.cnf)
在Apache的conf目錄中用文本編輯器打開ssl.conf,這一步應該不需要的了,如果有問題,就試試這一步吧。
將下面這些行用#注釋掉:

DocumentRoot "c:/apache/htdocs"
ServerName www.example.com:443
ServerAdmin you@example.com
ErrorLog logs/error_log
TransferLog logs/access_log

修改

SSLCertificateFile conf/ssl.crt/server.crt

SSLCertificateFile conf/ssl/my-server.cert

修改

SSLCertificateKeyFile conf/ssl.key/server.key

SSLCertificateKeyFile conf/ssl/my-server.key

修改

SSLMutex file:logs/ssl_mutex

SSLMutex default

刪除以下兩行(如果有,我認為有錯,刪掉之后apache無法啟動):

<IfDefine SSL>
</IfDefine>

打開Apache配置文件(httpd.conf),去掉這行的注釋

#LoadModule ssl_module modules/mod_ssl.so

下面你要創建一個SSL證書,打開命令提示符窗口,輸入以下命令:

cd /d C:\Program Files\Apache Software Foundation\Apache2.4\bin
openssl req -config openssl.cnf -new -out my-server.csr

你將被問及一句口令短語。請注意,不要使用簡單的幾個詞,而應該輸入一整個句子,比如一篇詩詞的一部份,越長越好。同樣,你還要輸入
你的服務器URL。然后其它的問題都是可選問答的,不過我建議你也將它們填充。
下一步,敲入以下命令:

openssl rsa -in privkey.pem -out my-server.key
openssl x509 -in my-server.csr -out my-server.cert -req -signkey my-server.key -days 4000

這樣將創建一個4000天后才過期的證書。最后敲入:

openssl x509 -in my-server.cert -out my-server.der.crt -outform DER

這些命令在Apache目錄下創建了一些文件(my-server.der.crt, my-server.csr, my-server.key, .rnd, privkey.pem, my-server.cert)。
將這些文件拷貝到目錄conf/ssl
(比如C:\Program Files\Apache Software Foundation\Apache2.4\conf\ssl),如果目錄ssl不存在,請先創建一個。
重啟Apache服務。
現在可以用類似這樣的url來訪問你的版本庫了https://servername/svn/project
強制通過SSL來訪問
當你配置了SSL來提高版本庫安全時,你可能想禁用無SSL的http訪問方式,而只允許通過https訪問。要達到這種效果,你要在<Location>塊加
入另外一個指示器SSLRequireSSL。
一個示例<Location>塊可能像這樣:

<Location /svn>
DAV svn
SVNParentPath D:\Subversion\SVN
SSLRequireSSL
AuthType Basic
AuthName "test"
AuthUserFile D:\Subversion\passwd
#AuthzSVNAccessFile D:\Subversion\svnaccessfile
Require valid-user
</Location>

以上介紹的配置為Apache多庫方式,即一個location可以同時為多個版本庫服務,
假設你的ip為192.168.0.1,在D:\SVN目錄下建了兩個版本庫,proj1和proj2
可以分別用下面兩個url來訪問你的版本庫
http://192.168.0.1:81/svn/proj1
http://192.168.0.1:81/svn/proj2
還有一種配置方式為Apache單庫方式,即一個location只能為一個版本庫服務,
配置時只要將上面的SVNParentPath改為SVNPath,同時將后面的路徑由版本庫的父目錄改為版本庫的目錄
如:

<Location /svn> 
SVNPath D:\Subversion\SVN\proj1
AuthType Basic
AuthName "test"
AuthUserFile D:\Subversion\passwd
#AuthzSVNAccessFile D:\Subversion\svnaccessfile
Require valid-user
</Location>

轉載的朋友,請不要刪除以下行,對此,表示感謝!!!
原文來自VAllen cnblogs鏈接:http://www.cnblogs.com/VAllen/archive/2013/06/17/ModSVN1710AndApache244Installer.html

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()