2009-11-03 66 views
5

我想在Apache上使用FastCGI(實際上是fcgid)配置Python迷你框架CherryPy。我在共享主機上,所以我沒有訪問httpd.conf,只是htaccess。我按照這些教程不得要領:在共享主機上使用FastCGI的CherryPy(或其他Python框架)

我不斷收到500錯誤瓦特/ Apache日誌說: 「腳本頭過早結束」。我已經嘗試了一切(權限/ shebangs /完整路徑/ deamonized/not-daimonized)。我知道Apache正在正確執行我的.fcgi,因爲我能夠從python打印到錯誤日誌中,但就是這樣。有沒有人曾經在共享主機上成功安裝過CherryPy或其他框架?你的幫助將不勝感激。謝謝。

回答

1

Bluehost文章一直是最好的資源,但我沒有仔細閱讀關於獲取最新補丁的部分(第3步開頭)。在文章發佈的時候,甚至現在使用CherryPy 3.1.2版本,你不能做'動態模式'fcgi(當Apache產生進程時)。更多here。如果您位於共享主機上,則動態模式基本上非常重要。

我已經簽出了主幹(3.2.0rc1),並跳過一些籃球后,得到它的工作。我按照bluehost文章中的第5步,方法C.這裏是主我cherryd.fcgi的東西:

if __name__ == '__main__': 
    cherrypy.config.update({ 
     'server.socket_port': None, 
     'server.socket_host': None, 
     'server.socket_file': None 
    }) 
    start(daemonize=False, fastcgi=True, imports=["hello"]) 

此外,在CherryPy的/流程/ servers.py,我不得不改變以下行:

# from this 
# if not hasattr(socket.socket, 'fromfd'): 

# to this 
if not hasattr(socket, 'fromfd'): 

因此,它是有可能讓它工作,但它感覺有點哈克。你應該等待3.2.0的最終版本,或者做我所做的,並檢查出Web.py。我能夠非常輕鬆地使用共享主機(文檔很好地解釋了fastcgi/htaccess)。

1

不幸的是Apache + Bluehost + fastcgi + cherrypy + wsgi很多片斷。我希望我有一年的時間爲你編寫權威指南,但唉。您可能會從rather long mailing list thread中獲得一些洞察,從而產生您發佈的鏈接。

+0

我一直在調試我自己的Linux盒子,儘可能地控制情況。 感謝您的鏈接。這是一個相當長的談話。希望他們可以在下一個版本中使事情更加無縫化 – arshaw 2009-11-12 05:59:42

1

一個想法:請確保您的.fcgi文件在初始行到正確的Python可執行文件的引用:

#在/ usr/bin中/ Python的

我得Django使用錯誤的python環境在Bluehost和Apache上運行fcgi是我的問題(從shell運行,但不是從web/apache運行)。

除此之外,如果您可以從您的代碼打印到錯誤日誌中,您是否可以確認您的代碼在訪問網頁時是否正確執行,沒有任何例外情況? (而不是從shell運行時)。

+0

是的,我確定shebang是正確的,以及權限。 我的python確實在運行,但是apache並沒有正確地連接到fastcgi。 (請參閱上面的解決方案)。謝謝 – arshaw 2009-11-12 06:05:10

0

在你的web服務器的日誌文件中,它實際上應該顯示輸出是什麼讓它感到困惑。你確定你正在查看錯誤日誌以及訪問日誌嗎?

+0

它通常會掛起(沒有輸出)。然後我發現我需要daemonize = False,然後停下來。但後來它試圖啓動端口4000上的fcgi進程,這是apache不知道的,所以不會有輸出。看起來像'動態模式'解決了我的問題(請參閱我的解決方案)。謝謝 – arshaw 2009-11-12 06:03:37