FastCGI — — — PHP — — — IIS 7, как обновить php на хостинге.

IIS по-русски IIS по-русски

Использование FastCGI для хостинга PHP приложений на IIS 7.0

Автор: Руслан Якушев

Данная статья описывает конфигурацию модулей FastCGI и PHP для хостинга PHP приложений на IIS 7.0

Важно: Данная статья содержит инструкции по установке компонента FastCGI в операционных системах Windows Server 2008 и Windows Vista SP1. Обратите внимание: на Windows Vista должен быть установлен SP1.

Содержание

  • Краткий Обзор
  • Включение поддержкиFastCGIвIIS7.0
    • Windows Server 2008
    • Windows Vista SP1
    • Обновление модуляFastCGI
    • Administration Pack для IIS 7.0
  • Установка и настройка PHP
  • НастройкаIIS7.0 для обработкиPHPзапросов
    • Используя консоль управления IIS
    • Используя командную строку
  • Рекомендуемые руководства по конфигурированиюFastCGIиPHP
    • Безопасная изоляция для PHP Web сайтов
    • Режим рециркуляцииPHPпроцессов
    • Версионность PHP
    • Рекомендации по безопасностиPHP
  • Конфигурирование PHP на уровне сайтов
  • МодульURLrewritingдляPHPприложений
  • Полезные ресурсы

Благодаря модулю FastCGI в IIS поддерживается большинство популярных приложений коллективной работы, которые используют протокол FastCGI для хостинга на Web сервере IIS высокопроизводительных и надёжных средств. FastCGI предоставляет высокопроизводительную альтернативу CGI (Common Gateway Interface), стандартного средства, являющегося интерфейсом между внешними приложениями и Web серверами, которые поддерживаются как часть возможностей IIS начиная с первых версий сервера.

Программы CGI выполняются на сервере при каждом запросе, это позволяет обработать запросы, динамически сгенерировать ответы и возвратить их обратно клиентам. Из-за того, что многие приложения коллективной работы не поддерживают исполнения сразу нескольких потоков, CGI позволяет надежно исполненять нескольких процессов под управлением IIS, обрабатывая по одному запросу на процесс. К сожалению это приводит к снижению производительности из-за высоких накладных расходов связанных с необходимостью запуска и остановки процессов при обработке каждого запроса.

FastCGI является более производительным по сравнению с CGI, механизм его работы выглядит так – один и тот же процесс используется для обработки множество поступивших запросов. FastCGI так же поддерживает работу с библиотеками не умеющими безопасно работать в многопоточной среде. При работе с набором повторно используемых процессов мы можем быть уверены в том, что каждый процесс будет обрабатывать не более одного запроса в каждый момент времени.

Добавьте роль CGI сервиса через меню Server Manager -> Roles -> Add Role Services. Этим мы включим поддержку двух сервисов CGI и FastCGI:

Windows Vista SP1

Добавьте расширение CGI, используя Control Panel -> Programs and Features -> Turn Windows features on or off. Этим мы включим поддержку двух сервисов CGI и FastCGI:

Важно: Установка обновлений для модуля FastCGI

Установка пакета администрирования для IIS 7.0

Примечание: Данный шаг не обязателен (опционален).

Из большого числа полезных функций административного пакета IIS 7.0 можно выделить интерфейс конфигурирования модуля FastCGI. Административный пакет может быть установлен из следующих источников:

  • Административный пакет для IIS 7.0 CTP2 — x86
  • Административный пакет для IIS 7.0 CTP2 — x64

Установка и настройка PHP

Рекомендуется использовать сборку non-thread safe PHP с модулем FastCGI сервера IIS 7.0. Эта сборка PHP дает значительный прирост производительности в отличие от стандартной сборки, т.к не производит проверок thread-safety, которые не требуются, так как сам FastCGI гарантирует однопоточное исполнение процессов, в окружении сервера.

  1. Загрузите последнюю версию non-thread safe пакета, включая бинарные файлы, по следующей ссылке http://www.php.net/downloads.php.
  2. Распакуйте файлы в директорию (например C:\PHP). Переименуйте файл php.ini-recommended в php.ini.
  3. Откройте переименованный файл 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.
    • Установите для директивы open_basedir путь к папке или сетевому ресурсу на котором расположены Web сайт(ты).
    • Директива extension_dir определяет расположение расширений для PHP. Обычно, для PHP версий 5.2.X значение для данной директивы устанавливается в extension_dir= «./ext«
    • Для включения необходимых расширений PHP уберите комментарии в файле php.ini с соответствующих строчек, к примеру:

