天天看點

搭建win_x64位的SVN伺服器

  開發平台

OS:  Win7

IDE:  VS2005

  所需資源

Apache-2.2.14-win64.rar

Subversion-1.4.5-win64.zip( 目前找不到,有需要的找我吧 )

TortoiseSVN-1.6.6 -x64-svn

Mod_auth_sspi-1.0.4 (sourceforge 上隻有 x86 的 )

  部署過程

說明:      $Apache_Root = Apache 解壓目錄

                   $SVN_Root    =SubVersion 解壓目錄

ü   安裝 Apahce

1.          綠色的,直接解壓即可

2.          Cmd 下,切換到解壓的目錄下,執行 /bin/httpd –k install; 會看到注冊已經成功消息

3.          開啟 Httpd , httpd –k Start

ü   安裝 SVN

1.          綠色版的,直接解壓即可,例如解壓到 d:/subversion 。

2.          添加環境變量 Path 中,解壓的目錄 /bin (可選項,友善 dos 指令操作)

ü   安裝 TortoiseSVN

1.          一路 next 到底就好了。

ü   配置 Apache 使其支援 SVN

1.          将 Subversion-1.4.5-win64 中的 mod_dav_svn.so 和 mod_authz_svn.so 複制到

$Apache_Root/Module 下。

2.          修改 Apahce 下 conf 檔案夾下的 http.conf 檔案,添加

LoadModule authz_svn_module modules/mod_authz_svn.so

LoadModule sspi_auth_module modules/mod_auth_sspi.so

并将 LoadModule dav_module modules/mod_dav.so

LoadModule dav_fs_module modules/mod_dav_fs.so 前的 # 删去

3.          這是打開 Apache Monitor ,下方會顯示 Apache/2.2.14(win64) svn /1.4.5 DAV/2

在 cmd 下,輸入 svnadmin create f:/svn/testrepos, 用來建立名稱為 testrepos 的 倉庫,并在 httpd.conf 中添加

<Location /svn>

         DAV svn

         SVNParentPath f:/svn

       </Location>

      在浏覽器中輸入 http://localhost/svn/testrepos ,可以看到倉庫中的資料。

         注意: 在網上有些說可以使用 TortoiseSVN 右鍵, create repository here 來建立庫,                      不過要注意 TortoiseSVN 的版本号,高版本的有可能不支援低版本的 Apache                             下的 mod_dav_svn 子產品。庫的檔案格式是不一樣的。

  添加域驗證子產品

說明:域驗證子產品為 mod_auth_sspi.so ,之是以把它單獨拿出來,是因為涉及到 x86 到 x64 位移植的問題,及 Apache 編譯過程。

ü   編譯 Apache ,由 x86 到 x64

1.          準備工作

a)          Perl Interpreter

b)          AWK

c)          Bison

d)          Flex

e)          Sed

f)           cvtdsp.pl (save in httpd src folder)

對于 iii,iv,v 三個均是将 bin 目錄下拷貝到本地,然後将 bin 目錄添加到環境變量中。

2.          編譯 Zlib 和 Openssl

為了編譯 Apache 需要編譯 zlib 和 Openssl ,并且需要一個 Apache-win32 的源碼。

a)          Zlib

b)          Openssl

c)          Apache-2.2.14-win32-src

我的目錄組織為:

如果你下載下傳的是 Apache-2.2.x-win32 的話,那麼第二個目錄 apr-iconv 已 存在。

c:/build/httpd-2.2.x/ httpd-2.2.x.zip Yes
c:/build/httpd-2.2.x/srclib/zlib zlib-1.2.x.tar.gz Yes
c:/build/httpd-2.2.x/srclib/openssl openssl-0.9.xc.tar.gz Yes

對于 tar.gz 壓縮的檔案加壓後,檔案格式可能有些會有一些編譯器無法識别的符号,應該先使用如下指令将檔案轉化成 windows 識别的。

