mod_cgi, mod_fastcgi, mod_scgi, mod_wsgi, mod_python, FLUP. Я не знаю, сколько еще. что эквивалентно mod_php? - PullRequest
12 голосов
/ 28 марта 2010

Я недавно выучил Python. Мне понравилось. Я просто хотел использовать его для веб-разработки. Эта мысль вызвала все неприятности. Но мне нравятся эти неприятности:)

Исходя из мира PHP, где стандартизирован только один способ. Я ожидал того же и искал python & apache.

Настройка Python в Windows / Apache? говорит

Держитесь подальше от mod_python. Один общий Вводящая в заблуждение идея состоит в том, что mod_python как mod_php, но для питона. То есть не соответствует действительности.

Так что же эквивалентно 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? Как Джанго появился на картинке?

Эти вопросы поднимают вопросы о PHP. Как это на самом деле работает? Какую технологию он использует? mod_php & mod_python в чем различия?

В будущем, если я захочу использовать Perl или Java, мне снова придется запутаться? Пожалуйста, может кто-нибудь объяснить вещи ясно и дать Полная картина.

Ответы [ 4 ]

10 голосов
/ 28 марта 2010

Стандартный способ развертывания приложения Python в Интернете - через WSGI. В наши дни нет причин использовать что-либо еще.

mod_wsgi - это модуль Apache, который поддерживает WSGI. Другие веб-серверы будут иметь разные имена для своих модулей WSGI.

7 голосов
/ 28 марта 2010

В мире Python нет точного эквивалента mod_php.

  • FastCGI, SCGI и AJP запускают веб-приложение как отдельный процесс (демон) и передают сообщения между веб-сервером и им.
  • mod_python используется для встраивания кода Python в процесс httpd на любом из этапов запроса.
  • mod_wsgi может запускать код Python либо в демоне, либо во встроенном режиме.
  • CGI - это протокол, который запускает скрипт / программу каждый раз, когда делается запрос.
  • FLUP - это набор адаптеров, которые можно использовать для преобразования одного из этих интерфейсов в другой.
4 голосов
/ 28 марта 2010

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 и других основанных на ruby ​​веб-фреймворков, но они заменяются mod_rails и mod_rack, которые дружественны к ресурсам. Но для простых сценариев последние немного тяжелее.

Для моно (asp.net) у вас есть mod_mono, который обычно является единственным вариантом.

Для Java вы обычно запускаете отдельный веб-сервер Tomcat / Jetty и используете mod_proxy.

Конечно, запуск отдельного веб-сервера и использование mod_proxy обычно является опцией для всех веб-фреймворков, хотя в основном подходит только для процесса разработки. Для производственных сред вы должны тщательно выбрать лучший вариант (который является наиболее дружественным к ресурсам), в котором нуждается ваша инфраструктура (django, rails, asp.net и т. Д.)

2 голосов
/ 28 марта 2010

mod_python больше всего похоже на mod_php в том, что он делает (т.е. он пытается сделать все). Это не обязательно хорошо, и я бы не советовал сегодня писать приложения для нативных интерфейсов mod_python.

WSGI - это своего рода оптимизированная / улучшенная, но эффективная версия, специально разработанная для python

Разница в том, что WSGI определен в самом языке Python: он указывает, какие объекты и значения получит ваш код. [S | Fast] CGI больше заботится о байтах в проводе.

Путем написания вашего приложения в стандарте WSGI (либо напрямую, либо с использованием инфраструктуры, поддерживающей его), вы не разделяете проблемы написания и развертывания приложений.

Чтобы использовать этот mod_wsgi, нужно пройти путь. право?

Это способ и, безусловно, хороший выбор для пользователей Apache, но далеко не единственный. Пишите в WSGI, и вы сможете развертывать его в самых разных средах, включая [S | Fast] CGI и mod_python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...