extension=php_mysql.dll

  • Для проверки удачной установки PHP выполните следующую команду:
  • Если PHP вместе со всеми компонентами от которых он зависит был установлен корректно, то данная команда выдаст информацию о текущей конфигурации PHP.

    Для того чтобы приложения PHP корректно работали на IIS 7.0 необходимо настраивать привязку к запрашиваемым файлам, посредством которых IIS будет пропускать специфические PHP запросы к PHP приложениям, используя протокол FastCGI.

    Прим.переводчика: при запросе клиентом файла с расширением *.php с Web сайта/сервера, расположенного на IIS 7.0, сервер будет «отдавать» обработку php файлов приложению, отвечающему за обработку php файлов.

    Используя консоль управления IIS

    Откройте IIS Manager и выберете “Handler Mappings” на уровне управления сервером:

    Запустите “Add Module Mapping” для конфигурации, представленной на рисунке ниже:

    Нажмите OK. На запрос о создании приложения FastCGI нажмите Yes.

    Протестируйте корректную привязку заголовков, созданием файла phpinfo.php в папке C:\inetpub\wwwroot, используя следующий код:

    Откройте браузер и перейдите по ссылке http://localhost/phpinfo.php. Если установка прошла корректно, то вы увидите стандартную страницу конфигурации PHP:

    Примечание: Если Вы не видите в списке модулей «FastCgiModule», то это означает, что модуль не зарегистрирован, либо не включен. Для того, чтобы проверить, зарегистрирован ли модуль FastCGI откройте конфигурационный файл IIS по следующему адресу: %WINDIR%\windows\system32\config\applicationHost.config и проверьте присутствие значения в следующей секции:

    <add name=»FastCgiModule» image=»%windir%\System32\inetsrv\iisfcgi.dll» />

    Также, в этом же файле, убедитесь в том, что модуль FastCGI добавлен в секцию <modules>:

    Используя командную строку

    Альтернативой предыдущим шагам может служить использование команды appcmd.

    Для создания пула приложений FastCGI выполните следующую команду:

    C:\>%windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI /+[fullPath=’c:\\php-cgi.exe’]

    После этого создайте привязку заголовков:

    C:\>%windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers /+[name=’PHP_via_FastCGI’,path=’*.php’,verb=’*’,modules=’FastCgiModule’,scriptProcessor=’c:\\php-cgi.exe’,resourceType=’Unspecified’]

    Примечание: Если вы используете PHP версий 4.X,то вместо php-cgi.exe необходимо использовать php.exe.

    Рекомендуемые руководства по конфигурированию FastCGI и PHP

    Данная ссылка содержит zip архив с файлом презентаций руководств, по разворачиванию хостинга PHP приложений в среде общего хостинга .

    Безопасная изоляция для PHP Web сайтов

    Рекомендации по изоляции PHP Web сайтов в среде общего хостинга согласуются с общей безопасностью изоляции, рекомендованной для IIS 7.0. В особенности следует обратить внимание на следующее:

    • Используйте один пул приложений на один Web сайт
    • Используйте выделенный аккаунт пользователя для пула приложений
    • Используйте анонимного пользователя для идентификации пула приложений
    • Убедитесь в том, что реализация FastCGI включена в файле php.ini (fastcgi.impersonate=1)

    Более подробно о безопасной изоляции в окружении общего хостинга написано в документации «Изолирование сайтов с пулами приложений»

    Режим рециркуляции PHP процессов

    Убедитесь в том, что FastCGI всегда рециркулирует (перезагружает — прим.перевод) процессы php-cgi.exe, прежде чем завершается работа основного PHP процесса. Режим рециркуляции процессов FastCGI контролируется параметром конфигурации, который называется instanceMaxRequests (максимальное кол-во запросов на экземпляр приложения — прим.перевод). Данное значение определяет, какое кол-во запросов выполнит FastCGI, прежде чем произойдёт рециркуляция. В PHP так же существует функция рециркуляции, которая контролируется параметром PHP_FCGI_MAX_REQUESTS. Установка наименьшего значения для instanceMaxRequests или подобного параметра PHP_FCGI_MAX_REQUESTS, гарантирует, что основной PHP процесс не будет закончен преждевременно.

    Свойства для FastCGI могут быть изменены при помощи IIS Manager или командной строки, используя приложение appcmd.

    Для настройки процесса рециркуляции FastCGI, используя IIS Manager, вам необходимо установить Административный пакет для IIS 7.0 и выбрать на уровне севера меню FastCGI settings (параметры FastCGI):

    Далее необходимо выбрать приложение FastCGI, которое вы хотите настроить и нажать «Edit. » в панели Actions:

    В окне «Edit FastCGI application» установите для параметра instanceMaxRequest значение 10000 нажмав кнопку обзора в меню EnvironmentVariables:

    Добавьте переменную PHP_FCGI_MAX_REQUESTS,установив для неё значение в 10000:

    Примечение: Если вы не установите данные значения, то по умолчанию они будут следующими: instanceMaxRequests = 200, PHP_FCGI_MAX_REQUESTS = 500 (для большинства сборок PHP).

    Использование командной строки:

    Для конфигурирования процессов рециркуляции FastCGI и PHP посредством appcmd, используйте следующие команды:

    C:\>%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /[fullPath=’c:\\php-cgi.exe’].instanceMaxRequests:10000

    C:\>%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+»[fullPath=’C:\\php-cgi.exe’].environmentVariables.[name=’PHP_FCGI_MAX_REQUESTS’,value=’10000′]»

    Большинство PHP приложений могут зависеть от функций или расширений доступных только в определённой версии PHP. Если такие приложения должны быть размещены на одном сервере хостинга, то необходимо чтобы на данном сервере одновременно поддерживались и работали разные версии PHP. Обработчик FastCGI в IIS 7.0 полноценно поддерживает одновременную работу различных версий PHP на одном сервере.

    К примеру, допустим что на своём Web сервере вы планируете поддерживать следующие сборки: PHP 4.4.8, PHP 5.2.1 и PHP 5.2.5 non-thread safe. Для включения данной возможности вы должны положить соответствующие исполняемые файлы PHP в различные папки на файловой системе (к примеру C:\php448\, C:\php521\ и C:\php525nts) и создать соответствующие пулы приложений для каждой версии:

    C:\>%windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI /+[fullPath=’c:\php448\php.exe’]

    C:\>%windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI /+[fullPath=’c:\php521\php-cgi.exe’]

    C:\>%windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI /+[fullPath=’c:\php525nts\php-cgi.exe’]

    Так, если у вас есть 3 Web сайта (site1, site2, site3), каждый из которых должен использовать различные версии PHP, вы можете задать соответствие заголовков для каждого из сайтов, создав соответствующий пул приложений FastCGI.

    Примечание: Каждый пул приложений процессов FastCGI будет идентифицируется уникально — комбинацией полного пути и свойствами аргументов.

    C:\>%windir%\system32\inetsrv\appcmd set config site1 –section:system.webServer/handlers /+”..[name=’PHP448_via_FastCGI’,path=’*.php’,verb=’*’,modules=’FastCgiModule’,scriptProcessor=’c:\php448\php.exe’,resourceType=’Either’]

    C:\>%windir%\system32\inetsrv\appcmd set config site2 –section:system.webServer/handlers /+”..[name=’PHP521_via_FastCGI’,path=’*.php’,verb=’*’,modules=’FastCgiModule’,scriptProcessor=’c:\php521\php-cgi.exe’,resourceType=’Either’]

    C:\>%windir%\system32\inetsrv\appcmd set config site3 –section:system.webServer/handlers /+”..[name=’PHP525nts_via_FastCGI’,path=’*.php’,verb=’*’,modules=’FastCgiModule’,scriptProcessor=’c:\php525nts\php-cgi.exe’,resourceType=’Either’]

    Рекомендации по безопасности PHP

    Следующие настройки могут быть использованы для улучшения безопасности установленного PHP. Следуя рекомендациям найдите и измените в файле php.ini следующие значения:

    Отключение удалённых URLs для функций управления файлами, которые могут быть использованы во вредоносном коде.

    Определение директории, в которой процессы PHP могут читать и записывать на файловой системе.

    Ограничение безопасного режима.

    Лимит времени выполнения

    Лимит на использование размеров памяти и файлов.

    Настройка сообщений об ошибках и ведения логов.

    Модуль FastCGI для IIS может обрабатывать запросы с ошибками, если PHP отправляет данные в stderr (стандартный поток ошибок – прим.перевод) используя протокол FastCGI. Отключение ведения логов FastCGI предотвращает отправку приложением PHP сообщений об ошибках, используя stderr, генерируя при этом ошибку с кодом 500 для клиентов.

    Скрытие присутствия PHP

    Конфигурирование PHP на уровне сайтов

    Данная секция описывает процедуры, которые необходимы для настройки PHP на уровне сайтов. Хочется обратить внимание на то, что данная рекомендация обнародована и проверена Radney Jasmin совместно с хостинг провайдером GoDaddy.com, который официально поддерживает PHP хостинг на Windows Server 2008 посредством FastCGI.

    Пулы процессов PHP на уровне сайтов

    Когда каждый Web сайт имеет собственный пул приложений (это является рекомендованной практикой для IIS 7.0), появляется возможность ассоциировать выделенный пул процессов FastCGI с каждым Web сайтом. Пул приложений процессов FastCGI идентифицируется уникально — комбинацией полного пути и атрибутами аргументов. Итак, если необходимо создать несколько процессорных пулов FastCGI для некоторого исполняемого процесса, такого как php-cgi.exe,то атрибуты аргументов могут использоваться для разграничения процессорных пулов. В дополнении процессы php-cgi.exe с применением ключа командной строки «-d», могут использоваться для определения INI записи в процессе PHP. Данный ключ может быть использован для установки различных значений PHP, которые позволяют задавать уникальность аргументов для каждого пула.

    К примеру, если двум Web сайтам «website1» и «website2» необходимо использовать собственные настройки PHP, то нужно изменить пул процессов FastCGI следующим образом:

    <application fullPath=»C:\PHP\php-cgi.exe» arguments=»-d open_basedir=C:\Websites\Website1» />

    <application fullPath=»C:\PHP\php-cgi.exe» arguments=»-d open_basedir=C:\Websites\Website2» />

    В данном примере настройки PHP, в частности директива open_basedir, используются для разграничения процессорных пулов. В дополнении это заставляет PHP процесс выполняться для каждого пула процессов только в той директории, в которой расположен корневой Web сайт.

    Тогда website1 может иметь сопоставление PHP заголовков, как показано ниже:

    <handlers accessPolicy=»Read, Script»>

    <add name=»PHP via FastCGI» path=»*.php» verb=»*» modules=»FastCgiModule» scriptProcessor=»C:\PHP\php-cgi.exe|-d open_basedir=C:\Websites\Website1» resourceType=»Unspecified» requireAccess=»Script» />

    и website2 может иметь следующее сопоставление PHP заголовков:

    <handlers accessPolicy=»Read, Script»>

    <add name=»PHP via FastCGI» path=»*.php» verb=»*» modules=»FastCgiModule» scriptProcessor=»C:\PHP\php-cgi.exe|-d open_basedir=C:\Websites\Website2» resourceType=»Unspecified» requireAccess=»Script» />

    Определение месторасположения файла php.ini

    Во время запуска процесс PHP определяет месторасположение файла конфигурации php.ini используя различные настройки. В официальной документации PHP детально описан процесс инициализации (начального запуска) процесса PHP. Так, одним из мест поиска процессом PHP своего файла конфигурации (php.ini) может быть директива PHPRC (PHPRC – это переменная среда ОС, как TMP или Temp – прим.перевод). Если процесс PHP находит файл конфигурации, определённый в вышеописанной директиве, то он начинает использовать данный файл конфигурации, игнорируя путь заданный по умолчанию в файле php.ini. Данная директива полезна для пользователей хостинга, они могут применять свои собственные настройки php.ini на уровне своих сайтов.

    К примеру, существует два Web сайта: website1 и website2; расположенных по следующим путям C:\WebSites\website1 и C:\WebSites\website2, тогда пул процессов php-cgi.exe в секции <fastCgi> файла applicationHost.config должен иметь следующий вид:

    <application fullPath=»C:\PHP\php-cgi.exe» arguments=»-d open_basedir=C:\Websites\Website1″>

    <environmentVariable name=»PHPRC» value=»C:\WebSites\website1″ />

    <application fullPath=»C:\PHP\php-cgi.exe» arguments=»-d open_basedir=C:\WebSites\Website2″>

    <environmentVariable name=»PHPRC» value=»C:\WebSites\website2″ />

    В данном случае WebSite1 имеет свои настройки php.ini файла, который расположен в директории C:\WebSites\website1, тогда как WebSite2 имеет свои настройки файла php.ini, который расположен в директории C:\WebSites\website2. Данная конфигурация так же предполагает что значение PHPRC не задано, иначе сделать уникальные установки файла php.ini на уровне сайтов не представляется возможным.

    Большинство популярных PHP приложений используют функциональность URL rewriting на Web серверах, которая предоставляет отображение дружественных ссылок и более корректное предоставление информации для поисковых машин (ссылки вида http://site.name/page123,а не http://site.name/mod_content/page.php=id123&disp — прим.перевод). В IIS 7.0 поддержка URL rewriting (перезапись ссылок) поддерживается посредством модуля URL rewrite.

    Cancel reply

    "defend radiation project" soil samples collected in 132 areas nike air max pas cher . Test results show that,nike air max pas piumino peuterey cher, per cubic meter of soil radioactivity over 37000 Becquerels of region total 22. The reason is limited

    at the end of last month, the former Inter Milan striker Adriano nike air max announced the signing and old club Flamengo, this is also A De アバクロ 通販 occupation career the third effect of flamenco, 30 year old Brazilian hope this opportunity to be able

    giubbotto peuterey (this article nike air max source: Chinese daily)

    The investigation will focus on

    ,nike air max, hosted by veteran Italy reporter Santoro talk show "AnnoZero". Santoro repeatedly cr nike air max 1 iticized

    "this approach as we used to see not accustomed to,abercrombie p abercrombie pas cher as cher, inexperienced people always thought that his car was a thief stole, basket louboutin avowed and hapless settle a matter by leaving it unsettled, you don’t think

    17 stalls per the programs broadcast at the same tim timberland catalogo e, made a strange life.

    she vowed to build special channel as long a flood control measur hollister magasin es,hollister magasin.

    Bangkok Metropoli nike tn pas cher tan Administration spokesman Judd said: "in order to calculate the area of Bangkok,nike tn pas cher

    has been committed to the protection and restoration of the traditional festiva holister ls of Fuzhou customs he,holister, repo louboutin pas cher femme rter saw.

    Time of the incident.

    time: 16 days afternoon peuterey location: Minqing County Yunlong Xiang Tan Kou industrial zone of louboutin femme a construction site will receive a bonus of 78000 yuan and apple notebook computer. with a certain degree of confusion

    to say the least,air max femme, the outlook is grim. air max femme But more and more peopl outlet timberland e realize,outlet timberland, printing mode situation than a few years ago expected risk. The people of that time,moleton hollister, advertising

    he said: "the scarponcini timberland new government announced after consul bermuda hollister tations are required at all,bermuda hollister, hope that these negotiations will end in the near future."

    UN Secretary General Ban Ki-moon at the meeting called on t louboutin homme he international c air max femme ommunity to reach a consensus on the issue of nuclear safety and take strong action, while establishing strict safety standards,louboutin homme

    to complete data,abercombrie, difficult cases need further investiga abercombrie tion a louboutin nd verification in 60 working days to still can not determine the claim result, can the investigation period appropriately extended, but the company shall

    in new network on 14 October,tiffany outlet, according to foreign reports, tiffany outlet tiffany, the evening o tiffany f 13 local time,nike air max, USA Seattle police arrested 10 "occupation of Seattle" activities of protesters in a park. "Occupation

    yesterday afternoon,abercrombie fitch, abercrombie fitch in Shenyang City,abercrombie and kent, Shenyang near the th abercrombie and kent e Imperial Palace,nike air max 95, a busy street shops at the entrance of the stone lions out a "head curtain",mulberry

    Картинки не открываются!

    из коробки не работает, нужно настраивать, а инфы нет, только общие рекомендации

    php4 – php5.2 быстро работает, а уже начиная с php5.3 тормозит нещщадно

    на apache сразу все версии php очень быстро работают

    из коробки не работает, нужно настраивать, а инфы нет, только общие рекомендации

    php4 – php5.2 быстро работает, а уже начиная с php5.3 тормозит нещщадно

    на apache сразу все версии php очень быстро работают