2010-03-28 21 views
12

Gần đây tôi đã học được Python. Tôi thích nó. Tôi chỉ muốn sử dụng nó để phát triển web. Ý nghĩ này gây ra mọi rắc rối. Nhưng tôi thích những khó khăn này :)mod_cgi, mod_fastcgi, mod_scgi, mod_wsgi, mod_python, FLUP. Tôi không biết còn bao nhiêu nữa. tương đương mod_php là gì?

Đến từ thế giới PHP, nơi chỉ có một cách được chuẩn hóa. Tôi mong đợi như vậy và tìm kiếm trăn & apache.

Setting up Python on Windows/ Apache? nói

Stay xa mod_python. Một phổ biến ý tưởng gây hiểu lầm là mod_python là như mod_php, nhưng đối với python. Đó là không đúng sự thật.

Vậy điều gì tương đương với mod_php trong python?

tôi cần chút làm rõ về một How Python web frameworks, WSGI and CGI fit together

CGI này, FastCGI và SCGI là ngôn ngữ thuyết bất khả tri. Bạn có thể viết các script CGI trong Perl, Python, C, bash, hoặc thậm chí Assembly :). Vì vậy, tôi đoán mod_cgi, mod_fastcgi, mod_scgi là các mô-đun apache tương ứng của chúng. Đúng?

WSGI là một loại tối ưu hóa/cải thiện được thiết kế một phiên bản hiệu quả được thiết kế đặc biệt cho ngôn ngữ python. Để sử dụng mod_wsgi này là một cách để đi. đúng?

Lá này thoát ra mod_python. Vậy thì nó là gì?

Apache -> mod_fastcgi -> flup (thông qua giao thức CGI) -> Django (thông qua giao thức WSGI) flup là một cách khác để chạy với wsgi cho bất kỳ máy chủ web có thể nói FCGI, SCGI hoặc AJP

FLUP là gì? AJP là gì? Làm thế nào Django đi vào hình ảnh?

Những câu hỏi này làm tăng các câu hỏi về PHP. Làm thế nào là nó thực sự chạy? Nó sử dụng công nghệ gì? mod_php & mod_python sự khác biệt là gì?

Trong tương lai nếu tôi muốn sử dụng Perl hoặc Java thì tôi sẽ phải nhầm lẫn lần nữa? Vui lòng ai đó có thể giải thích rõ ràng và đưa ra Hình ảnh hoàn chỉnh .

Trả lời

2

mod_python là giống nhất mod_php (nghĩa là nó cố gắng làm mọi thứ). Đó không nhất thiết phải là một điều tốt và tôi sẽ không khuyên bạn nên viết các ứng dụng cho các giao diện mod_python bản địa ngày nay.

WSGI là một số loại tối ưu hóa/cải thiện inshort một phiên bản hiệu quả được thiết kế đặc biệt cho python

Sự khác biệt được WSGI được định nghĩa trong ngôn ngữ Python chính nó: nó xác định những gì các đối tượng và giá trị mã của bạn sẽ nhận được . [S | Nhanh] CGI quan tâm nhiều hơn đến byte trên dây.

Bằng cách viết ứng dụng của bạn theo tiêu chuẩn WSGI (trực tiếp hoặc sử dụng một khung công tác hỗ trợ nó), bạn đang tách riêng các mối quan tâm về việc viết và triển khai ứng dụng.

Để sử dụng mod_wsgi này là một cách để thực hiện. đúng?

Đó là cách cách để đi và chắc chắn là lựa chọn tốt cho người dùng Apache, nhưng không phải là lựa chọn duy nhất. Viết cho WSGI và bạn có thể triển khai trong một loạt các môi trường, bao gồm [S | Fast] CGI và mod_python.

6

Không có chính xác tương đương với mod_php trong thế giới Python.

  • FastCGI, SCGI và AJP chạy ứng dụng web dưới dạng quy trình riêng biệt (daemon) và chuyển thư giữa máy chủ web và nó.
  • mod_python được sử dụng để nhúng mã Python vào quá trình httpd trong bất kỳ giai đoạn yêu cầu nào.
  • mod_wsgi có thể chạy mã Python trong daemon hoặc chế độ được nhúng.
  • CGI là giao thức chạy tập lệnh/chương trình mỗi khi có yêu cầu.
  • FLUP là bộ các bộ điều hợp có thể được sử dụng để chuyển đổi một trong các giao diện này sang giao diện khác.
4

mod_python là phần tử tương đương gần nhất của mod_php, nhưng điều này không có nghĩa là mod_python sẽ phù hợp với nhu cầu của bạn. Đối với mỗi ngôn ngữ lập trình, bạn phải liệt kê tất cả các tùy chọn có thể và chọn tùy chọn bạn cần.

Đối với PHP, bạn có mod_php và mod_cgi, nhưng từ hai mod_cgi này là kém hơn trong hầu hết các cách để mod_php để mọi người thường chọn tùy chọn sau. (Có một số lựa chọn thay thế, như suphp nếu bạn cần bảo mật hơn, v.v.)

Đối với Python bạn có mod_cgi, sẽ chạy trình thông dịch python mỗi khi bạn yêu cầu. Mod_python thay vì có python nhúng nên nó thường nhanh hơn và đơn giản hơn, nhưng đối với các dự án lớn, hoặc các dự án đang sử dụng một khung công tác (như DJango), bạn có thể sẽ muốn sử dụng mod_wsgi vì nó là tài nguyên thân thiện nhất.

Đối với ruby ​​bạn cũng có tùy chọn sử dụng mod_cgi, nhưng điều đó sẽ quá chậm. mod_ruby cũng là một tùy chọn, nhưng chỉ dành cho các chương trình nhỏ. mod_fastcgi thường là tùy chọn cho rails/merb và các framework web ruby ​​khác, nhưng chúng được superseeded bởi mod_rails và mod_rack, rất thân thiện với esource. Nhưng đối với các kịch bản đơn giản, sau này có trọng lượng quá nặng.

Đối với mono (asp.net) bạn có mod_mono, thường là tùy chọn duy nhất.

Đối với java, bạn thường chạy một máy chủ web Tomcat/Jetty riêng biệt và sử dụng mod_proxy.

Tất nhiên chạy một máy chủ web riêng biệt và sử dụng mod_proxy thường là một tùy chọn cho tất cả các khung công tác web, mặc dù nó chỉ phù hợp với quy trình phát triển. Đối với môi trường sản xuất, bạn phải chọn cẩn thận lựa chọn tốt nhất (tùy chọn thân thiện với tài nguyên) khung của bạn (django, đường ray, asp.net, v.v.) cần

10

Cách tiêu chuẩn để triển khai ứng dụng Python lên web là qua WSGI. Những ngày này không có lý do để sử dụng bất cứ điều gì khác.

mod_wsgi là mô-đun Apache hỗ trợ WSGI.Các máy chủ web khác sẽ có các tên khác nhau cho các mô-đun WSGI của chúng.

+1

+1 Cảm ơn. Đây là một câu trả lời ngắn và pin cho "Cái nào để sử dụng?" – claws

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