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

分享到噗浪!

1. 安裝 Subversion 1.4

    http://subversion.tigris.org/

    http://tortoisesvn.tigris.org/

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

2. 安裝 Apache 2.0 with OpenSSL

    http://httpd.apache.org/download.cgi

    http://apache.cdpa.nsysu.edu.tw/httpd/binaries/win32/

    下載這個檔 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/mod_dav.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"

            LoadModule ssl_module modules/mod_ssl.so

            # 新增下面設定到 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.
  #<LimitExcept GET PROPFIND OPTIONS REPORT>
  #  Require valid-user
  #</LimitExcept>

  # our access control policy
  AuthzSVNAccessFile "C:/SVNRepos/authz.ini"                
 
</Location>
-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=

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

            將所有 443 改成 3443

    產生 SSL Cert & Key

        參考:http://tud.at/programm/apache-ssl-win32-howto.php3

        建立 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 目錄

        下載 http://tud.at/programm/openssl.cnf 到 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) []:svn.mydomain.com
        Email Address []:svn@mydomain.com

        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

        d:
        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

-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=
# 先定義群組
[groups]
pm = user1
developers = user1,user2,user3
everyone = *

# 預設拒絕所有人進入瀏覽
[/]
* =
-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=

    建立第一個 SVN Repository

        d:
        cd \SVNRepos

        svnadmin create project1

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

    修改 Subversion 的權限檔 authz.ini

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

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

# 要讓 PM 能 Import 最初始的專案,所以要全部能寫入
[project1:/]
@pm=rw
@developers=r

# 開發人員只能 commit 到 trunk
[project1:/trunk]
@developers=rw

# 只有 PM 可以決定何時該 Release 版本
[project1:/tags]
@pm=rw

# 只有PM 才可以決定是否進行分支開發,若分支開發需要再進行設定權限
[project1:/branch]
@pm=rw
-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=-*=

    匯入專案資料


        - 建立 Working Folder

            D:\Projects
            D:\Projects\Project1
            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 . https://svn.mydomain.com:3443/repos/project1/

    測試網頁瀏覽SVN儲存庫

        https://svn.mydomain.com:3443/repos/project1/

 

  

此文章由 will 發表於 2007/11/1 上午 09:40:00

永久連結 | 評論 (10) | 此文章的RSSRSS comment feed |

分類: 專案管理 | Subversion

標籤: ,

評論

二月 11. 2009 09:51

Guess

請問一下
如何砍掉一個repository?
從檔案總管嗎?
還是使用SVN的指令?
因為我有找到一篇文章是說直接砍掉,但是都會出現此目錄有程式存取中
http://forums.site5.com/showthread.php?t=21013
但是我已經將apache&SVN的服務都停掉了
TaskMgr中也沒有相關的程式在跑了
目前我是使用VisualSVN Server的最新版本
不曉得方不方便簡單說明一下呢?
Thanks

Guess 台灣

二月 11. 2009 10:13

will

如何砍掉一個repository?
=> 刪除掉整個目錄即可!

will 台灣

二月 11. 2009 10:41

Guess

Hi Will
Thanks
後來我重新開機
然後就可以把目錄砍掉了
Thanks

Guess 台灣

二月 11. 2009 12:21

Guess

請問一下
可以將1.4的repository弄到1.5嗎?
是要用哪個SVNADMIN的指令
因為要是照您文中的方式 EXPORT & IMPORT
這樣以前的log不是都不會不見呢?
Thanks

Guess 台灣

二月 11. 2009 13:14

Guess

Hi
sorry
http://rory.cba.tw/rewrite.php/read-95.html
I find the answer
我應該自己先找答案的
不好意思

Guess 台灣

八月 16. 2009 09:27

damody

請借文引用謝謝。

damody 台灣

八月 10. 2010 12:01

angus

hi~保哥~我又來了~從叢集跳到這~剛好都用到~我是用1.6的svn~但我都用好了~結果網頁顯示
未授權您檢視此網頁
我又不知道那理做錯了~改了又改~還是一樣~
先請問新增帳號的[]括弧要加嗎~加了我看passwd.ini內也會有[]
再請問authz.ini內~我這樣寫
# 先定義群組
[groups]
developer = user1,user2,user3
art = user4
everyone = *
admin = user1

# 預設拒絕所有人進入瀏覽
[/]
* =
# 設定儲存庫訪問權限,語法:[儲存庫:專案路徑]

[Project1:/]
@developer=rw  #可讀寫
@art=r         #僅可讀取
@admin=rw


我要用admin登入,~但輸入帳密後就顯示未授權您檢視此網頁
麻煩你一下了~謝謝

angus 台灣

八月 12. 2010 01:30

Will 保哥

angus: 建議改用 VisualSVN Server | Subversion Server for Windows 會簡單很多。
http://www.visualsvn.com/server/

Will 保哥 台灣

八月 30. 2010 10:56

angus

hi~我又來了~
我想請問一下
我要把原來的svn主機移轉
但我用匯出的方式再匯入只會匯出每個專案最新的版本
例如:
我有一個專案,编號到Revision 13
但我用匯出匯入的方式
在新主機只得到Revision 13最後的版本檔案,且在新主機顯示為Revision 0
不知道有什麼正規的方式可以將舊的主機的所有Revision 0-13的版本匯出再匯到新主機呢?
我是有用直接複製資料夾再放到新主機是可以,
但主管說這不是正規的作法,但我已經試不出來了,
請問保哥可以教學一下嗎?

angus 台灣

八月 30. 2010 11:08

Will 保哥

angus: 請在 server 端使用 svnadmin dump 與 svnadmin load 指令做備份、還原,這是比較正規的方式。你也可以參考我的另一篇文章:

比較 svnadmin dump 與 svnadmin load 的執行效能
blog.miniasp.com/.../...dmin-load-performance.aspx

Will 保哥 台灣

新增評論


( 您輸入的Email不會顯示於網站上 )

  Country flag

biuquote
  • 評論
  • 線上預覽
Loading