Mod_cgi, mod_fastcgi, mod_scgi, mod_wsgi, mod_python, FLUP. Я не знаю, сколько еще. что такое mod_php эквивалент?
Недавно я изучил Python. Мне нравится. Я просто хотел использовать его для веб-разработки. Эта мысль вызвала все проблемы. Но мне нравятся эти проблемы:)
Из мира PHP, где существует только один способ стандартизации. Я ожидал того же и искал python и apache.
Настройка Python на Windows/Apache говорит
Держитесь подальше от mod_python. Один общий вводящей в заблуждение идеей является то, что mod_python как mod_php, но для python. То есть не верно.
Итак, что эквивалентно mod_php в python?
Мне нужно немного пояснить этот Как веб-фреймворки Python, WSGI и CGI подходят друг к другу
CGI, FastCGI и SCGI являются агностиками языка. Вы можете писать сценарии CGI в Perl, Python, C, bash или даже Assembly:). Итак, я думаю, mod_cgi
, mod_fastcgi
, mod_scgi
- их соответствующие модули apache. Правильно?
WSGI - это своего рода оптимизированная/улучшенная версия, эффективная версия, специально разработанная для языка python. Для использования этого mod_wsgi
- это путь. правильно?
Это не соответствует mod_python
. Что это значит?
Apache → mod_fastcgi → FLUP (через протокол CGI) → Django (через протокол WSGI) Flup - это еще один способ запускать wsgi для любого веб-сервера, который может говорить FCGI, SCGI или AJP
Что такое FLUP? Что такое AJP? Как появился Django?
Эти вопросы поднимают вопросы о PHP. Как это работает? Какую технологию он использует? mod_php и mod_python, в чем отличия?
В будущем, если я хочу использовать Perl или Java, мне снова придется запутаться? Не стесняйтесь, кто-нибудь может ясно объяснить ситуацию и дать Заключительное изображение.
Ответы
Ответ 1
mod_python
больше всего похож на mod_php
на то, что он делает (т.е. пытается все сделать). Это не обязательно хорошая вещь, и я бы не рекомендовал писать приложения на родные интерфейсы mod_python сегодня.
WSGI - это своего рода оптимизированная/улучшенная версия, эффективная версия, специально разработанная для python
Разница заключается в том, что WSGI определен в самом языке Python: он указывает, какие объекты и значения получит ваш код. [S | Fast] CGI больше связаны с байтами на проводе.
Записывая приложение в стандарт WSGI (либо напрямую, либо используя фреймворк, который его поддерживает), вы расцепляете проблемы написания и развертывания приложений.
Чтобы использовать этот mod_wsgi - это способ пойти. правильно?
Это способ пойти, и определенно хороший выбор для пользователей Apache, но далеко не единственный. Напишите в WSGI, и вы можете развертывать его в широком диапазоне сред, включая [S | Fast] CGI и mod_python.
Ответ 2
Стандартный способ развертывания приложения Python в Интернете - через WSGI. В эти дни нет причин использовать что-либо еще.
mod_wsgi - это модуль Apache, который поддерживает WSGI. Другие веб-серверы будут иметь разные имена для своих модулей WSGI.
Ответ 3
Точного эквивалента mod_php в мире Python нет.
- FastCGI, SCGI и AJP запускают веб-приложение как отдельный процесс (демон) и передают сообщения между веб-сервером и им.
- mod_python используется для встраивания кода Python в процесс httpd во время любой фазы запроса.
- mod_wsgi может запускать код Python в любом демоне или вложенном режиме.
- CGI - это протокол, который запускает программу script/каждый раз, когда выполняется запрос.
- FLUP - это набор адаптеров, которые могут быть использованы для преобразования одного из этих интерфейсов в другой.
Ответ 4
mod_python является самым близким эквивалентом mod_php, но это не означает, что mod_python будет соответствовать вашим потребностям. Для каждого языка программирования вы должны перечислить все возможные варианты и выбрать тот, который вам понадобится.
Для PHP у вас есть mod_php и mod_cgi, но из этих двух mod_cgi уступает почти всем способам mod_php, поэтому люди обычно выбирают последнее. (Есть несколько альтернатив, например suphp, если вам нужна дополнительная безопасность и т.д.)
Для Python у вас есть mod_cgi, который будет запускать интерпретатор python каждый раз, когда вы делаете запрос. Mod_python вместо этого имеет встроенный python, поэтому он обычно выполняется быстрее и проще, но для больших проектов или проектов, использующих фреймворк (например, DJango), вы, вероятно, захотите использовать mod_wsgi, потому что он наиболее удобен для ресурсов.
Для ruby у вас также есть возможность использовать mod_cgi, но это будет слишком медленным. mod_ruby также является вариантом, но только для небольших программ. mod_fastcgi обычно был вариантом для rails/merb и других рубиновых веб-фреймворков, но они дополняются mod_rails и mod_rack, которые являются дружественными к источникам. Но для простых скриптов последние немного тяжелее.
Для mono (asp.net) у вас есть mod_mono, который обычно является единственным вариантом.
Для java вы обычно запускаете отдельный веб-сервер Tomcat/Jetty и используете mod_proxy.
Конечно, запуск отдельного веб-сервера и использование mod_proxy обычно является вариантом для всех веб-фреймворков, хотя он в основном подходит только для процесса разработки. В производственных средах вам нужно тщательно выбирать лучший вариант (тот, который в основном удобен для ресурсов) для вашей инфраструктуры (django, rails, asp.net и т.д.) Требуется