1С-Битрикс: Управление сайтом - Первый PHP продукт Certified for Windows 2008

1С-Битрикс: Управление сайтом - Первый PHP продукт Certified for Windows 2008

Хотя эта новость уже прошла как через наши каналы, так и через Майкрософт, но как принимавший непосредственное участие в этом процессе скажу от себя.

Мы не в первый раз проходим различные тесты для разных платформ. Это был и MySQL, это были и Platform тесты для Microsoft Windows Server 2003 и Microsoft SQL Server 2005. Совсем недавно мы подтвердили свою совместимость с Microsoft SQL Server 2008. Но все тесты фактически сводились к формальному подтверждению работоспособности продукта под ту или иную СУБД или платформу.

Windows Server 2008

Несмотря на неудачный, на мой взгляд, продукт для рабочих станций Windows Vista, Майкрософту удалось выпустить супер-продукт - серверную версию Windows Server 2008. Я не буду рассказывать о всех возможностях этой ОС, лично мне особенно интересными стали Hyper-V и IIS. И если Hyper-V мне был интересен с точки зрения локальной разработки, тестирования и т.п. (например, наш корпоративный портал работает на виртуальной машине под Hyper-V и для многих наших сотрудников/пользователей это оказалось сюрпризом), то IIS мне был интересен как новая платформа не только для нового ASP.NET продукта, но и для PHP продуктов.

И интересен не только мне! Спрос на размещение КП или сайта на платформе Windows растет с каждым днем. Если раньше это были экзотические установки, в основном наших зарубежных клиентов, то сегодня это вполне обычное явление - большинство организаций имеет Windows сети, соответствующих админов и высокоскоростной Интернет в офис. К тому же в сети повсеместно рекламируется что Майкрософт повернулась лицом к PHP приложениям и что теперь это родная для IIS 7 платформа, благодаря FastCGI.

После всего этого мы и решили по настоящему проверить у себя насколько окажется жизнеспособной конфигурация БУС+IIS.

Тестирование

После принятия решения о тестировании "1С-Битрикс: Управление сайтом" для "Certified for Windows Server 2008", я скачал документ с требованиями и был немного удивлен - документ о тестировании содержал более 240 страниц и требовал пройти более 100 тестов, некоторые из которых были совсем не простыми. Но трусы не играют в хоккей, а тем более не сертифицируют приложения на совместимость и я приступил... smile:)

Большая часть тестов касается установки/удаления приложения. Майкрософт требует чтобы приложения не оставляли за собой "мусора", могли устанавливаться с командной строки, имели подписанные дистрибутивы, легко деинсталлировались и т.п.. Вообще, Майкрософт, небезосновательно уделяет большое внимание процедуре установки приложения. Проходим эти тесты...

Часть тестов относится к безопасности, Hyper-V, кластерам, особенностям конфигурирования ОС, взаимодействиям с прочим ПО. Проходим и их...

Наибольший интерес вызвал нагрузочный тест. По его требованиям нужно на сервере запустить специальное приложение (loadgen), которое максимально использует ресурсы сервера - процессоры и память под завязку, при этом само приложение тоже нагружается рядом тестов с клиентских машин. Сам тест проходит 48 часов, во время которого все логгируется, как клиентские запросы, так и серверные ответы. В этом тесте меня как раз и ждал сюрприз.

Вначале я, следуя нашей же инструкции, настроил под IIS обычный PHP + eAccelerator, но в течении 48 часов тесты показали не совсем стабильную работу и не очень хорошую производительность. После этого я обратил внимание на рекомендуемую Майкрософтом сборку PHP, которая на странице скачивания выглядит как Non Thread Safe.

После установки и запуске теста обнаружилось, что не нужен никакой прекомпилятор типа eAccelerator (он даже вреден в этом случае), приложение отработало все 48 часов без единого сбоя, с производительностью, которой позавидуют многие Linux/FreeBSD серверы. Наш продукт был нагружен помимо loadgen-ом еще четырьмя клиентскими компьютерами, которые беспрерывно ходили по сайту и ни одного сбоя!

