Рубрики
Веб-мастеринг Софт

Настройка веб-сервера 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 можно прописать любую другую кодировку.
Кодировка сайта
Кодировка сайта

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

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

вопрос такой: как полностью удалить IIS? Я поширил в инете, отключал компоненты, перезагружал комп и снова включал и перезагружал — не помогает.  порыл еще, узнал, что кое-какие файлы хранятся на компьютере в следующих директориях:C:\Windows\System32\inetsrv и в C:\Windows\Help\IIshelp.
первую директорию не удалить никак — мешает некий trusted installer, редактирование параметров безопасности этой директории тоже вызывает осложнения, на это нет прав доступа (у администратора!). Вторая директория у меня отсутствует (может, конечно она скрыта, я не уверен, не проверял пока, парюсь пока с первой директорией).
А нужно мне это все, чтобы исправить ошибку при попытке запуска IIs примерно такого содержания: «w3svc не удалось запустить» .
Да, переустановку всей операционной системы, пожалуйста, не предлагайте.

Тут куча проблем, которые имеют такие симптомы. Скорее всего сам IIS ни при чем… так что удалять папки в ручную не советую. Посмотри логи системы, может выудишь более подробную информацию об ошибке.

Да, система какой версии?

Случаем, Скайп не включен, когда ты пытаешься iis запустить?

Система — Windows 7.
скайп настроил так, что он использует только 13354 порт, 80 и 443 он не юзает, кучу других программ настроил также.
вообще, проблем не было, до тех пор, пока я по глупости не попытался удалить директорию inetpub, чтобы не мешалась (для файлов создал отдельный сайт в IIS, физический путь к которому C:\www).

Попробуй открыть файл
%windir%\system32\inetsrv\config\applicationhost.config
найди в нем все старые пути типа
%SystemDrive%\inetpub\wwwroot
и замени их на новые

боюсь,меня это не спасет, тк, тех файлов, которые прописаны в %windir%\system32\inetsrv\config\applicationhost.config в C:\www не существует. мне их не стоило удалять, знаю, теерь такую ошибку больше не совершу, но IIS, похоже надо переустановить.
Посмотрел в логах, есть следущие ошибки: 2297,2307, связанные с IIs w3svc.

Попробуй так:

Отключи все компоненты IIS.

Затем отключи Контроль учетных записей. Панель управления \ Учетные записи пользователей и семейная безопасность\Учетные записи пользователей\Изменение параметров контроля учетных записей -> ползунок вниз. Перезагружаемся.

Теперь удали папку %windir%\system32\inetsrv\config.

Думаю, этого будет достаточно.

%windir%\system32\inetsrv\configapplicationHost.config и так там нет. Там только директория schema

%windir%\system32\inetsrv\configapplicationHost.config и так там нет. Там только директория schema

Это, я думаю, хорошо. Теперь все заново заинсталируй. Intepub создается автоматом? Если нет, то создай вручную + все папки, которые прописаны в applicationhost.config

пипец какой-то, создал вручную эти директории, теперь установка компонентов IIS вообще зависает. Мне надо или все это снести к чертовой матери, затем снова установив, или скачать где-нибудь бекап директории inetpub. Что думаете по последней идее?

Бэкап? Идея правильная!
Если у тебя работают теневые копии, то нет ничего проще.
Посмотри свойства системного диска, закладка «Предыдущие версии». Выбери дату до того как стер Inetpub, нажми Открыть. Вытащи оттуда Inetpub, скопируй на прежнее место.
Если это не поможет, то еще советую восстановить саму систему. На эту же дату должна быть контрольная точка восстановления системы.

бекап inetpub Скопировал, но установка компонентов не идет. может, оттого, что я еще по совету кого-то в сети отключал службу активации Windows?

не могу. Переустаовить IIs, как я понимаю, можно только переустановив WIndows?

>Переустаовить IIs, как я понимаю, можно только переустановив WIndows?

Ну что тут тебе сказать? ) Если другие способы не помогают, то да… переустановка

Кстати, я не совсем понял что ты там мутил с Trusted installer. Это учетная запись, которая позволяет установщику виндоуз получать доступ к системным папкам и файлам. Если ты изменил какие-то значения по умолчанию… может поэтому переустановка не помогает. Вот ты писал, что скопировал inetpub и переустановка забастовала. Скорее всего причина в том, что после копирования у этой папки отсутсвовали права для доступа Trusted installer.

короче, понял, что мне нужно. У меня не включается .Net Environment, и слдовательно, все, что от него зависит. От чего зависит сам Net Environment?

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

Спасибо. Но с каким расширением нужно сохранять документ .php просто у меня сохраняет .php.txt.
Спасибо за ответ

