Настройка веб-сервера IIS + PHP + MySQL на Windows 7

Содержание:

Установка веб-сервера IIS

Открываем Панель управления -> Программы -> Включение или отключение компонентов Windows. Находим в списке раздел Службы IIS. Раскрываем его и выбираем нужные компоненты:

Устанавливаем компоненты веб-сервера
Устанавливаем компоненты веб-сервера

Базовый набор:

  • Безопасность. Выбираем все компоненты кроме “Проверка подлинности с сопоставлением сертификата …”.
  • Компоненты разработки приложений. Мне нужна только компонента CGI, для последующей установки PHP.
  • Общие функции HTTP. Отмечаем все пункты.
  • Проверка работоспособности и диагностика. Выбираем “Ведение журнала HTTP” и “Монитор запросов”.
  • Функции повышения быстродействия. Отмечаем все пункты.
  • Средства управления веб-сайтом. Отмечаем только “Консоль управления IIS”.

Когда все пункты выбраны, нажимаем Ок. После завершения установки обязательно перезагружаемся!

Теперь переходим к созданию веб-сайта. Открываем Панель управления -> Система и безопасность -> Администрирование -> Управление компьютером (можно быстрее: меню Пуск -> правый клик на Компьютер -> в меню выбрать пункт Управление). В открывшемся окне раскрываем группу “Службы и приложения” и открываем “Диспетчер служб IIS”. В окне Подключения выбираем папку Сайты, затем в правом окне Действия нажимаем на ссылку “Добавить веб-сайт”.

Создаем новый веб-сайт (1)
Создаем новый веб-сайт (1)

Далее необходимо указать имя веб-сайта и месторасположение его файлов (по умолчанию c:\inetpub\wwwroot). Остальные опции оставляем без изменения.

Создаем новый веб-сайт (2)
Создаем новый веб-сайт (2)

Нажимаем OK. На этом базовая настройка завершена. Нужно проверить работоспособность только что созданного сайта. Открываем браузер и в адресной строке вводим: http://localhost. Если все работает правильно, вы увидите похожую страницу:

Тестируем созданный сайт
Тестируем созданный сайт

Последний штрих. Чтобы сайт был доступен из вне, необходимо открыть 80-й порт для входящих соединений. Как это сделать на примере штатного брандмауэра Windows 7:
Откройте Панель управления -> Система и безопасность -> Брандмауэр Windows -> Дополнительные параметры. В списке необходимо найти и включить правило Службы Интернета (входящий трафик HTTP) :

Открываем 80-й порт в брандмауэре Windows
Открываем 80-й порт в брандмауэре Windows

В этом режиме базовой установки веб-сервер способен отображать только статические страницы (обычный HTML + JavaScript). Чтобы расширить его возможности, можно установить поддержку ASP, ASP.NET или PHP. Сам я занимаюсь программированием пока только на PHP, поэтому далее расскажу только об установке PHP на IIS в режиме FastCGI.

Установка PHP (FastCGI)

Конечно, оптимальный веб-сервер для PHP – это Apache, но все же бывают случаи когда требуется установить PHP на IIS. Тем более, в последнее время разработчиками была проделана большая работа, чтобы производительность PHP на IIS улучшилась.

Перед началом установки необходимо скачать релиз PHP с сайта http://windows.php.net/download/. Там предлагается несколько вариантов. Нам необходим релиз VC9 x86 Non Thread Safe. Для работы в режиме FastCGI это наиболее быстрый и стабильный вариант. Я рекомендую скачивать релиз с установщиком (installer), а не zip-архив (это для любителей ручной установки).

Теперь запускаем установщик. После нескольких не особо информативных окон нам предложат выбрать веб-сервер и режим работы PHP:

Установка PHP (1)
Установка PHP (1)

IISFastCGI – да, сейчас это единственный стабильный вариант установки PHP на IIS.

Далее переходим к выбору компонетов PHP. Если установку PHP производите впервые, лучше оставить значения по умолчанию.

После завершения работы установщика, переходим к настройкам IIS. В принципе здесь надо сделать только одно действие – поднять приоритет php-файлов, чтобы они обрабатывались в первую очередь. В диспетчере служб IIS нажимаем по названию нашего сайта и в окне справа выбираем раздел “Документ по умолчанию”. В появившемся списке необходимо переместить index.php в начало:

Установка PHP (2)
Установка PHP (2)

