Что конкретно делает FastCGI (для Ruby, Java и Python)?

Что конкретно делает FastCGI (для Ruby, Java и Python)?

Если у меня есть сервер Apache, и я устанавливаю FastCGI, позволит ли это мне запускать скрипты Ruby и Python? Если Python уже установлен на сервере, разве я не смогу просто добавить .py в раздел CGI в файле httpd.conf, чтобы скрипты Python работали?

Для Ruby и Java, устраняет ли это необходимость в Mongrel и Tomcat, если установлены Ruby и Java?

Если я ничего не упускаю, похоже, FastCGI позволяет делать только то, что вы и так умеете.

решение1

FastCGI — это замена «стандартным» CGI-скриптам.

В CGI старой школы веб-сервер запускал ваш скрипт, отправлял ему запрос, ждал ответа, а затем ожидал завершения вашего скрипта.

Основная функция FastCGI заключается в том, что ваш скрипт не умирает, а зависает, ожидая другого запроса. Это делает его гораздо более эффективным, поскольку не создается другой процесс, вероятно интерпретируемый скрипт не перезагружается и т. д. Это большая победа для Perl, Ruby и почти любого другого языка.

Недостаток в том, что ваш сценарий должен быть написан для обработки такого рода вещей. Это несложно.

Таким образом, FastCGI призван снизить влияние обслуживания запроса.

Если вы используете Ruby on Rails (не просто Ruby), то взгляните на Phusion Passenger. Это один из потрясающих плагинов для сервера, который делает запуск Ruby on Rails довольно приятным.

Что касается mod_python, вы, конечно, можете это сделать. Однако есть компромиссы. Во-первых, скрипт CGI может работать от имени другого пользователя, а не от имени основного веб-сервера. Я не знаю, делает ли это mod_python. Может быть очень полезно иметь возможность работать от имени другого пользователя для решения проблем с разрешениями, разделения приложений путем запуска от разных пользователей и т. д.

Итак, отвечая на ваш вопрос немного по-другому, если вы готовы использовать mod_python и Phusion Passenger, то вам не нужно использовать FastCGI. Если вам нужно запустить скрипты в другом процессе, чем сервер, то вам нужно использовать FastCGI, если это возможно, вместо обычного старого CGI.

решение2

FastCGI — оптимизированная версия CGI. Соответствует интерфейсу CGI, добавляя распределенные вычисления.

Вы можете запускать скрипты python через CGI (модули cgitb полезны), но обычно лучше использовать фреймворк, такой как mod_python, по соображениям производительности и функциональности. Похожая ситуация с Ruby и Java.

Я не уверен, что вы пытаетесь сделать. Вы не можете просто заменить Mongrel или Tomcat на FastCGI. Это совершенно разные звери. Вам придется переписать приложение, чтобы подогнать интерфейс под веб-сервер.

Связанный контент