Ускорить php на iis

Установка и настройка компоненты PHP для веб-сервера IIS

Для работы с веб-проектами на базе популярных CMS (англ. Content Management System — система управления содержимым), таких как WordPress, Drupal, Joomla и др. необходим компонент, который бы обрабатывал скрипты PHP и преобразовывал бы их в код HTML, понятный браузеру. В данной статье рассмотрим 2 способа установки компоненты PHP на входящий в поставку Windows веб-сервер IIS (Internet Information Services) с помощью программы «Установщик веб-платформы» от компании Mocrosoft и вручную, с помощью официального инсталлятора.

0. Оглавление

1. Установка и настройка веб-сервера IIS

Прежде всего, у вас должен быть установлен веб-сервер IIS. Об установке IIS можно прочитать в статьях:

Кроме того, в процессе установки помимо компонент по умолчанию обязательно должна быть установлена компонента FastCGI. Если же веб-сервер IIS уже установлен, но данная компонента не была выбрана, то это можно сделать и позже. Рассмотрим процесс установки компоненты FastCGI в Winows 8/8.1. Чтобы активировать FastCGI, проходим тот же путь, что и для активации IIS. Кстати, в Windows 8.1 нужный нам раздел панели управления «Программы и компоненты» удобно вынесен в контекстное меню кнопки «Пуск».

В открывшемся окне раздела кликаем «Включение и отключение компонентов Windows».

Раскрываем список «Службы IIS», в нём – «Службы Интернета», далее – «Компоненты разработки приложений». И уже в этом списке ставим галочку возле «CGI». Далее жмём «ОК» и дожидаемся, пока система настроит и применит изменения.

Далее рассмотрим 2 способа установки компоненты PHP на веб-сервер IIS:

2. Установка компоненты PHP с помощью программы «Установщик веб-платформы»

Установщик веб-платформы предоставляет собой небольшую программу, предоставляющую доступ к быстрой установке и настройке всего спектра продуктов, которые могут понадобиться для разработки или развертывания веб-сайтов и веб-приложений на базе платформы Windows. Скачать установщик веб-платформы можно на официальном сайте программы.

После скачивания запускаем инсталлятор и дожидаемся окончания установки. После того, как процесс установки будет завершен, мы попадем в главное окно программы, где можно увидеть огромное количество программ, компонент, сборок и пр. существующих для разработки веб-сайтов и веб-приложений. Необходимая нам компонента PHP также присутствует в данном списке. Найти ее проще всего вбив соответствующий запрос в поле поиска, расположенное в верхнем правом углу окна программы. Затем необходимо нажать кнопку «Добавить» в строке с компонентой требуемой версии (на момент написания статьи, актуальной была версия 5.63)

Данная компонента будет добавлена в список устанавливаемых элементов. Нажимаем «Установить» для установки приложений из этого списка.

Запустится мастер установки, принимаем условия лицензионного соглашения нажав кнопку «Принимаю».

И дожидаемся окончания установки, нажав «Готово» когда мастер закончит работу.

На этом в общем то и все. Компонента PHP успешно установлена. Аналогичным образом можно также добавить компоненту «Диспетчер PHP для IIS» с помощью которой можно будет настраивать компоненты PHP прямо из «Диспетчера служб IIS».

3. Установка компоненты PHP с помощью официального инсталлятора

Теперь рассмотрим процесс установки компоненты PHP вручную, т. е. с помощью инсталлятора. Дистрибутив PHP можно скачать с официального сайта. В нашем случае скачиваем инсталлятор PHP.

Запускаем инсталлятор PHP и в окне мастера установки жмём «Next».

Соглашаемся с лицензионными условиями. Жмём «Next».

Соглашаемся с путём установки, если нет необходимости его менять. Жмём «Next».

В следующем окне выбираем режим «IIS FastCGI», если текущая операционная система — Windows Server. Если работа происходит в Windows 7, 8, 8.1, выбираем режим «Other CGI». И жмём «Next».

Затем, ничего не меняя, жмём «Next».

Следующий шаг – запуск самой инсталляции. Жмём «Install».

По завершению инсталляции жмём «Finish».

В довесок к самому PHP также установим плагин для его управления в «Диспетчере служб IIS». Плагин PHP Manager for IIS, в соответствии с разрядностью операционной системы, скачиваем с официального сайта.

