2012-11-22 10 views
11

Zrobiłem prostą aplikację, która korzysta ze skryptów Python CGI. Mam działającą wersję lokalną (działa dobrze z lighttpd), ale teraz chcę ją przesłać do Heroku. Aplikacja składa się z 2 lub 3 skryptów, które powodują operacje na pliku i drukowania informacji z powrotem do przeglądarki, więc nie potrzebuję żadnego modułu poza CGI.Uruchom aplikację Python CGI na Heroku

Ale tylko Heroku documentation wyjaśnia, jak przesłać aplikacje Pythona z fantazyjnymi frameworkami sieciowymi i nie używam ich.

Chcę wiedzieć, czy możliwe jest uruchamianie skryptów CGI na Heroku, a jeśli tak, to jak to zrobić.

+0

Rozmieść go w taki sposób, w jaki robiłbyś pliki statyczne, z wyjątkiem do katalogu obsługującego CGI. –

+0

Jestem całkowicie nowy w Heroku. Nie wiem, jak uzyskać katalog obsługujący CGI. Wspominają także o virtualenv, nie jestem pewien, czy musiałbym to zrobić, aby przesłać pliki CGI. Jeśli dobrze zrozumiałem, po prostu muszę sklonować repozytorium git, skopiować pliki do katalogu głównego, zatwierdzić, pchnąć i zrobić? – user1002327

+0

virtualenv nie ma nic (dobrze, bardzo mało) z tym zrobić, a włączanie CGI to problem z serwerem WWW, a nie problem Heroku per se. –

Odpowiedz

8

Heroku Cedar koncentruje się wokół samo-hostujących aplikacji internetowych, więc musisz mieć możliwość połączenia aplikacji i uruchomienia jej jako pojedynczego polecenia.

Myślę, że najłatwiej byłoby przenieść aplikację do Flask. Nie jest to zbyt skomplikowane, szczególnie jeśli jest to tylko 2 lub 3 skrypty.

Inną opcją (w zależności od wymagań wydajnościowych) byłoby użycie prostego CGI server w standardowej bibliotece Python i Python buildpack. Myślę, że trzeba zbierać skrypty w katalogu ./cgi-bin i uruchomić serwer (w procfile) z:

web: bin/python -m CGIHTTPServer $PORT 

najbardziej skomplikowany sposób byłoby pakiet lighttpd i skrypty razem i napisz skrypt powłoki, aby wszystko zacząć. Musisz upewnić się, że skompilowane pliki binarne są kompatybilne z Heroku. Patrzę na PHP buildpack jako punkt wyjścia.

+0

Nie wiedziałem, że Python ma serwer WWW z obsługą CGI. To fajnie. Spróbuję drugiej lub trzeciej drogi, ponieważ mam małe lub żadne zainteresowanie przeniesieniem aplikacji. – user1002327

+1

Mam nadzieję, że to się wam uda. Najpierw spróbowałbym lokalnego serwera CGI, aby sprawdzić, czy jest on w stanie uruchomić twoje skrypty, a także opracować strukturę katalogów. Następnie wymyśl, jak spakować go dla Heroku. – groodt

+0

Skrypty nie używają żadnych dziwnych konstruktów Pythona, domyślam się, że będą działały dobrze. Wypróbuję serwer lokalnie i zaakceptuję twoją odpowiedź, gdy przesyłam wszystko. Dzięki. – user1002327

0

pytałem z Heroku wsparcia o aplikacji CGI, że starałem się służyć na platformie Heroku i oto odpowiedź:

Witam,

Niestety, nie obsługują aplikacje CGI stylu, tylko czysta -Python. Możesz mieć trochę szczęścia, bawiąc się z modułem Python CGIHTTPServer, ale jeśli nie spełnia twoich potrzeb, możesz mieć pecha.

Powiązane problemy