1. 程式人生 > >通過http訪問svn伺服器的配置方法

通過http訪問svn伺服器的配置方法

    今天配置Apache + SVN實現通過http方式來訪問svn伺服器。經過在網上搜索“svn http”,得出這篇介紹還有這篇是比較全面的。於是按照上面的步驟一步步進行:

    1、開啟Apache的配置檔案,將dav、dav_svn模組載入進去。

    2、配置檔案加入svn的location節點:<Loacation /svn>...</svn>

    3、配置svn倉庫路徑、許可權。

    4、儲存,重啟Apache伺服器。

    5、在瀏覽器輸入:http://localhost/svn,期待著頁面中SVN幾個字元的出現......

    由於我在svn的Loacation節點設定了使用者認證AuthUserFile,並且必須通過驗證後才能訪問,所以這時候彈出來個登入對話方塊,這也正常不過了。但是我多次輸入“正確的”使用者名稱和密碼,總是提示輸入驗證資訊不正確,連續錯誤三次後,直接跳轉到錯誤頁面了:Authorization Required 

This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required.

    這是怎麼回事呢?我明明在svn倉庫目錄下conf的passwd加入了使用者名稱和密碼設定了!又嘗試了幾次,發現還是如此。然後我用htpasswd命令給passwd添加了使用者密碼,發現能正常訪問了!但是通過svn://就不行了!這是怎麼回事呢?後來開啟passwd檔案前後對比了一下,svn倉庫目錄下的是未做任何處理的原始字串,而後者卻做了加密處理......都怪我沒有留意,經過思考後,發現應該是這樣才對:

    通過http訪問的賬號是Apache http驗證的。

    通過svn://訪問的賬號是svn倉庫conf目錄下passwd指定的。兩個是獨立的認證方式。

    於是按圖索驥趕緊生成Apache http授權檔案。產生方式:
    在命令列模式下,進入到.../apache/apache2/conf/目錄下,執行下面的命令:

    bin/htpasswd -mc passwd <username>       #提示輸入使用者密碼

    最後在Apache配置檔案svn的location段中指定AuthUserFile的檔案為剛才生成的授權檔案。然後開啟瀏覽器輸入url->彈出登陸框->輸入使用者名稱密碼,嘿,可以正常訪問了。