Запускаем установку плагина. Если на компьютере не установлена программная платформа NET Framework, инсталлятор плагина предложит отправиться на официальный сайт для скачивания её дистрибутива. И только после установки NET Framework и перезагрузки компьютера плагин PHP Manager for IIS захочет устанавливаться без каких-либо проблем. Жмём «Next».

Соглашаемся с лицензионными условиями и жмём снова «Next».

По завершению установки плагина закрываем окно установщика.

Запускаем «Диспетчер служб IIS». Если все действия осуществлены корректно, в «Диспетчере служб IIS» увидим появившийся раздел «Администратор PHP». Заходим сюда двойным щелчком.

Для дальнейшем работы потребуется зарегистрировать компоненту PHP – увидим активной ссылку регистрации новой версии PHP. Жмём её.

В появившемся окошке указываем путь к запрашиваемому исполняемому файлу и нажимаем «ОК».

Это завершающий этап настройки PHP.

Смотрите также:

IIS (Internet Information Services) – один из немногих штатных инструментов Windows, которым можно пользоваться, не ища более приемлемых альтернатив от других разработчиков. Веб-сервер IIS с поддержкой языка PHP можно использовать…

Раннее я уже писал об установке сервера хранилища конфигураций в системе «1С:Предприятия» 8. В данной статье рассмотрим процесс публикации сервера хранилища конфигураций на веб-сервере IIS для возможности доступа к хранилищам, обслуживаемым…

Веб-сервер представляет собой некоторую программу (службу), принимающую HTTP-запросы от клиентов, обычно от веб-браузеров, обрабатывающую данные запросы и выдающую им ответ, как правило, вместе с HTLM-страницей (сайтом), изображением, файлом, медиа-потоком или другими данными. Ниже подробно рассмотрим…

Источник

Установка и настройка веб-сервера IIS + PHP + MySQL

Чаще всего, PHP и MySQL устанавливается на серверы с Linux. Однако, при необходимости, можно настроить запуск и обработку PHP скриптов на Windows. Версии последней могут быть разные, например, Server 2008/2012/2016/2019 или не серверные системы, такие как, 7/8/10. Данная инструкция подойдет как для чайника, так и опытного специалиста (в качестве шпаргалки).

Читайте также:  рыбачьте с нами печора телефон

Установка IIS

Если откроется окно с приветствием, нажимаем Далее:

При выборе типа установки выбираем Установка ролей или компонентов:

При выборе целевого сервера оставляем локальный сервер (или выбираем удаленный, если установка выполняется из удаленной консоли):

Также среди ролей в подразделе «Разработка приложений» ставим галочку для установки CGI — этот компонент нам нужен для работы PHP:

Выбор служб ролей — нажимаем далее или, при необходимости, выбираем FTP-сервер:

В следующем окне ставим галочку Автоматический перезапуск конечного сервера, если требуется и кликаем по Установить:

Дожидаемся окончания процесса установки.

Сразу после установки IIS запускается автоматически. Но, если что, его можно запустить с помощью команды iisreset:

* если выполнить данную команду без опций, то она перезапустить веб-сервер.

Также мы можем открыть диспетчер служб (команда services.msc) и перезапустить Службу веб-публикаций:

Открываем браузер и вводим адрес http://localhost — должен открыться стартовый портал:

Развертывание отдельного сайта

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

Заполняем данные для нового сайта:

После заходим в каталог с сайтом (в нашем примере, это C:\inetpub\wwwroot\php) и создадим в нем файл index.html со следующим содержимым:

Hello from PHP site

Открываем браузер и переходим на созданный сайт, например, как в нашей инструкции — http://php.dmosk.ru. Мы должны увидеть страницу с написанным нами текстом:

Тестовый сайт создан.

Установка PHP

Откроется страница с несколькими версиями пакета — там как мы ставим PHP как FastCGI, нам нужна версия «Non Thread Safe» (не потокобезопасная), так как она будет работать быстрее. И так, скачиваем zip-архив на сервер:

Для установка PHP на Windows достаточно просто распаковать содержимое архива в любой каталог, например, C:\Program Files\PHP:

Делаем копию файла php.ini-production и переименовываем его в php.ini:

Открываем на редактирование данный файл и правим следующее:

open_basedir = C:\inetpub\wwwroot
.
cgi.force_redirect = 0
.
short_open_tag = On

* где open_basedir — директория, в которой будут разрешены PHP-скрипты; cgi.force_redirect — указывает будет ли скрипты обрабатываться при прямом запросе или только при запросе от веб-сервера. В IIS запросы контролируются самим веб-сервером, поэтому опция может оказать обратный эффект; short_open_tag — позволяет использовать короткий вид открывающих тегов для PHP.

