2011-08-22 65 views
1

當其中mod_wsgi的是守護進程的道路配置的服務器上運行Trac系統,Trac的拋出形式的許多錯誤:「腳本頭過早結束」。我研究過這個,看起來Trac和Apache之間的expat庫版本不匹配。可悲的是,我不能重建Apache,這似乎是解決這個問題的唯一解決方案。Trac系統,mod_wsgi的,劇本的過早結束標頭

如果任何其他的解決方案是可能的,我不知道。當我以嵌入模式運行時,此問題消失。是否可以爲在Trac請求中運行的虛擬主機配置爲嵌入模式,而其他請求是否由配置爲守護進程模式的主機處理?我們使用守護進程模式是因爲Django項目,所以當代碼改變時我們不必重啓服務器。但我不知道以這種方式設置東西是否能解決問題,或者如果這樣的設置甚至是可能的。

回答

0

以嵌入模式運行是不會解決問題。這個消息可能會消失,但是你的Apache子進程可能仍然崩潰,但是他們這樣做可能不像主Apache錯誤日誌顯示'Segmentation fault'和其他東西那麼明顯。

當你說你看這個,你真的驗證了它作爲是通過運行記錄在mod_wsgi的網站測試的外籍問題?

我問的外籍問題不是爲什麼Trac系統可能會崩潰的唯一原因。在子解釋器中使用Python包裝進行顛覆也會導致問題。所以,你試圖設置的文件解決方法:

WSGIApplicationGroup %{GLOBAL} 

有你走得更遠,使用gdb作爲地方上的mod_wsgi維基記錄的代碼會被再次崩潰分析。

至於你的Trac系統是否能在嵌入式和你的Django在守護進程模式下運行的問題,是可以做到,但我可以很可能會看到它沒有解決的問題。

+0

我還沒有運行測試程序;當人們使用服務器時,我不能在白天做很多事情,所以必須等到明天。我確實證實了Apache使用的expat版本不同於Python使用的expat版本。我現在不在機器上,但是Apache使用類似1.5.x的東西,而Python使用2.0.x.奇怪的是,我們已經通過mod_wsgi在守護進程模式下運行了Django幾個月,並且從未見過這個問題。它僅在我們將Trac添加到系統時纔出現。我一直在嵌入式模式下運行,沒有看到任何錯誤。 – SixDegrees

+0

請注意,我幾乎肯定沒有時間在調試器中進行探索。如前所述,這些錯誤都是通過Trac發生的,而且是零星的;刷新頁面通常會清除問題。但如果解決方案需要大量工時,拋棄Trac將可能成爲首選解決方案。 – SixDegrees

+0

我從http://code.google.com/p/modwsgi/wiki/IssuesWithExpatLibrary運行了您的測試應用程序;這兩個例子,無論是否有expat,都能成功運行,所以顯然expat就像這裏的罪魁禍首一樣。 – SixDegrees