170 likes | 321 Views
PHP приложения върху IIS – инсталация и настройки. Владимир Чалков Vladimir Tchalkov, Ventsislav Popov Crossroad Ltd. За какво ще говорим?. Малко предистория Инсталация на PHP Конфигурация Примерно приложение Анализ на потенциални проблеми Q&A. Малко предистория.
E N D
PHP приложения върху IIS – инсталация и настройки Владимир Чалков Vladimir Tchalkov, Ventsislav Popov Crossroad Ltd.
За какво ще говорим? • Малко предистория • Инсталация на PHP • Конфигурация • Примерно приложение • Анализ на потенциални проблеми • Q&A
Малко предистория • Common Gateway Interface (CGI) • Ползи • Много прост за използване • Минуси • Лоша производителност поради високата “цена” за създаване на процес • Създава нов процес и изпраща заявката към него • Чака резултат • Спира процеса
Малко предистория (2) • Internet Server Application Programming Interface (ISAPI) • Ползи • Ако е написано правилно е изключително бързо • Минуси • Трябва да бъде thread-safe (много php extensions не са) • Изисква разработка на C++
FastCGI • FastCGI: най-доброто от CGI и ISAPI • Подобрява CGI протокола • Уеб сървъра създава FastCGI процес при първа заявка • После процеса се използва отново • Част от IIS 7, но може да се инсталира и на по-стари версии • Ползи от FastCGI върху Windows • Много по-бързо • Много по-стабилно от ISAPI поради single-threaded изпълнението Non-thread safe PHP се препоръчва за FastCGI
FastCGI Архитектура FastCGI process pool за PHP5 IIS Worker Process FastCGI протокол върху named pipes или TCP php-cgi.exe FastCGI process pool за PHP4 Request queue php.exe
Microsoft и PHP общността Преди След
Усилия в полза на PHP • ADOdb • LGPL Open Source проект със съдействието на Microsoft • SQL Server PHP Driver • Първата версия наSQL Server Driver заPHP – дава възможност на PHP приложения да използват SQL ServerDatabase • IIS7+ FastCGI • Подобрена производителност на PHP върху Windows • Expression Web 2.0 • Възможност за редакция на PHP уеб сайтове
Инсталиране и настройване • Лесен подход • С използването на web platform installer • Ръчен подход • Разрешаване на FastCGI • Изтегляне на последната non thread-safe версия на PHP • Дефиниране на Handler mapping за PHP • Дефиниране на FastCGI приложение за PHP
Инсталиране на PHP приложения върху IIS7 • Контролът на конфигурацията на IIS за PHP приложенията става чрез web.config • Например: настройване на default document index.php • PHP приложения работят в новата IIS7 integrated pipeline съвместно с ASP.NET и други приложения • Може да се разширяват съществуващи PHP приложения с ASP.NET функционалност • Може да се разработват .NET модули, които обработват PHP заявки по същия начин както обработват и ASP.NET заявки. • Например: URL Rewriter, който създава лесни URL, за PHP и ASP.NET съдържание.
Най-добри практики за PHP под IIS7 • Ако няма свободни процеси за чакаща заявка, трябва да осигурим нов процес! • 4 инстанции на процес за всеки процесор • Всеки процес трябва да се рециклира периодично • instanceMaxRequests - броя заявки, които ще бъдат обработени преди да бъде рециклиран • PHP_fcgi_max_requests – трябва да бъде НЕ по-малко от instanceMaxRequests. • <fastCgi> • <application fullPath="C:\PHP\php-cgi.exe" • maxInstances="4" • instanceMaxRequests="10000" • idleTimeout="300"/> • </fastCgi>
Най-добри практики за PHP под IIS7 • Специфичните за PHP environment variables в web.config?! • <fastCgi> • <application fullPath="C:\PHP\php-cgi.exe" • instanceMaxRequests=“10000"> • <environmentVariables> • <environmentVariable • name=”PHP_FCGI_MAX_REQUESTS” • value=”10000”/> • </environmentVariables> • </application> • </fastCgi>
Най-добри практики за PHP под IIS7 • Клиента получава response timed out! • FastCGI процесаще бъде спрян ако не върне отговор към FastCGI handler-ав рамките на определено време. • requestTimeout - времето (в секунди), което една заявка чака да процеса да започне обработка. • activityTimeout – максималното времето (в секунди) за всяко действие в рамките на процеса. Трябва да е по-малко от requestTimeout! • <fastCgi> • <application fullPath="C:\PHP\php-cgi.exe" • activityTimeout=“30" • requestTimeout=“90"/> • </fastCgi>
FastCGI най-добри практики • FastCGI process security context • FastCGI използва Application pool identity за стартираните процеси. • fcgi.impersonate - PHP настройка за client impersonation. • FastCGI и PHP върху Windows Server • http://forums.iis.net • Community • http://www.iis.net/php • Комерсиални продукти • Consider Zend’s commercial offerings (Zend Core) • FastCGI за IIS6 • FastCGI Extension за IIS6 налични за изтегляне!
Обобщение • FastCGI за IIS6 е наличен за изтегляне! • FastCGI драстични подобрява надеждността и производителността на PHP приложениявърху IIS6 и IIS7 • Integrated pipeline в IIS7 дава възможност за: • Разширяването на съществуващи PHP приложенияс ASP.NET • Разработка на managed модули, които да се намесват в обработката на постъпващите заявки за различни уеб сайтове (ASP.NET, PHP, Ruby, т.н.).