cd «C:\Program Files\PHP»

Мы должны получить список подключенных модулей:

[PHP Modules]
bcmath
calendar
Core
ctype
.

Но если мы получим ошибку, связанную с отсутствием файла VCRUNTIME140.dll:

. необходимо установить Microsoft Visual C++ Redistributable. Переходим на страницу https://www.microsoft.com/ru-RU/download/details.aspx?id=52685 и скачиваем компонент:

После загрузки, устанавливаем его на сервер, после чего, снова пробуем вывести на экран модули php:

Настройка сайта на IIS для работы с PHP

В меню справа кликаем по Добавить сопоставление модуля:

Нажимаем OK и подтверждаем действие. Сопоставление создано.

Теперь заходим в Документ по умолчанию:

. и добавляем новый документ:

* в данном примете мы указываем, что по умолчанию сервер будет искать файл index.php, если таковой не указан явно в запросе.

Открываем в проводнике папку, в которой находятся файлы сайта (в нашем примере, C:\inetpub\wwwroot\php). Создаем файл index.php с содержимым:

Открываем браузер и снова переходим на наш сайт — мы должны увидеть страницу с информацией о php:

PHP Manager в IIS

Для того, чтобы упростить настройку PHP мы можем установить диспетчер PHP для IIS. Для этого переходим по ссылке https://www.iis.net/downloads/community/category/manage и переходим по ссылке для скачивания стабильной версии php-менеджера:

Выполняем установку на сервере, запустив загруженный файл. Открываем диспетчер управления IIS — мы должны увидеть PHP Manager:

Установка MySQL

На следующей странице выбираем для скачивания mysql-installer-community:

В открывшемся окне кликаем по No thanks, just start my download:

В следующем окне кликаем по Execute:

. и дожидаемся установки СУБД:

Откроется окно конфигурации MySQL — нажимаем Next:

Выбираем установку одиночного сервера MySQL:

Оставляем все значения по умолчанию для настроек сети:

Требуем сложные пароли:

Вводим дважды пароль для пользователя root:

* также, на данном этапе мы можем сразу добавить новых пользователей.

Устанавливаем СУБД как сервис и стартуем его:

Настройки готовы для применения — нажимаем Execute:

Дожидаемся применения настроек и кликаем по Next:

Установка завершена — нажимаем Finish.

Сервер баз данных готов к использованию.

По умолчанию, PHP поддерживаем mysql — в этом можно убедиться на странице phpinfo, найдя раздел mysqlnd:

Источник

Microsoft IIS 7.0 и выше

Этот раздел содержит инструкции по настройке Internet Information Services (IIS) 7.0 и более поздних версий для работы с PHP на Microsoft Windows Vista SP1, Windows 7, Windows Server 2008 и Windows Server 2008 R2. Для получения инструкций по настройке IIS 5.1 и IIS 6.0 на Windows XP и Windows Server 2003 перейдите на страницу Microsoft IIS 5.1 и IIS 6.0.

Включение поддержки FastCGI в IIS

Модуль FastCGI при установке IIS по умолчанию отключён. Способы включения его различаются в зависимости от версии используемой Windows.

Для включения поддержки FastCGI на Windows Vista SP1 и Windows 7:

В меню «Пуск» выберите пункт «Выполнить», в появившемся окне введите с клавиатуры «optionalfeatures.exe» и нажмите «Ok»;

В открывшемся окне «Компоненты Windows» раскройте папку «Службы IIS», «Службы интернета», «Компоненты разработки приложений» и установите галочку напротив «CGI»;

Нажмите OK и ждите окончания процесса установки.

Чтобы включить поддержку FastCGI на Windows Server 2008 и Windows Server 2008 R2:

Читайте также:  Что такое приветственный бонус

В Windows откройте меню Пуск выберите пункт «Выполнить:», наберите с клавиатуры «CompMgmtLauncher» и нажмите «Ok»;

Если роль «Веб-сервер (IIS)» не представлена во вкладке «Роли», добавьте её, выбрав «Добавить роли»;

Если роль «Веб-сервер (IIS)» присутствует, выберите «Выбор службы ролей» и установите галочку напротив «CGI» в группе «Компоненты разработки приложений»;

Нажмите «Далее» затем «Установить» и ждите окончания процесса установки.

Настройка IIS для обработки PHP запросов

