2013-09-21 82 views
0

我正在嘗試讓Facebook登錄與Django一起工作。我試過Django-allauth和python-social-auth。兩者都可以很好地與dev服務器配合使用,但不能在mod_wsgi中生產。python-openid導致mod_wsgi上的段錯誤

我得到一個Apache2 500錯誤頁面。

在德日誌我有這樣的錯誤:

[Sat Sep 21 15:30:06 2013] [notice] child pid 27293 exit signal Segmentation fault (11) 

[Sat Sep 21 15:30:04 2013] [error] [client 12.23.34.45] Premature end of script headers: wsgi.py 
[Sat Sep 21 15:30:04 2013] [error] [client 12.23.34.45] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace. 

當我刪除了Python-openid的模塊萬物的工作,因爲它應該(我得到的Django的500錯誤頁面,並稱該模塊丟失,但沒有段錯誤在WSGI)

我在httpd.conf中使用這些WSGI方向:

WSGIDaemonProcess info user=info group=info threads=25 
WSGIProcessGroup info 

在同一臺服務器我有許多生產其他Django的網站,都沒有問題(EV使用virtualenv的ery站點)。

我設置日誌級別來調試這給了我這些額外的信息:

[Sat Sep 21 15:59:19 2013] [debug] core.c(3126): [client 12.23.34.45] redirected from r->uri = /admin/ 
[Sat Sep 21 15:59:20 2013] [info] mod_wsgi (pid=28475): Attach interpreter ''. 
[Sat Sep 21 15:59:20 2013] [info] mod_wsgi (pid=28475): Create interpreter 'www.mydomein.nl|'. 
[Sat Sep 21 15:59:20 2013] [info] [client 12.23.34.45] mod_wsgi (pid=28475, process='info', application='mydomain.nl|'): Loading WSGI script '/home/info/wsgi.py'. 

(感謝編輯)

至於建議我改變我的httpd.conf到:

WSGIDaemonProcess info user=info group=info threads=25 
WSGIProcessGroup info 
WSGIApplicationGroup %{GLOBAL} 

不幸的是我仍然有同樣的問題。

編輯:

mod_wsgi文檔建議運行GDB進行調試。我得到了一些信息,但我不明白的輸出:

#0 0x00007f5aea4db293 in __poll (fds=<value optimized out>, nfds=<value optimized out>, timeout=<value optimized out>) 
    at ../sysdeps/unix/sysv/linux/poll.c:87 
#1 0x00007f5aeae0b370 in apr_poll (aprset=0x7fffb31f7130, num=1, nsds=0x7fffb31f7178, timeout=<value optimized out>) at poll/unix/poll.c:120 
#2 0x00007f5ae501d5af in wsgi_daemon_main (p=0x102e138, daemon=0x1093ec0) at mod_wsgi.c:10801 
#3 wsgi_start_process (p=0x102e138, daemon=0x1093ec0) at mod_wsgi.c:11269 
#4 0x00007f5ae5020351 in wsgi_manage_process (reason=<value optimized out>, data=0x1093ec0, status=<value optimized out>) at mod_wsgi.c:9761 
#5 0x00007f5aeae064a1 in apr_proc_other_child_alert (proc=<value optimized out>, reason=<value optimized out>, status=<value optimized out>) 
    at misc/unix/otherchild.c:115 
#6 0x00000000004bb50f in ap_mpm_run (_pconf=<value optimized out>, plog=<value optimized out>, s=<value optimized out>) at prefork.c:1073 
#7 0x000000000042e2b4 in main (argc=4, argv=0x7fffb31f7588) at main.c:753 

EDIT2

回溯的時候,我看到了一些外籍人士正在添加行通過。因此,我既檢查外籍版本:

[[email protected] info]# strings /etc/httpd/lib/libexpat.so.0 | grep expat_ 
expat_1.95.7 


pyexpat.version_info 
(2, 0, 1) 

看來我的Apache安裝已經過時......

回答

1

爲什麼mod_wsgi的可能崩潰涵蓋了常見問題的mod_wsgi。

特別是,你很可能使用的是哪個還沒有被正確地寫在Python解釋器分上班,所以它崩潰C擴展模塊。

正如在問題清單的mod_wsgi的解釋,假設它是在mod_wsgi的守護進程運行的唯一WSGI應用程序,迫使它在主解釋器中運行,使用:

WSGIApplicationGroup %{GLOBAL} 
+0

感謝您的回覆。我編輯了我的問題(參見上文)。不幸的是仍然是同樣的問題 –

+0

然後使用文檔化的程序來確定碰撞發生的位置。 http://code.google.com/p/modwsgi/wiki/DebuggingTechniques#Debugging_Crashes_With_GDB同時確保您已驗證您現在正在主解釋器中運行。 http://code.google.com/p/modwsgi/wiki/CheckingYourInstallation#Sub_Interpreter_Being_Used –

+0

感謝您的回覆。我編輯了我的問題。 –