2010-11-06 73 views
1

按照this helpful guide中的說明,我一直試圖在我的站點上設置Subversion,而不是使用Apache而不是svnserve。一旦設置完成,我將有一個存儲庫,位於/srv/svn/myrepository,可從code.mydomain.com訪問。獲取Subversion + Apache的問題

然而,在上述所有鏈接的指南中的說明,參觀code.mydomain.com顯示默認的Apache網站的內容後,在/ var/WWW(即,「它的工作原理!」) 。這也產生了以下錯誤在我的Apache日誌:

[Sat Nov 06 10:11:33 2010] [notice] caught SIGTERM, shutting down 
[Sat Nov 06 10:11:34 2010] [notice] mod_python: Creating 8 session mutexes based on 150 max processes and 0 max threads. 
[Sat Nov 06 10:11:34 2010] [notice] mod_python: using mutex_directory /tmp 
[Sat Nov 06 10:11:34 2010] [notice] Apache/2.2.9 (Debian) DAV/2 SVN/1.5.1 mod_jk/1.2.26 PHP/5.2.6-1+lenny9 with Suhosin-Patch mod_python/3.3.1 Python/2.5.2 configured -- resuming normal operations 

這裏是我的站點配置的編輯版本:

<VirtualHost my.server.ip:80> 
     ServerAdmin [email protected] 
     ServerName code.mydomain.com 
     ErrorLog /srv/www/code.mydomain.com/logs/error.log 
     CustomLog /srv/www/code.mydomain.com/logs/access.log combined 

     <Location /> 
       DAV svn 
       SVNPath /srv/svn/myrepository 

       AuthType Basic 
       AuthName "Subversion Repository" 
       AuthUserFile /srv/auth/svn/myrepository.htpasswd 
       Require valid-user 
     </Location> 
</VirtualHost> 

預先感謝您能夠提供的任何援助!


以下是我根據其他用戶的建議完成的某些故障排除的結果(非常感謝)。在每種情況下,我在重新啓動Apache後進行更改,然後檢查該站點以驗證結果:

0)我沒有通過SSL連接。

1)SVNParentPath只有當多個存儲庫正在使用時才需要 - 在這裏,我只使用一個。不過,我使用SVNParentPath作爲測試重新進行了配置,並得到了相同的結果。

2)我試圖把Auth選項放在Limit節中,並得到了相同的結果。然後我刪除了所有的Auth選項,但得到了相同的結果。

3)從配置文件中刪除了所有的Auth選項並收到相同的結果,我不認爲這與授權模塊有關;不過,我可以確認,儘管我已經加載了dav_svn模塊,但我沒有加載authz_svn模塊。

4)我已經在位置/srv/svn/myrepository中創建了存儲庫。我在該位置運行svnadmin驗證,並且該工具報告一切正常。 5)我在Debian 5上,其中Apache運行的是www-data;在此之前,我給了www-data:www-data所有權的/srv/svn以及/srv/svn/myrepository。我在這些目錄上運行stat來驗證這一點。

6)執行ping code.mydomain.com表明,它確實是解決正確的IP

7)我跑a2ensite code.mydomain.com,這顯然沒有這樣做(糟糕) ,並重新啓動Apache。文件夾/srv/www/code.mydomain.com/logs現在包含access.log和error.log,但兩個文件都保持爲空。同時,試圖訪問code.mydomain.com產生與以前相同的結果,並且默認的Apache error.log包含與以前相同的錯誤消息。

8)沒有一個Apache配置文件包含NameVirtualHost *:80行。

+0

你可以發佈默認的apache日誌的內容?你可以讓我們知道,當你訪問「code.mydomain.com」時它會被更新嗎?你也可以告訴我們,如果你有其他虛擬主機在同一個配置?我瘋狂的猜測是你從瀏覽器發出的請求是由默認的domiain或其他虛擬主機回答的(檢查是否爲真) – 2010-11-07 10:11:48

+0

噢,它肯定會被默認的虛擬主機回答 - 我通過禁用來確認這一點「默認」,這導致** code.mydomain.com **顯示一個完全不同的網站,我託管在服務器上的其他地方。重新啓用「默認」會帶回「It works!」。頁。我只是不知道爲什麼它現在被默認回答...... – Michael 2010-11-07 13:14:17

+0

你應該有一行NameVirtualHost *:80在某處,最好在apache.conf/httpd.conf中。做到這一點,並重新啓動Apache。 – 2010-11-07 13:49:55

回答

0

首先檢查您是否要http而不是https

我使用的是centos 5.5。將我的/etc/httpd/conf.d/subversion.conf與您提供的內容進行比較,可以得出以下結論。

檢查:

  1. SVNPath應該是一個SVNParentPath
  2. 嘗試註釋掉進行AuthType,AuthName指令,並AuthUserFile文件要求,看看是否可行。嘗試封閉他們:

    <LimitExcept GET PROPFIND OPTIONS REPORT> 
    ... 
    </LimitExcept> 
    
  3. 這些線某處

    LoadModule dav_svn_module  modules/mod_dav_svn.so 
    LoadModule authz_svn_module modules/mod_authz_svn.so 
    
  4. 你已經做了

    svnadmin create /srv/svn/myrepository 
    
  5. 你已經做了

    chown -R apache.apache /srv/svn/myrepository 
    

    (如果你在debian/ubuntu上,apache.apache會是www-data:www-data)。

看來你不應該把這些東西文件/etc/apache2/sites-available/code.domain.com中,而應該被編輯到/etc/apache2/mods-available/dav_svn.conf (它應該已經存在,並且包含或多或少與您試圖放入站點conf文件中的相同的東西,從站點conf文件中刪除所有重複的東西)。

您將需要在位置/ svn中放置路徑。

+0

非常感謝,先生。我已經更新了最初的帖子,記錄了實施這些建議的結果 - 簡而言之,我的問題依然存在,但您的出色建議確實幫助我排除了一兩個原因。 – Michael 2010-11-06 19:40:05

+0

我認爲在被捕獲的sigterm上面多出4行可能很有用 – 2010-11-06 19:58:40

+0

不幸的是,這是我訪問code.mydomain.com時寫入錯誤日誌的完整內容。 – Michael 2010-11-06 22:24:40

0

我想你只需要確保svn網站的虛擬域保持在層次結構的頂部。默認情況下,debian系統將默認端口配置爲默認域。您可能想要將其更改爲特定於域。

查看此鏈接http://www.daniweb.com/forums/thread268331.html的一些詳細說明。

最後一行「sudo a2ensite svn.example.com」將很重要。