# 在 Win32 安裝 Apache 2.2 with OpenSSL + Subversion 1.5

[Subversion 1.5](https://subversion.apache.org/) 版是近幾年來 Subversion 最大幅度的一次更新，除了效能提升以外，最重要的就是新增了 [Merge tracking](https://subversion.apache.org/docs/release-notes/1.5.html#merge-tracking) 的功能，詳細的說明可參考 [Subversion 1.5 Release Notes](https://subversion.apache.org/docs/release-notes/1.5.html)，而今天為了要將我公司的 Apache 2.0 + Subversion 1.4 升級到 Apache 2.2 + Subversion 1.5 費了我好一番的功夫阿，看著 Subversion 1.5 附的 README.txt 說明檔設定總是出現問題，我不斷的嘗試好久才安裝升級成功，花了我兩個小時！@\_@''

以下是本次升級的筆記：

**1\. 移除舊版 Apache 與 Subversion**

先手動將 Apache 2.0 停止，並將 Apache2 從 Windows Service 中移除：

```
cd C:\Program Files\Apache Group\Apache2\bin
Apache.exe -k stop
Apache.exe -k uninstall
```

然後到控制台的「新增或移除程式」將 Apache 2.0 與 Subversion 1.4.6 移除。

**2\. 下載 & 安裝 Subversion 1.5**

先到 [https://subversion.apache.org/](https://subversion.apache.org/) 點選 [Windows binaries](https://subversion.apache.org/packages.html#windows) 進入，再到點選 Tigris.org: [Apache 2.2](https://subversion.apache.org/packages.html#windows) 進入下載頁面，然後下載最下方的 svn-win32-1.5.0.zip 下載最新版的 Subversion Win32 Binary。

下載完後將檔案解壓縮到 **C:\\Program Files\\Subversion\\** 目錄下

安裝完成後，設定「系統環境變數」Path 加入 c:\\Program Files\\Subversion\\bin 目錄

**3\. 安裝 Apache 2.2 with OpenSSL**

到 [Apache HTTP Server Project](http://httpd.apache.org/) 的 [下載頁面](http://httpd.apache.org/download.cgi) 下載 Win32 Binary including OpenSSL 0.9.8h 安裝檔：[apache\_2.2.9-win32-x86-openssl-0.9.8h-r2.msi](http://ftp.mirror.tw/pub/apache/httpd/binaries/win32/apache_2.2.9-win32-x86-openssl-0.9.8h-r2.msi)

安裝完成後，先編輯設定檔 **C:\\Program Files\\Apache Software Foundation\\Apache2.2\\conf\\httpd.conf**

```
# 將 ssl 設定載入（將 # 符號移除）
Include conf/extra/httpd-ssl.conf

# 將以下兩行的 # 移除
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
# 加入以下兩行
LoadModule dav_svn_module "C:\Program Files\Subversion\bin\mod_dav_svn.so"
LoadModule authz_svn_module "C:\Program Files\Subversion\bin\mod_authz_svn.so"
# 加入 Subversion Repository 的 Location 定義
<Location /repos>
  DAV svn
  SVNParentPath "C:/SVNRepos"
  # how to authenticate a user
  AuthType Basic
  AuthName "Subversion repository"
  AuthUserFile "C:/SVNRepos/passwd.ini"
  # only authenticated users may access the repository
  Require valid-user
  # our access control policy
  AuthzSVNAccessFile "C:/SVNRepos/authz.ini"                 
</Location>
```

然後修改 **C:\\Program Files\\Apache Software Foundation\\Apache2.2\\conf\\extra\\httpd-ssl.conf**

```
# 將所有 443 Port 都改成 3443 ( 你可以換成你要接受 SSL 連線的 Port )
Listen 3443

<VirtualHost _default_:3443>

ServerName localhost:3443
```

接著可以將之前產生過的 SSL Cert ( server.crt ) 與 SSL Key ( server.key ) 直接複製到 **C:\\Program Files\\Apache Software Foundation\\Apache2.2\\conf** 目錄下，若需重新產生 SSL Cert & Key 可參考我的【[如何在 Win32 安裝 Apache 2.0 with OpenSSL + Subversion 1.4](/post/2007/11/01/How-to-install-Apache-20-OpenSSL-Subversion-14-in-Windows-environment) 】文章。

**4\. 測試 Apache 2.2 with OpenSSL 是否安裝成功**

```
C:\Program Files\Apache Software Foundation\Apache2.2\bin>httpd.exe -D SSL -t
Syntax OK
```

**5\. 註冊 Apache 2.2 服務到 Windows Service**

```
C:\Program Files\Apache Software Foundation\Apache2.2\bin>httpd.exe -k install
Installing the Apache2.2 service
The Apache2.2 service is successfully installed.
```

**6\. 啟動 Apache 2.2**

```
C:\Program Files\Apache Software Foundation\Apache2.2\bin>httpd.exe -k start
```

基本上，做到這一步已經算安裝完成了，其他像是「建立 SVN Repository 環境」的部分可參考【[如何在 Win32 安裝 Apache 2.0 with OpenSSL + Subversion 1.4](/post/2007/11/01/How-to-install-Apache-20-OpenSSL-Subversion-14-in-Windows-environment) 】文章的說明。
