Назад | Перейти на главную страницу

используя mod_fcgid вместо mod_php

Что я должен сделать, чтобы использовать mod_fcgid вместо mod_php в ubuntu и centos. каковы основные преимущества и различия между двумя

На моей платформе общего хостинга я использую FastCGI для запуска PHP, а не для его прямого вызова. Они запускают PHP через CGI по умолчанию, а не как модуль, поэтому для меня это был просто вопрос добавления следующего в мой .htaccess файл:

 AddHandler application/myphp .php
 Action application/myphp /cgi-bin/myphp.fcgi

Затем мне нужно было создать myphp.fcgi скрипт в моем каталоге cgi-bin, содержащий:

#!/bin/sh

# This ensures PHP doesn't try to run it's own
# process manager.
export PHP_FCGI_CHILDREN=0

# Replace this shell image with a PHP
# image.
exec /path/to/php -c /path/to/my/php.ini

У меня это работает безупречно, и моя хостинговая среда работает в кластере из почти дюжины серверов за аппаратным балансировщиком нагрузки.

mod_php:

  • немного быстрее, чем mod_fcgid
  • работает под процессом httpd
  • иметь доступ к apache api (de.php.net/manual/en/ref.apache.php)
  • плохо для виртуального хостинга, так как все домены работают под одним и тем же пользователем

mod_fcgid:

  • скрипты запускаются под нужным пользователем (подходит для виртуального хостинга)
  • повышенная безопасность
  • может запускать больше, чем просто php
  • вы можете просмотреть несколько версий php, то есть php4, php5, php5.1, php5.2, php 5.3

cgi = каждый запрос запускает процесс и возвращает результаты клиенту fcgi = application (например, Ruby / Django) или интерпретатору (PHP) продолжает работать, а веб-сервер пересылает запросы и получает от него ответы.

FastCGI почти всегда быстрее (для того, что его поддерживает), однако для некоторых очень древних вещей (например, nagios) нужны cgi. Единственное реальное преимущество cgi заключается в том, что там, где нет сценариев трафика, приложение cgi не использует память, но обычно веб-сервер достаточно умен, чтобы закрыть приложение FastCGI, которое не используется в течение некоторого времени, так что это не настоящее преимущество.