Скачайте и установите PHP в соответствии с инструкциями, приведёнными в описании установки

При использовании IIS рекомендуется использовать потоко-небезопасную (Non-thread-safe) сборку PHP, которая доступна по ссылке » PHP для Windows: Установочные файлы и исходный код.

Измените CGI и FastCGI настройки в файле php.ini как показано ниже:

Пример #1 CGI и FastCGI настройки в php.ini

Настройте IIS обработчик для PHP, используя Интерфейс управления IIS или через командную строку.

Использование Интерфейса управления IIS для создания обработчика PHP

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

В Windows меню Пуск выберите команду «Выполнить:», введите в клавиатуры команду «inetmgr» и нажмите «Ok»;

В Интерфейсе управления IIS выберите сервер в дереве «Подключения»;

На «Начальной странице» откройте «Сопоставления обработчиков»;

На вкладке «Действия» выберите «Добавить сопоставление модуля. «;

Нажмите кнопку «Ограничения запроса» и сконфигурируйте сопоставление вызывать обработчик только при сопоставлении с файлом или каталогом;

Нажмите OK во всех диалогах для сохранения конфигурации.

Использование командной строки для создания сопоставления обработчика PHP

Пример #2 Создание IIS FastCGI пула процессов

Пример #3 Создание сопоставления обработчика запросов PHP

Эта команда создает для IIS сопоставление обработчика для файлов с расширением *.php, который получается в результате и обрабатывается модулем FastCGI.

На этом шаге установка и настройка завершены. Следующие инструкции необязательны, но очень рекомендуются для достижения оптимальной функциональности и производительности PHP на IIS.

Представление и доступ к файловой системе

При использовании IIS рекомендуется включить представление FastCGI в PHP. Это контролируется директивой fastcgi.impersonate в php.ini файле. Когда имперсонация включена, PHP будет выполнять все операции с файловой системой под аккаунтом, который был определён при аутентификации IIS. Это гарантирует, что при общем PHP процессе для всех сайтов IIS, PHP скрипты этих сайтов не будут иметь доступ к файлам друг друга до тех пор, пока IIS использует различные учетные записи для каждого из сайтов.

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

Пример #4 определение аккаунта, используемого IIS при анонимной идентификации

Пример #5 Настройка разрешения доступа к файлам

Установка index.php как документ по умолчанию в IIS

Пример #6 Установка index.php как документ по умолчанию в IIS

FastCGI и PHP удаление конфигурации

Пример #7 Настройка FastCGI и PHP утилизации

Установка таймаута FastCGI

Пример #8 Конфигурация установок таймаута FastCGI

Источник

Ускорить php на iis

Общие обсуждения

Здравствуйте подскажите правильную настройку IIS 7> под управлением Windows 7, чтобы работало корректно.

Также есть ли отличия IIS из под Windows 7 и в Windows Server? Ответа по пулу и зависание на отклик не могу негде найти, вот по этому и пишу, помогите спецы, те кто долго и держит сервера на IIS под большие задачи.

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

Почему не серверная ось стоит, ну изначально ставил серверную, оказалось с матерью промахнулся не все драйвера сели, далее + антивируса на серверную ось не было, + другой софт работает под простой виндой, то есть в итоге простую поставил, так как на сервере не только раздача по http, но и ещё другие функции идут. Но мы не об этом, в общем помогите по IIS, заранее спасибо.

Все ответы

в настройка пула (дополнительные параметры), значение длинна очереди поставьте максимальное, а таймаут простоя надо установить на 0 или 24 часа (задается в минутах).

ну как бы так и стоит, а таймаут тоже стоит на 24 часа, чтобы процесс на ребут шёл.

не помогает, помогает решение в 240 процессов от одного пула! Ну как то же люди работают на 1 пуле или же на 2-х, то есть если 2, то пока 1 идёт на перезагрузку, то второй принимает, или же есть ещё такое понятие как перекрытие процесса, то есть запускается новый, а старый висит и завершается, то есть уже не принимает запросы.

Блин помогите мне точно настроить, вообще кто то пробовал под раздачу http юзать?