Если у тебя получается .php.txt, можно:
1. Зайти в Панель управления -> Оформление и персонализация -> Параметры папок -> Закладка Вид -> Отключить опцию «Скрывать расширения для зарегистрированных типов файлов». Тогда ты сможешь изменить расширение вручную.
2. Открыть файл в Блокноте. Затем Файл -> Сохранить как. Тип файла указать как Все файлы. Имя файла: index.php. Сохраняешь. Файл будет без расширения .txt

Все установил. Работает. Только почему-то работает на index.php, а на других страницах php не пашет.

Ну сделал стартовой не index.htm, a index.php. На стартовой php работает, а вот в подкаталогах в *.php не работает.

Хорошо. А что пишет? Какие ошибки?
Или просто пустая страница?
Если посмотреть исходный код страницы, увидите ваш php-код?

Сори. Открывал через windows.open — повис. Открыл через Файл-открыть: код php виден.

>Сори. Открывал через windows.open – повис. Открыл через Файл-открыть: код php виден.

Не, смотреть исходный код надо, когда в браузере открываешь страницу. Правый клик по странице -> Исходный код

Дак правильно. Так и сделал. Просто у меня открытие данных страниц с html-страницы осуществляется через window.open (’email/email.php’…. При таком открытии (нажатии ссылки) открывается страница, но содержимого нет, курсор в режиме задумчивости и контекстное меню не открывает.
Если открыть в браузере через Файл->Открыть-> и выбрать файл email.php, то содержание страницы появится, но вот php работать не будет.

Еще добавлю, что на сервере провайдера все работает, а у себя веб-сервер настрить не могу

Нужно открыть свойства папки, в которой распологаются файлы веб-сайта (по умолчанию wwwroot), закладка Безопасность. В списке находим группу IIS_IUSRS и даем ей права полного доступа.

У меня такая проблема: скачал по ссылке дистрибутив php 5.2, но в нем отсутствуют функции для работы с MySQL. Папка ext отсутствует, в php.ini все отключено, не знаю, что делать. Заранее благодарен за помощь.

Думаю, что во время установки вы просто не выбрали расширения MySQL (а может и отключили их случайно). Чтобы это исправить нужно зайти в Панель управления -> Установка и удаление программ. Выбрать в списке PHP и нажать кнопку Изменить. Запустится мастер установки PHP. На первом экране выберите Change, далее IISFastCGI, на следующем экране вы увидите список установленных компонент. Откройте ветку Extensions, найдите MySQL, если кнопка MySQL с красным крестом, выберите установку на локальный диск, затем жмите Next и в конце концов Change. Модули должны будут установиться.

Если же все равно не получится (что маловероятно), скачайте zip-архив php и скопируйте нужные расширения (php_mysql, php_mysqli) оттуда вручную.

Спс,  попробую потом и отпишусь.

Вообще, когда я устанавливал php,  у меня по умолчанию установщик устанавливать никаких расширений не хотел, везде стоял крестик, проверю, огромное спасибо за помощь!

Все сделал, как написано. Но после того как выполняю «Теперь открываем сайт в браузере (http://localhost)» в браузере выходит пустая страница. Что делать?

+++ Да, кстати, только что открыл 80-й порт. Все равно пустой экран.

Какой именно? Обычные html-страницы? Да.
А когда вбиваю http://localhost/ — отображается просто пустая страница (в коде нет ничего, кроме ). Что может быть?

Так, а в index.php какой код?

Попробуй в php.ini включить отображение всех ошибок:
error_reporting = E_ALL
может что-от всплывет…

В php.ini тот код, который выше указан (если его вставлять здесь в сообщение, он почему-то не отображается).
Проверил в IE8 — вообще-то в коде страницы ?php phpinfo()? (с по бокам) присутствует. Что это может быть тогда?
Про error_reporting — сделал, не выводит ничего.

Ага, если в коде страницы <?php phpinfo() ?> присутствует, значит файл не обрабатывается парсером php.
Если открыть http://localhost/index.php будет пустая страница или ошибка, что файл не найден?
Если все же выйдет пустая страница, значит php установился некорректно. В настройках IIS в разделе «Сопоставление обработчиков» присутствует запись PHP_via_FastCGI — *.php? И еще в настройках присутствует раздел «Параметры FastCGI» (в нем должен быть указан путь к файлу php-cgi.exe)? В компонентах IIS не забыли установить поддержку CGI?

1. «Если открыть http://localhost/index.php будет пустая страница или ошибка, что файл не найден?»
— пустая страница (в коде как у вас указано выше присутствует).

2.»В настройках IIS в разделе «Сопоставление обработчиков» присутствует запись PHP_via_FastCGI – *.php?»
—- Да, есть. Внутри указан путь к нужному файлу C:\_PHP\php-cgi.exe
!!!!****!!!! В том же окне «сопоставление модулей» CGI.exe «отключен» — так должно быть?

3. «И еще в настройках присутствует раздел «Параметры FastCGI» (в нем должен быть указан путь к файлу php-cgi.exe)?»
—- да, все есть, указан тот же путь (см. выше).

4. В компонентах IIS не забыли установить поддержку CGI?»
—- не забыл, отмечена флажком (вообще, все настройки там сделаны, как написано у вас в самом начале).

Дааа… странно. Судя по последнему вашему комментарию настройки правильные, но php почему-то не работает.

Попробуйте в php.ini включить опцию display_startup_errors = On и перезапустить службу IIS. Может покажет какие-то ошибки.

Какую версию php устанавливаете? Как последнее средство, попробуйте удалить текущую версию и установить каку-нибудь другую (бывают кривые дистрибутивы). К примеру вместо 5.3.х поставить 5.2.х.

Maxx, вот это так и должно быть:
2.»В настройках IIS в разделе «Сопоставление обработчиков» в окне «сопоставление модулей» CGI.exe «отключен»?

Да, отличная инструкция по ручной установке. Сравнил с тем, что делает автоматический установщик php, на 99% то же самое.
Отличия от ручной установки:
Вместо short_open_tag = On установщик оставляет Off и это правильно, тег <? уже давно подмял под себя язык xml.
Установщик не задействует опцию cgi.fix_pathinfo = 1, что уже не так хорошо, лучше все же ее включить.

Но самое главное отличие, что для 64-битной версии Windows, в разделе «Пулы приложений» для DefaultAppPool необходимо задействовать поддержку выполнения 32-битных приложений (кстати, если созданы дополнительные пулы для существующих сайтов, то в них необходимо проделать ту же операцию). Вот этого я не знал! У тебя, кстати, виндоуз случайно не 64-битный? Если да, то это все объясняет.

Огромное спасибо автору за отличную статью. Все работает. Даже без всяких перезагрузок. Избавился от необходимости использовать дополнительный софт.

Приветствую.
Тоже есть вопрос. Поставил IIS в связке с ASP.NET, но суть не в этом. Надо чтобы другие люди стучались к сайту и пользовались им соответственно по айпишнику. АйПи статический всё как положено. Сайт в пределе локалхоста работает на ура, только вот по ай-пи ну некак не хочет. Может есть ещё какие то советы, что это может быть. В брэндмауре правило служба интернета включил.
Заранее благодарю.

Max Bond: с тобою можно связаться по аське(9757671) или тому же скайпу(igriik1)?у меня куча проблем

«Теперь необходимо провести тестирование PHP. В корневую папку веб-сайта (c:\inetpub\wwwroot) необходимо поместить файл index.php со следующим содержанием:» сделал как написано,вместе с ,запускаю локалхост,но вылезает всё равно страница IIS7,а не РНР страничка

Если index.php создавал в блокноте, то при сохранении могло добавиться расширение .txt. Проверь, может в этом дело.
Еще можно удалить файл iisstart.html из корневой папки. Что тогда будет — «Ошибка HTTP 403.14 — Forbidden»?

про расширение,я его изменил поставив вручную РНР,2 вариант да,вылезло

Error Summary
HTTP Error 403.14 — Forbidden
The Web server is configured to not list the contents of this directory.

Значит где-то опечтака, т.к. эта ошибка означает, что сервер не может найти index.php

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

После этого вновь открой сайт. Увидишь список файлов. Нажми на index.php

сделал, вылезло чистая страница с надписью после знака вопроса сам добавил пробелы,а то не видно

проблема решилась,ручная смена расширения не помогла,по этому и ошибка вылезала,спасибо всё получилось

на последней стадии «Нажимаем OK. На этом базовая настройка завершена. Нужно проверить работоспособность только что созданного сайта. Открываем браузер и в адресной строке вводим: http://localhost. Если все работает правильно, вы увидите похожую страницу:»,я запускаю сайт в опциях и пишут «Процесс не может получить доступ к файлу, так как он используется другим процессом. (Исключение из HRESULT: 0x80070020)»,как исправить?и что за процесс вообще перехватывает ?

Эта ошибка говорит о том, что 80-й порт уже занят другим приложением.

Очень часто такая ошибка возникает, если установлен другой веб-сервер (например Apache) .
А еще из-за Skype. Если он установлен, отключите автозагрузку и полностью закройте его. Потом повторите запуск сайта.

Также можно изменить порт веб-сайта в настройках привязки, например на 8080. Это тоже должно решить проблему. Обращаться к сайту придется так: http://localhost:8080

Чтобы проверить какой процесс занимает 80-й порт, в командной строке введи: netstat -ano -p tcp
В колонке Локальный адрес ищи 0.0.0.0:80, когда найдешь, смотри какой PID соответствует этой строке. Далее в Диспетчере задач открой вкладку Процессы. Отметь опцию «Отображать процессы всех пользователей». В меню Вид -> «Выбрать столбцы» отметь «ИД проесса (PID)». Теперь с помощью PID можно выяснить какой процесс занимает порт.

Добавить комментарий

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


Срок проверки reCAPTCHA истек. Перезагрузите страницу.