После такого открытия я действительно поверил - PHP под платформу Windows Server 2008 не маркетинговый шаг, а реальность.

Были еще тесты на работоспособность продукта после сбоев, например, после выключения питания сервера. Очень большое внимание Майкрософт уделяет поддержке приложений под их платформу. Меня это очень удивило, но у нас запросили информацию как мы осуществляем поддержку и как мы отлаживаем приложение в случае сбоев. Наши инструменты по диагностике ошибок и отправке их в саппорт + SLA + ... - стали подтверждением нашей дееспособности в вопросах решении проблем. Майкрософт уделяет большое внимание для сертифицированных продуктов - не только их качеству, но и их поддержки.

В общем, сейчас, когда я вижу что приложение имеет лого "Certified for Windows Server 2008", я могу быть полностью уверен что оно прошло самые жесткие испытания, что оно действительно будет работать с максимальной производительностью и в случае сбоев будет оказана квалифицированная поддержка.

Что же дальше?

А дальше мы планируем развивать интеграцию с Microsoft Windows Server 2008 - изменяем руководство по интеграции, будем еще оптимизировать продукт под эту платформу, сделаем отдельный специальный инсталлятор для IIS, дадим клиентам возможность приобретать продукт вместе с SQL Server 2008 по льготной цене, в общем сделаем все для тех, кто привык работать с продукцией Microsoft, к тому же сам Майкрософт приложил к этому уже усилия, которые эффективно работают.
Яковенко Дмитрий
28.04.2009 10:37:46
Спасибо за статью, очень итнтересно.
На практике действительно PHP nts работает быстрее, чем PHP + eAccelerator.
Раз тут была затронута тема про документацию, спрошу: если настроить обработку 404 ошибки БУСом, то никак не могу настроить нормальный вывод сообщений об ошибках в PHP (ошибка 500). Сейчас обработка 404 (ЧПУ и т.д.) нормально работает, а вот на 500ую (когда допущена ошибка в php) вылазить строка, что в главном модуле используется неопределенная константа BX_PERSONAL_ROOT
Tushinsky Yury
28.04.2009 13:54:21
Для обработки 404 необходимо установить обработчик /404.php, а для 500 вы какую страницу используете?
Яковенко Дмитрий
28.04.2009 14:44:07
Цитата
необходимо установить обработчик /404.php

Конечно стоит, иначе бы ЧПУ не работало.
Сейчас обработка 500 ошибки из Error Pages убрана.
В Edit Feature Settings стоит Detailed error for local and custom for remote.
Если 500 вернуть то показывается стандартная страница IIS.
Если в Edit Feature Settings поставить Detailed error, то перестает обрабатываться 404, но 500 отображается нормально.
Tushinsky Yury
28.04.2009 15:08:36
Странно, у меня в Edit Feature Settings стоит Custom Error Рages, обработчик 500 ошибки я не менял, но при php ошибках они отображаются, а не страница IIS (т.е. php в этом случае выдает 200, а не 500).
Яковенко Дмитрий
28.04.2009 15:57:43
Да, действительно чудеса.
Не могу найти разницы в настройках 2х серверов, на одном все хорошо, на втором вместо ошибки PHP вижу
Цитата
PHP Notice: Use of undefined constant BX_PERSONAL_ROOT - assumed 'BX_PERSONAL_ROOT' in C:\inetpub\wwwroot\retailbox\retail\bitrix\modules\main\tools.php on line 1798
Ким Анатолий
01.05.2009 09:44:17
А вы пробовали IIS + php (module), а не FastCGI?
tgur
01.05.2009 23:15:06
Вроде php как модуль IIS не бывает, это чисто апачская фича. Или я что-то пропустил?
Ким Анатолий
04.05.2009 09:17:18
"... Windows NT/200x/XP and IIS 4 or newer

PHP may be installed as a CGI binary, or with the ISAPI module. In ..."