将目錄 cd 到 c:/build/httpd-2.2.x/ 下: perl srclib/apr/build/lineends.pl

打開你的 Visual Studio 2005 x64 Win64 Command Prompt 并切換到 c:/build/httpd-2.2.x/

Ø   編譯 Zlib

cd srclib/zlib

nmake -f win32/Makefile.msc

Ø   編譯 OpenSSL

cd ../openssl

perl Configure --openssldir=C:/httpd-2.2_x64/bin VC-WIN64A

ms/do_win64a

nmake -f ms/ntdll.mak

3.          編譯 Apache

Ø   編譯 Apache   

確定 cvtdsp.pl 已經在 Apache 的目錄中

cd ../../

perl cvtdsp.pl -2005

devenv Apache.dsw

此時會提示你是否轉化,全部選擇是即可。然後在配置管理器中,選擇建立,彈出如下視窗,選擇 x64 即可

搭建win_x64位的SVN伺服器

                            對于 2.2.6 的 Apache 版本全部是 x86 的,對于 2.2.14 的 Apache 版本有些子產品                       是已經支援 x64 的了,比如 xml ,不過我們可以先删除 x64 的平台配置,然後

                       再建立,不然無法改變其他 win32 成為 x64 。然後儲存。

Ø   編譯

雖然 http://www.blackdot.be/?inc=apache/knowledge/tutorials/x64 給出的 makefile.win, 但是并不适合我,我的做法是:

a)          在工程目錄下,右鍵點選,生成解決方案。

b)          總會有錯誤産生的。(我相信你不會如此的幸運,一次成功的)。

c)          如果你用的是 2.2.14-win32-src 的話,那麼請删除 apr_dbd_xxx , apr_dbm_xx 的項目吧,這些是和資料庫有關的,除非你安裝了 mysql , sqlserver ,或者 oracle ,并且擷取了 Apache 編譯的所需的資料庫的源碼,對于這些在 Apache 目錄下, readme-win32.txt 中有詳細的說明。不多贅述了。

d)          檢視錯誤,一般是出現在 InstallBin 項目,或者 BuildBin 項目,這兩個項目都使用了 Makefile.win 腳本,其實這個腳本的錯誤大多來自于使用了 x64 平台後,導緻的目錄的變更引起的,我相信仔細閱讀下 Makefile.win 的腳本,然後按照你實際的目錄位址修改相應的選項,即可了。一半是 apr 開頭的幾個工程項目的問題。當然這裡也是需要删除 apr_dbd_xxx 和 apr_dbm_xxx 的。

e)          這樣在生成, That’s it you are all done 。

4.          編譯 mod_auth_sspi 子產品

Ø   給出個最簡單的方法

下載下傳 mod_auth_sspi, 然後在你剛剛編譯的 Apache 下,添加該項目,然後更改編譯平台為 x64 位,僅生成該項目,即可。很簡單吧。當然我的探索過程可不是這麼順利的。

5.          添加 Apache 配置檔案,支援域驗證。

<location /svn/>

  # how to authenticate a user

  AuthType SSPI

  AuthName "Grandsoft SVN repository"

  SSPIAuth On

  SSPIAuthoritative On

# SSPIDomain s01-grandsoft

  SSPIOmitDomain on

  SSPIUsernameCase lower

#  SSPIPerRequestAuth on

  SSPIOfferBasic On

  require valid-user

</location>

<location /svn/>

  DAV svn

  SVNParentPath "F://SVN//"

  SVNListParentPath on

  # our access control policy

  AuthzSVNAccessFile "F://SVN//authz.conf.txt"

</location>

  參考資料

Apache 編譯 :   http:/www.blackdot.be/?inc=apache/knowledge/tutorials/x64

         SSPI 的編譯: http://ivascucristian.com/archives/how-do-you-create-an-apache-module/

http://www.nosq.com/blog/2008/06/fixing-mod_auth_sspi-and-ie-losing-post-data/

繼續閱讀