2017-02-21 23 views
1

操作系統時的Apache2 mod_wsgi的崩潰 - Ubuntu服務器14.04 Azure上的VM進口pyodbc

試着用不同的Python版本(3.4.3,3.6.0),Apache和mod_wsgi的。

安裝MS本機ODBC驅動程序使用這裏的指令 https://gist.github.com/joecampo/6f777a659b8132b9d6fe1c3589df394c,而pyodbc是使用pip安裝的。

要調試我已經設置了Django的應用在嵌入式模式運行,並且wsgi_module:

gdb /usr/local/apache2/bin/httpd 
run -X 

當我訪問其中進口pyodbc任何功能,WSGI失敗,出現以下錯誤:

Program received signal SIGSEGV, Segmentation fault. 
import_types() at src/pyodbcmodule.cpp:223 
223 src/pyodbcmodule.cpp: No such file or directory. 

導入模塊正常工作,當我在命令行中運行Django應用程序:

python3 manage.py runserver 

是否有解決方法?

+0

當您在本地運行時,您可能依賴於將LD_LIBRARY_PATH設置爲查找共享庫。該環境變量不會被設置爲mod_wsgi,並且您不能輕易設置它以便使用它。什麼是您的本地環境中的「LD_LIBRARY_PATH」? –

+0

我試着'echo $ LD_LIBRARY_PATH'或運行'env'。沒有任何回報。如果我知道哪些庫mod_wsgi找不到,我可以在/ usr/lib中創建一個軟鏈接。有沒有辦法解決這個問題? – Vahagn

+0

如果沒有設置LD_LIBRARY_PATH,那不太可能是原因。你在設置WSGIApplicationGroup%{GLOBAL}嗎?您正在使用的模塊可能無法在Python子解釋器中運行,並且正在崩潰。該指令強制使用主解釋器,這更像是模塊在使用命令行Python時看到的內容。另外建議你使用mod_wsgi的守護進程模式(如果尚未使用的話)。 –

回答

0

我在設置Python金字塔項目時遇到了同樣的問題,並且降級爲pyodbc的以前版本。

看起來這可能是pyodbc或WSGI模塊中的一個錯誤。見pyodbc 4.0.9+ segfault with uwsgi #199。您可能已經知道,這條線是紅鯡魚:

223 src/pyodbcmodule.cpp: No such file or directory. 

該錯誤是在調試器來了,只是告訴),其中在import_types(異常升高,但該文件的搜索使我這個bug在GitHub上報告。

你明顯已經知道如何調試Apache和wsgi,但對於任何不在那裏的人都有詳細的說明here

0

通過添加對子解析器的支持,在4.0.16中已修復此問題。