The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何在 Win32 安裝 Apache 2.0 with OpenSSL + Subversion 1.4

1. 安裝 Subversion 1.4

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

2. 安裝 Apache 2.0 with OpenSSL

   下載這個檔 apache_2.0.59-win32-x86-openssl-0.9.7j.msi

    安裝時要用「自訂安裝」與用 Port 8080 不要自動啟動影響原本 IIS 的運作


        C:\Program Files\Apache Group\Apache2\conf\httpd.conf

            LoadModule dav_module modules/

            LoadModule dav_svn_module "C:/Program Files/Subversion/bin/"
            LoadModule authz_svn_module "C:/Program Files/Subversion/bin/"

            LoadModule ssl_module modules/

            # 新增下面設定到 httpd.conf 設定檔的最下方

<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

  # For any operations other than these, require an authenticated user.
  #  Require valid-user

  # our access control policy
  AuthzSVNAccessFile "C:/SVNRepos/authz.ini"                

        C:\Program Files\Apache Group\Apache2\conf\ssl.conf

            將所有 443 改成 3443

    產生 SSL Cert & Key


        建立 C:\Program Files\Apache Group\Apache2\conf\ssl 目錄
        建立 C:\Program Files\Apache Group\Apache2\conf\ssl.key 目錄
        建立 C:\Program Files\Apache Group\Apache2\conf\ssl.crt 目錄

        下載 到 C:\Program Files\Apache Group\Apache2\conf\ssl 目錄下


        # 註解:密碼都用 0000 即可
        openssl req -config openssl.cnf -new -out server.csr

        Country Name (2 letter code) []:TW
        State or Province Name (full name) []:Taiwan
        Locality Name (eg, city) []:Taipei
        Organization Name (eg, company) []:My Company Inc.
        Organizational Unit Name (eg, section) []:R&D Team
        Common Name (eg, your websites domain name) []
        Email Address []

        Please enter the following 'extra' attributes
        to be sent with your certificate request
        A challenge password []:0000

        openssl rsa -in privkey.pem -out server.key

        openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365
        openssl x509 -in server.crt -out server.der.crt -outform DER

        將 server.crt 移至 C:\Program Files\Apache Group\Apache2\conf\ssl.crt 目錄
        將 server.key 移至 C:\Program Files\Apache Group\Apache2\conf\ssl.key 目錄

    測試一下 Apache2 with SSL 有沒有成功

        C:\Program Files\Apache Group\Apache2\apache.exe -D SSL

    註冊 Apache2 服務

        cd C:\Program Files\Apache Group\Apache2\bin
        Apache.exe -k install
        Apache.exe -k config -D SSL

    啟動 Apache 2

        Apache.exe -k start

3. 建立 SVN Repository 環境

    建立 D:\SVNRepos 目錄

    建立 Apache 的認證的密碼檔 passwd.ini

        cd \SVNRepos

        "c:\Program Files\Apache Group\Apache2\bin\htpasswd.exe" -c passwd.ini [帳號]
        "c:\Program Files\Apache Group\Apache2\bin\htpasswd.exe" -bc passwd.ini [帳號] [密碼]

    建立 Subversion 的權限檔 authz.ini

# 先定義群組
pm = user1
developers = user1,user2,user3
everyone = *

# 預設拒絕所有人進入瀏覽
* =

    建立第一個 SVN Repository

        cd \SVNRepos

        svnadmin create project1

        備註:不用再修改 project1/conf/svnserve.conf 檔案了,因為都定義在 Apache 的 httpd.conf 裡了

    修改 Subversion 的權限檔 authz.ini

        新增下列幾行到 authz.ini 最下面

# 語法 ==>  〔儲存庫:專案路徑〕

# 要讓 PM 能 Import 最初始的專案,所以要全部能寫入

# 開發人員只能 commit 到 trunk

# 只有 PM 可以決定何時該 Release 版本

# 只有PM 才可以決定是否進行分支開發,若分支開發需要再進行設定權限


        - 建立 Working Folder

            D:\Projects\Project1\branches        - 先預留空白
            D:\Projects\Project1\tags        - 先預留空白
            D:\Projects\Project1\trunk        - 將所有一開始要開發資料放到這裡!

            D:\Projects\Project1\trunk\docs    - 將所有開發文件放到這裡!
            D:\Projects\Project1\trunk\Website    - 將網站開發的原始檔放到這裡!

        - 匯入專案到 Repository

            cd D:\Projects\Project1

            svn import .