Кстати позже и скрин выставлю настроек, но прикол в том, то что я настройки уже как мог менял, если ставить мало процессов, например 10, то через час уже ответа нет. То есть например нажимаем на скачать или же открываем сайт, браузер думает, то есть процесс не отвечает, хотя в настройках насчёт того, когда процесс не отвечает, тоже стоит(((

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

Читайте также:  Tsp что это такое

Для большенства задач достаточно одного рабочего процесса, правда работал я только с серверными ОС, может на декстопе есть свои ограничения.

Как временное решение можно выставить рестарт пула каждый час.

А ошибки в логах смотрели? Может не в настройках дело.

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

Для большенства задач достаточно одного рабочего процесса, правда работал я только с серверными ОС, может на декстопе есть свои ограничения.

Как временное решение можно выставить рестарт пула каждый час.

Вы всё верно поняли про кол процессов, то что идёт по кругу и даёт продержаться и обрабатывать, но если поставить как писал уже ранее пару процессов, то через час или ранее отклика нет уже.

А насчёт того, что там и как работает, да там тупо файловый архив, то есть по http передаёт прямые ссылки на скачивание, + поставил примочку на то, чтобы не крысили ссылки, но она не как не влияет на это, даже без неё так.

То есть коротко сервер тупо раздаёт файлы по http и всё, там нет не пхп файлов ни скриптов!

Я тоже думаю, то что куча процессов на это не нормально(((

Кстати там есть ещё настройка по ограничение памяти в КБ, там 2 графы, виртуальная память и память просто, чем они отличаются и виртуальная должна стоять больше? + ещё это ограничение на 1 процесс или на весь пул?

Если у вас 64 битная ОС, то виртуальную память лучше не трогать. В таких ОС процесс может запрашивать (но не занимать) сразу большие объемы и это никак не сказывается на производительности. Просто память (Commit size) это сколько фактически занял процесс. Ограничение на один процесс.

В вашем случае нужно начинать анализ с логов, потом проверять использование ресурсов в момент возникновения проблемы. Проследите за памятью, процессором, количеством подключений, сетью, очередями к процессам. Еще можно с помощью Process monitor поискать на чем процесс застревает.

Для простой раздачи по http подойдут даже настройки по умолчанию, маловероятно что проблема из-за них. Еще как вариант, можно создать новый сайт и пул для него, выключить управляемый код и посмотреть что будет в данном случае.

Если у вас 64 битная ОС, то виртуальную память лучше не трогать. В таких ОС процесс может запрашивать (но не занимать) сразу большие объемы и это никак не сказывается на производительности. Просто память (Commit size) это сколько фактически занял процесс. Ограничение на один процесс.

В вашем случае нужно начинать анализ с логов, потом проверять использование ресурсов в момент возникновения проблемы. Проследите за памятью, процессором, количеством подключений, сетью, очередями к процессам. Еще можно с помощью Process monitor поискать на чем процесс застревает.

Для простой раздачи по http подойдут даже настройки по умолчанию, маловероятно что проблема из-за них. Еще как вариант, можно создать новый сайт и пул для него, выключить управляемый код и посмотреть что будет в данном случае.

Да ОС 64 битная, наблюдал пару часиков при условии, что есть нагрузка, да я замечал то что память не так много кушает и доже задавался вопросом когда он достигнет пиковой отметки)) Но я видел ранее лишь перезапуск пулов от того или иного действия!

Сервер удалённый и локальный своего рода можно сказать, как туда попаду так и логи возьму, он можно сказать в другой стране стоит)) Далее насчёт памяти, ну когда я выставил ограничение в память сервер куда больше зажил, а то есть ограничивало, ранее озу забивал по максимум, что не давало стабильно работать на сервере, сейчас ну когда я наблюдал через день, была картину в положительную сторону, хотя если как Вы сказали, то что ограничение на 1 процессор, то тогда правило должно было превысить в 240 раз))) По этому я и спросил, походу на весь пул он ограничивает, хотя вот сегодня попаду на сервер ещё раз посмотрю, может уже озу забило))) И Вы тут правы.

Насчёт процесс монитора, а что именно смотреть то там и куда копать если что?

Далее насчёт простой раздачи http пойдёт нормальный и по умолчанию настройки, увы не так, это опробовано было сразу с первого дня, по этому и менял и трогал настройки)) а изначально не было фильтра, а стоит на сервере в придачу Helicon Ape http://www.helicontech.com/ape/ работает как защита от кражи ссылок, больше уверен, его вырублю тоже самое будет, так как изначально вообще без него работал, то есть без защиты первые дни работал и в первые дни это уже замечал.

Я понял в общем можно попробовать создать новый пул по стандартным настройкам и применить к существующим сайтам просто напросто, и далее посмотреть верно?

Источник

Образовательный портал