Использование FastCGI для размещения приложений PHP на IIS 6.0
- Вступление
- Что такое FastCGI?
- Установите расширение FastCGI для IIS 6.0 и IIS 5.1
- Скачать и установить PHP
- Настройте расширение FastCGI для работы с PHP
- Настройте расширение FastCGI для работы с PHP с помощью скрипта конфигурации
- Вручную настройте расширение FastCGI для работы с PHP
- Тест PHP CGI
от Руслан Якушев
Вступление
Язык программирования PHP уже много лет является важным игроком в сфере веб-приложений. Несмотря на то, что PHP не был разработан Microsoft, поддержка этой технологии очень важна для нас, поэтому вы можете установить ее на любой автономный сервер IIS, а также встроить в нашу облачную систему. Веб-сайты Windows Azure (WAWS) Платформа. В этой статье объясняется, как использовать расширение Microsoft IIS FastCGI для настройки и запуска приложений PHP в операционных системах Windows XP и Windows Server® 2003.
Что такое FastCGI?
FastCGI - это стандартный протокол, который позволяет исполняемым файлам CGI для каркасов приложений взаимодействовать с веб-сервером. Он отличается от стандартного протокола CGI тем, что FastCGI повторно использует процессы CGI для нескольких запросов, что обеспечивает значительное повышение производительности по сравнению с CGI. Поддержка IIS FastCGI позволяет IIS размещать обычные CGI-программы, такие как PHP или Ruby on Rails, с использованием протокола FastCGI, а также обеспечивает высокую производительность и стабильность при развертывании таких сред приложений.
Использование поддержки IIS FastCGI включает в себя следующее:
- Веб-сервер IIS
- Расширение IIS FastCGI
- Программа CGI (например, php-cgi.exe)
Веб-сервер отправляет HTTP-запросы вашему приложению в компонент FastCGI, который, в свою очередь, запускает исполняемый файл программы CGI и перенаправляет запрос на обработку. Как только запрос завершен, и ответ возвращается обратно на сервер и отправляется клиенту, процесс CGI повторно используется для последующего запроса. Это помогает избежать потери высокой производительности при запуске нового процесса для каждого запроса, что приводит к повышению производительности и масштабируемости в производственной среде.
Чтобы узнать больше о протоколе FastCGI, см. http://www.fastcgi.com/devkit/doc/fcgi-spec.html ,
Установите расширение FastCGI для IIS 6.0 и IIS 5.1
Вы можете скачать расширение FastCGI для 32-битной и 64-битной Windows XP и Windows Server 2003 здесь:
https://www.iis.net/downloads/microsoft/fastcgi-for-iis
При запуске установщика FastCGI он копирует специфичные для FastCGI файлы в папку% windir% \ system32 \ inetsrv, а затем регистрирует и включает расширение веб-сервера FastCGI. Из файлов, которые копирует установщик, обратите внимание на следующее:
- fcgiext.dll - это фактический обработчик FastCGI, который связывается с процессами с поддержкой FastCGI для обработки запросов.
- fcgiext.ini - это файл конфигурации, который содержит сопоставление расширений файлов процессам FastCGI. Он также содержит конфигурацию пулов процессов FastCGI.
- fcgiconfig.js - это настраивает расширение FastCGI. Сценарий обновляет файл fcgiext.ini, изменяет метабазу IIS и при необходимости перезапускает пулы приложений веб-службы.
Скачать и установить PHP
Расширение FastCGI полностью совместимо с текущим официальным дистрибутивом PHP 4.4.x и PHP 5.x для Windows, доступным по адресу https://windows.php.net/download , Поскольку расширение FastCGI размещает и выполняет процессы php однопоточным образом, рекомендуется загрузить и установить не поточно-ориентированную сборку PHP, доступную для Windows. Не поточно-ориентированная сборка PHP обеспечивает повышение производительности из-за отсутствия безопасности потоков, что приемлемо для среды с одним параллелизмом, такой как FastCGI.
Настройте расширение FastCGI для работы с PHP
После установки PHP в Windows у вас есть два варианта настройки FastCGI: используйте сценарий конфигурации, который поставляется с установкой расширения FastCGI, или выполните все задачи по настройке вручную, изменив параметры конфигурации IIS и файл fcgiext.ini.
Настройте расширение FastCGI для работы с PHP с помощью скрипта конфигурации
Сценарий конфигурации с именем fcgconfig.js предоставляется вместе с установкой расширения FastCGI. Он находится в% windir % \ system32 \ inetsrv.
Чтобы настроить расширение FastCGI для работы с PHP:
- Откройте командную строку.
- Измените текущий каталог на% windir % \ system32 \ inetsrv.
Зарегистрируйте программу PHP CGI как программу, которая будет обрабатывать расширения .php, запустив следующий конфигурационный скрипт:
cscript fcgiconfig.js -add -section: "PHP" -extension: php -path: "C: \ PHP \ php-cgi.exe"
Замените C: \ PHP \ php-cgi.exe на путь к php-cgi.exe, если вы установили в каталог, отличный от C: \ PHP.
Заметка
Если вы не хотите регистрировать расширение PHP, которое будет обрабатываться компонентом FastCGI на всем сервере, и хотите зарегистрировать его только для определенного веб-сайта, добавьте аргумент «–site: [siteId]», например:
cscript fcgiconfig.js -add -секция: «PHP» -расширение: php -path: «C: \ PHP \ php-cgi.exe» –сайт: 1
Заметка
Полный список параметров конфигурации, которые поддерживаются расширением FastCGI, см. В документации расширения FastCGI.
Вручную настройте расширение FastCGI для работы с PHP
Чтобы вручную настроить расширение IIS и FastCGI, необходимо создать сопоставления сценариев для расширения PHP в метабазе IIS и изменить файл fcgiext.ini, который находится в% windir % \ system32 \ inetsrv.
Чтобы создать сопоставление сценария:
- Запустите inetmgr.exe.
- Дважды щелкните значок машины для локального компьютера.
- Щелкните правой кнопкой мыши Веб-сайты и выберите Свойства .
- Нажмите вкладку Домашний каталог .
- Нажмите кнопку Конфигурация… .
- Нажмите кнопку Добавить ...
В диалоговом окне « Добавить / изменить сопоставление расширения приложения » нажмите « Обзор ...» . Перейдите к файлу fcgiext.dll, который находится в% windir % \ system32 \ inetsrv.
Заметка
Если вам нужно использовать FastCGI в 32-битном режиме на 64-битной машине, перейдите к% windir % \ SysWOW64 \ inetsrv.
В текстовом поле Расширение введите .php .
В разделе « Глаголы» в текстовом поле « Предел» введите GET, HEAD, POST .
Убедитесь, что флажок «Обработчик сценариев» и « Проверить наличие файла» установлен.
Нажмите ОК .
Чтобы изменить файл fcigext.ini:
После добавления сопоставления сценария измените файл fcgiext.ini.
- Добавьте расширение для отображения приложений (php = PHP) в раздел [Types] .
Добавьте раздел [PHP] с помощью ExePath = c: \ php \ php-cgi.exe (при условии, что вы установили файлы PHP в папку C: \ PHP).
[Типы]… php = PHP… [PHP] ExePath = c: \ php \ php-cgi.exe
После сохранения изменений в файле fcgiext.ini перезапустите пул приложений, связанный с веб-сайтом, на котором размещены ваши приложения PHP.
Чтобы настроить документ по умолчанию в IIS:
Большинство приложений PHP используют файл с именем index.php в качестве документа приложения по умолчанию. Настройте IIS для обработки этого файла в качестве страницы содержимого по умолчанию.
- Запустите inetmgr.exe.
- Дважды щелкните значок машины для локального компьютера.
- Щелкните правой кнопкой мыши Веб-сайты и выберите Свойства .
- Откройте вкладку « Документы ».
- Нажмите кнопку Добавить ...
- В диалоговом окне Добавление страницы содержимого в текстовом поле Страница содержимого по умолчанию введите index.php .
Нажмите ОК .
IIS фокусируется на полной поддержке функциональности PHP и производительности приложений PHP, работающих на расширении FastCGI. В сотрудничестве с Zend Technologies IIS идентифицировал набор параметров конфигурации для расширения FastCGI и PHP, которые обеспечили бы оптимальную функциональность и производительность для приложений PHP при работе в Windows с помощью расширения FastCGI.
Чтобы получить оптимальную функциональность и производительность, настройте свой сервер следующим образом:
Измените файл php.ini следующим образом:
- Установите fastcgi.impersonate = 1 . FastCGI в IIS поддерживает возможность олицетворения маркеров безопасности вызывающего клиента. Это позволяет IIS определять контекст безопасности, в котором выполняется запрос.
- Установите cgi.fix_pathinfo = 1 . cgi.fix_pathinfo обеспечивает * реальную * PATH_INFO / PATH_TRANSLATED поддержку CGI. Ранее в поведении PHP было задано значение PATH_TRANSLATED равным SCRIPT_FILENAME, а не определение PATH_INFO. Для получения дополнительной информации о PATH_INFO см. Спецификации cgi. Установка этого значения в 1 приведет к тому, что PHP CGI исправит свои пути, чтобы соответствовать спецификации.
- Установите cgi.force_redirect = 0 .
Установите параметры конфигурации FastCGI для раздела PHP, запустив fcgiconfig.js следующим образом:
Установите для свойства пула процессов FastCGI InstanceMaxRequests значение 10000 . Этот параметр указывает, что расширение FastCGI будет перезапускать php-cgi.exe после успешной обработки 10000 запросов.
> cscript fcgiconfig.js -set -section: "PHP" -InstanceMaxRequests: 10000
Настройте расширение FastCGI, чтобы задать для переменных среды PHP_FCGI_MAX_REQUESTS для процесса PHP значение 10000 . Этот параметр указывает php-cgi.exe перезапускать себя после успешной обработки 10000 запросов.
> cscript fcgiconfig.js -set -section: "PHP" -EnvironmentVars: PHP_FCGI_MAX_REQUESTS: 10000
Заметка
Можно настроить InstanceMaxRequests и PHP_FCGI_MAX_REQUESTS для использования чисел, отличных от 10000. Как общее правило, убедитесь, что значение InstanceMaxRequests меньше или равно значению PHP_FCGI_MAX_REQUESTS .
Тест PHP CGI
После установки расширения FastCGI, а также регистрации и настройки PHP CGI вы можете запросить приложение PHP и использовать его в обычном режиме.
Чтобы протестировать приложение PHP, создайте и запросите страницу phpinfo.php на своем сайте, которая содержит следующее:
<? php phpinfo (); ?>
Вы должны увидеть что-то вроде следующего:
Обратите внимание, что поле Server API указывает, что PHP размещен в режиме FastCGI .
Используйте форумы FastCGI, чтобы обсудить использование расширения FastCGI или подать отчеты об ошибках:
Для получения дополнительной информации о том, как запускать различные приложения PHP на IIS, смотрите:
Php phpinfo (); ?