Пользователи Windows 7 64-бит, внимание! Вам необходимо произвести одно дополнительное действие. Откройте раздел “Пулы приложений”. Выделите DefaultAppPool и откройте “Дополнительные параметры” (через правый клик или в крайней правой колонке). В разделе Общие необходимо найти опцию “Разрешить выполнение 32-битных приложений” (Enable 32-bit Applications) и установить в положение True. Если уже созданы дополнительные пулы для уже существующих сайтов, то для каждого из них нужно проделать ту же операцию.

Теперь необходимо провести тестирование PHP. В корневую папку веб-сайта (c:\inetpub\wwwroot) необходимо поместить файл index.php со следующим содержанием:

<?php phpinfo()?>

Открываем сайт в браузере (http://localhost). Если все работает правильно, вы увидите страницу с информацией об установке PHP:

Тестируем PHP
Тестируем PHP

Установка MySQL

Инструкция по установке MySQL на Windows вынесена в отдельную статью.

FAQ

  • При запуске сайта возникает ошибка: «Процесс не может получить доступ к файлу, так как он используется другим процессом. (Исключение из HRESULT: 0×80070020)».
    Эта ошибка говорит о том, что порт, к которму осуществлена привязка сайта (по умолчанию 80-й), уже занят другим приложением. Очень часто такая ошибка возникает, если установлен другой веб-сервер (например Apache).
    Чтобы выяснить какой процесс занимает 80-й порт, в командной строке введите: netstat -ano -p tcp
    В колонке “Локальный адрес” ищем запись вида 0.0.0.0:80, далее смотрим какой “PID” соответствует этой записи. В “Диспетчере задач” открываем вкладку Процессы (опцию «Отображать процессы всех пользователей» должна быть отмечена). Далее переходим в меню Вид -> «Выбрать столбцы» отметь «ИД проесса (PID)». Теперь с помощью PID можно выяснить какой процесс занимает порт.
    Еще одним из решений этой проблемы является привязка сайта к альтернативному порту (например 8080).
  • При запуске php-скрипта появляется ошибка: Warning: fopen(путь_к_файлу): failed to open stream: Permission denied  in путь_к_файлу.
    Проблема в том, что группа пользователей IIS_IUSRS имеет права только на чтение. Открыть свойства папки, в которой распологаются файлы веб-сайта (по умолчанию wwwroot), закладка Безопасность. В списке находим группу IIS_IUSRS и даем ей права полного доступа.
  • Как установить кодировку сайта.
    Откройте “Диспетчер служб IIS”, выберите нужный веб-сайт.В настройках сайта откройте раздел “Заголовки ответов HTTP”. Нажмите ссылку Добавить. В открывшемся окне в поле Имя введите: Content-type, в поле Значение введите: text-html; charset=windows-1251 (см. скриншот). Вместо windows-1251 можно прописать любую другую кодировку.
Кодировка сайта
Кодировка сайта

Ссылки по теме:

Вливайтесь в общение

374 комментария

Ваш e-mail не будет опубликован. Обязательные поля помечены *

  1. Доброго времени суток, все настроил, включил порт 8080, настроил домен в ISP менеджере….

    Только файлы доступны по адресу с портом например http://site.ru:8080/img/snimok.jpg

    Как убрать с адреса порт? Чтобы было вот так http://site.ru/img/snimok.jpg

  2. Доброго времени суток, настроил веб сервер на 88 порт так как 80 не хотел работать, видимо что то мешало.

    Теперь на хостинге прописал домен под настроенный ip, но ничего не получается.

    Как прописать домен для ip на IIS ?

    1. В настройке домена там же и порт прописывается.

  3. Где б**ть этот инсталлятор PHP !!!
    я уже всё облазил на странице загрузки,там только zip и debug pack
    которые внутри и снаружи непохожи на инсталлятор
    информация на сайте устарела я считаю

    Собственно и на этом установка встала

  4. не было доступа сетевого пользователя к сайту. “последний штрих” помог. неделю бился, кучу сайтов перерыл. СПАСИБО!!!

  5. Доброго времени суток…. про iis на windows 7 статья хороша. а можешь сделать статью про iis express 7.5+php+mysql+phpmyadmin на Windows XP ?

      1. да XP…. да то что она отмерает, еще лет 10 будет отмерать, вот интересует вариант скрещивания IIS Express 7.5 и ХРюшки.

        1. Жени их. И Бог тебе на встречу. Но скажу только одно, дырявая система ваша ХРюшка. Ребята топайте по пути уменьшения процессов на ваших машинах и если есть возможность решить вопрос на железе, зачем лезть в облачные вычисления? Да еще и серваки на винде ляпать? Очень не стабильно это работает и тормоза с вилами в боку. В быту сейчас убил все свои 4 сервака и построил простую одоранговую с двумя независимыми шарами на самба из под люнесков. Причем взял оба готовыми продуктами. WDTVLiveHub 1Тб и ADSL модем с жестким 1Тб по USB.Ну и на всех локальных открыл общий доступ, сумарно примерно 3Тб. И если необходимо стучаться из глобала, То открыт доступ через Твоньки сервер на WDTV. И свершилось мое счастье. Теперь осталось написать несколько программ для Ip camer и мониторить через терминальный доступ с любых машин в сети. И ни каких бубнов!!!!

          1. и на линуксе бывают танцы с бубном. но iis express был выпущен, вот интересует такая реализация. тес более на нем уже присутствует модуль перенаправления адресов, как и на обычном iis 7, с этим можно не замарачиваться как было на 5.1. Ставится Framework 4.0 на нем запускается iis 7.5 Express. Через Веб-Платформу можно легко поставить php и mysql и mysql-connector но далее дело меня завело в тупик, как это всё связать.

  6. Добрый день! После Включении компонентов Windows раздела Службы IIS и при перезагрузки системы в разделе «Службы и приложения» нет «Диспетчера служб IIS»! В чем может быть проблема?

            1. Конечно апаче лучше, ставьте его.
              IIS не очень удобен.
              Апаче на много гибче и удобнее.
              У меня уже больше года стоит и все замечательно. А на IIS вечно что то не то.

                1. Ефим, для чего такие танцы с бубном? Если для локального пользования, то может проще воспользоваться готовым продуктом: денвер… А для глобала ставь чего по серьезнее.

  7. Появилась хорошая идея, за одно и повысит рейтинг сайта.

    Было бы хорошо, что бы вы на сайте описали как на VPS, VDS или на выделенном сервере под управлением Windows сделать грамотную рассылку писем.

    1. День добрый!

      По поводу рассылок.
      Я думаю, лучший вариант – воспользоваться сторонним сервисом.
      Например mailchimp. До 2000 подписчиков сервис бесплатный. Отчеты по кампаниям, отслеживание кликов.
      Все это реализовывать на локале… лучше воспользоваться готовым решением )

      1. Да это не то.
        Надо по своей базе, специательной )))

  8. Здравствуйте!
    В свое время по Вашей инструкции поставил IIS (win7proх64).
    Все в порядке -работает.
    Как вы оцениваете связку IIS+PHP+MSSQL? MSSQL server 2012 Express поставил- вроде бы работает. Дошел до PHP и задумался может все снести: больно уж много непонятного (на мой дилетантский взгляд) параллельно с сервером ставится и остановиться на комплексе DENWER? Буду признателен за совет.

    1. IIS+PHP+MSSQL – связка очень специфичная. Прежде чем ее использовать, надо потрудиться и ответить на вопрос – а зачем?

      Про DENWER ничего сказать не могу. Никогда его не использовал.

      Мой выбор – Zend Server!

      1. По Вашей инструкции поставил PHP: в IE11 вижу информационную табличку PHP а в Firefox – “Welcome IIS7”?
        Может что-то подскажете?

  9. Здравствуйте. Спасибо за инструкцию – все прошло гладко. Только столкнулся с проблемой… Пробовал сделать связку PHP + MySQL + IIS под Windows 7 на виртуалке по вашей инструкции, также по http://sysadmin.te.ua/windows/nastrojka-iis-php-mysql-windows-7.html этой, но никак не могу решить проблему установки последней версии mysql. Все остальное ставиться нормально… но служба mysql – не стартует. Не подскажите в чем может быть дело?

      1. Если первая установка прошла с ошибками, то надо начисто удалить mysql. Обычно остаются следы. И повторная установка заканчивается с ошибками.

          1. Да Мах можно и из архива, но выше человек писал что дилетант в этом вопросе. У меня к примеру установив из архива и пошли проблемы при работе связки. По этому теперь устанавливаю связку joomla + PHP + MySQL + IIS под Windows 7, веб установщиком от майкрософт.