2012-11-22 50 views
11

Tôi đã tạo một ứng dụng đơn giản sử dụng các script Python CGI. Tôi có một phiên bản địa phương làm việc (hoạt động tốt với lighttpd), nhưng bây giờ tôi muốn tải nó lên Heroku. Ứng dụng này bao gồm 2 hoặc 3 tập lệnh thực hiện các thao tác trên một tệp và in thông tin trở lại trình duyệt, vì vậy tôi không nghĩ rằng tôi sẽ cần bất kỳ mô-đun nào khác ngoài CGI.Chạy ứng dụng Python CGI trên Heroku

Nhưng Heroku documentation chỉ giải thích cách tải ứng dụng Python lên bằng các khung web ưa thích và tôi không sử dụng bất kỳ ứng dụng nào trong số đó.

Tôi muốn biết liệu có thể chạy các tập lệnh CGI trên Heroku hay không, và nếu có, cách thực hiện.

+0

Triển khai cách bạn làm tệp tĩnh, ngoại trừ thư mục bật CGI. –

+0

Tôi hoàn toàn mới đối với Heroku. Tôi không chắc chắn làm thế nào để có được một thư mục kích hoạt CGI. Họ cũng đề cập đến một cái gì đó về virtualenv, không chắc chắn nếu tôi phải làm điều đó để tải lên các tập tin CGI. Nếu tôi hiểu một cách chính xác, tôi chỉ đơn giản là phải sao chép các repo git, sao chép các tập tin vào thư mục gốc, cam kết, đẩy và thực hiện? – user1002327

+0

virtualenv không có gì (okay, rất ít) để làm với nó, và cho phép CGI là một vấn đề máy chủ web, không phải là một vấn đề của Heroku. –

Trả lời

8

Heroku Cedar tập trung vào các ứng dụng web tự lưu trữ, vì vậy bạn cần có thể kết hợp ứng dụng của bạn lại với nhau và chạy nó dưới dạng một lệnh duy nhất.

Tôi nghĩ cách dễ nhất là chuyển ứng dụng của bạn sang Flask. Nó không phải là rất phức tạp, đặc biệt là nếu nó chỉ là 2 hoặc 3 kịch bản.

Tùy chọn khác (tùy thuộc vào yêu cầu hiệu suất của bạn) sẽ sử dụng đơn giản CGI server trong thư viện chuẩn Python và Python buildpack. Tôi nghĩ rằng bạn sẽ cần phải bó lên kịch bản của bạn trong một thư mục ./cgi-bin và khởi động server (trong procfile) với:

web: bin/python -m CGIHTTPServer $PORT 

Cách phức tạp nhất sẽ được bó lighttpd và các kịch bản của bạn với nhau và viết một kịch bản lệnh shell để bắt đầu tất cả. Bạn sẽ phải đảm bảo các tệp nhị phân đã biên dịch của bạn tương thích với Heroku. Tôi sẽ xem PHP buildpack làm điểm bắt đầu.

+0

Tôi không biết Python đã có một máy chủ web với sự hỗ trợ CGI. Đó là khá mát mẻ. Tôi sẽ thử cách thứ hai hoặc thứ ba, vì tôi ít quan tâm đến việc chuyển ứng dụng. – user1002327

+1

Tôi hy vọng nó hoạt động cho bạn. Tôi sẽ thử máy chủ CGI tại địa phương đầu tiên, để xem nếu nó có khả năng chạy kịch bản của bạn và cũng để làm việc ra cấu trúc thư mục. Sau đó, tìm hiểu cách đóng gói nó cho Heroku. – groodt

+0

Các tập lệnh không sử dụng bất kỳ cấu trúc Python lạ nào, tôi đoán chúng sẽ hoạt động tốt. Tôi sẽ thử máy chủ cục bộ và chấp nhận câu trả lời của bạn khi tôi tải lên mọi thứ. Cảm ơn. – user1002327

0

Tôi hỏi với sự hỗ trợ Heroku về một ứng dụng cgi mà tôi đã cố gắng để phục vụ trên nền tảng Heroku và đây là câu trả lời:

Xin chào,

Thật không may, chúng tôi không hỗ trợ các ứng dụng CGI-phong cách, chỉ thuần túy -Python. Bạn có thể có một số may mắn chơi xung quanh với các mô-đun CGIHTTPServer Python một số chi tiết, nhưng nếu nó không phù hợp với nhu cầu của bạn, bạn có thể được ra khỏi may mắn.

Các vấn đề liên quan