2012-11-22 58 views
11

我做了一個使用Python CGI腳本的簡單應用程序。我有一個工作的本地版本(使用lighttpd可以正常工作),但現在我想將它上傳到Heroku。該應用程序由2或3個腳本組成,這些腳本可以對文件進行操作並將信息打印回瀏覽器,所以我不認爲我需要CGI以外的任何模塊。在Heroku上運行Python CGI應用程序

Heroku documentation只解釋瞭如何上傳Python應用程序與花哨的web框架,我沒有使用任何這些。

我想知道是否有可能在Heroku上運行CGI腳本,如果可以的話,該怎麼做。

+0

部署它如何將靜態文件,除了啓用CGI的目錄。 –

+0

我對Heroku完全陌生。我不知道如何獲得啓用CGI的目錄。他們還提到了一些有關virtualenv的內容,不確定是否必須這樣做才能上傳CGI文件。如果我理解正確,我只需克隆git repo,將文件複製到根目錄,提交,推送和完成? – user1002327

+0

virtualenv與它沒有任何關係(好,很少),並且啓用CGI是一個web服務器問題,而不是Heroku問題本身。 –

回答

8

Heroku Cedar以自承載Web應用程序爲中心,因此您需要能夠將應用程序捆綁在一起並將其作爲單個命令運行。

我認爲最簡單的方法是將您的應用程序移植到Flask。這不是很複雜,特別是如果它只有2或3個腳本。

另一種選擇(取決於您的性能要求)將使用Python標準庫中的簡單CGI serverPython buildpack。我認爲你需要在./cgi-bin目錄中捆綁了你的腳本,並啓動服務器(procfile):

web: bin/python -m CGIHTTPServer $PORT 

最複雜的方式是捆綁的lighttpd和腳本在一起,編寫一個shell腳本來啓動它。你將不得不確保你編譯的二進制文件與Heroku兼容。我會以PHP buildpack作爲起點。

+0

我不知道Python有一個CGI支持的web服務器。這很酷。我會嘗試第二種或第三種方式,因爲我幾乎沒有興趣移植應用程序。 – user1002327

+1

我希望它適合你。我會先在本地嘗試CGI服務器,看看它是否能夠運行你的腳本,並且還可以制定目錄結構。然後弄清楚如何打包Heroku。 – groodt

+0

腳本不使用任何奇怪的Python構造,我猜他們會正常工作。我會在本地嘗試服務器,並在上傳所有內容時接受您的答案。謝謝。 – user1002327

0

我詢問與Heroku的支持有關,我想擔任Heroku的平臺,在這裏一個CGI應用程序的響應:

你好,

不幸的是,我們不支持CGI風格的應用程序,僅純--Python的。你可能還有一些運氣在玩Python CGIHTTPServer模塊,但如果它不適合你的需求,你可能會倒黴。

相關問題