Windows 2012 R2 + IIS + MS SQL + PHP установка, настройка, подводные камни

в 8:40, , рубрики: iis, MS SQL, php, метки: , ,

Спешу поделиться опытом установки и настройки указанных в названии монстров!

Windows 2012 R2 + IIS + MS SQL + PHP установка, настройка, подводные камни

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

В данном примере я буду использовать свои преимущества студента. Поэтому ПО от Microsoft я буду брать максимально свежее по программе Dreamspark.

Итак, составим задачу.
1. Установить MS SQL Server 2014;
2. Установить роль «Веб-сервер (IIS)» версии 8;
3. Установить PHP 5.4.24;
4. И, конечно же, заставить все это работать в связке на Windows 2012 R2 (установку и подготовку сервера я рассматривать, конечно, не буду).

В наличии имеется домен: test.local

Установка и настройка MS SQL Server 2014
Усложнить данный этап я решил лишь тем, что сервер с БД у нас будет выделенным. Т.к. в большинстве случаев именно тогда возникает необходимость «прикрутить» IIS+PHP, когда база уже чем-то «набита» и более того, находится удаленно.

Имя сервера: sql.test.local

Установка проходит крайне примитивно, нажимая «Далее». У меня были установлены все компоненты экземпляра, за исключением «Репликации SQL Server». Указаны стандартные пути.
Выбран свой, именованный экземпляр «bd».

Windows 2012 R2 + IIS + MS SQL + PHP установка, настройка, подводные камни

Стандартные учетные записи служб.

Windows 2012 R2 + IIS + MS SQL + PHP установка, настройка, подводные камни

Выбран «Смешанный режим». Установлен пароль MSsql2014 для учетной записи «sa», а так-же добавлен текущий пользователь системы. (Нажать кнопку «Добавить текущего пользователя».

Windows 2012 R2 + IIS + MS SQL + PHP установка, настройка, подводные камни

Таким образом. Мы закончили установку MS SQL Server 2014.
Теперь вы можете создать тестовую базу с помощью, идущего в комплекте с установкой, Microsoft SQL Server Management Studio. В данном примере имя БД «test». (Некоторые данные на скрине, такие как Сервер, Соединение, Владелец были умышленно затерты на скрине, т.к. подлинные скрины с тестового полигона были утеряны).

Windows 2012 R2 + IIS + MS SQL + PHP установка, настройка, подводные камни

Теперь мы сразу настроим возможность подключения к текущему экземпляру «извне» (в данном примере с локальной сети).
Для этого нам необходимо открыть оснастку Sql Server Configuration Manager. Перейти в раздел Сетевая конфигурация SQL Server — Протоколы для BD и открыть свойства TCP/IP. Перейти на вкладку IP-адреса и самое важное, что здесь необходимо сделать, это: указать порт 1433 (в данном примере используемый порт по умолчанию) для требуемого IP адреса (в данном примере адрес сервера с MS SQL 192.168.2.27) и установить соединение по этому IP активным. IPv6 и другие адреса — вы можете включить или отключить, по своей необходимости. (Важное отмечено на скриншоте).

Windows 2012 R2 + IIS + MS SQL + PHP установка, настройка, подводные камни

После применения настроек вы получите соответствующее уведомление.
После этого нам необходимо выбрать Службы SQL Server. И перезапустить SQL Server (BD).

Windows 2012 R2 + IIS + MS SQL + PHP установка, настройка, подводные камни

Остался финальный этап. Создать соответствующее правило в Брандмауэре. А именно разрешить входящие соединения по порту 1433. Для более детального ознакомления с этим процессом можно обратиться за оригинальным руководством на msdn.

В моем же случае брандмауэр просто выключен. (Подобную практику ни в коем случае не рекомендую, как руководство к действию).

Windows 2012 R2 + IIS + MS SQL + PHP установка, настройка, подводные камни

Итак, сервер MS SQL, у нас установлен и настроен для внешних подключений.

Далее устанавливаем штатными средствами роль Веб-сервера (IIS).

В компонентах дополнительно ставим галку напротив: функции .NET Framework 3.5, который включает в себя версию .NET 2.0 (он нам потребуется для установки Диспетчера PHP, чуть ниже).

В компонентах самого IIS — достаточно оставить все по умолчанию.

А вот дальше, наверное, самое главное. Мы качаем и устанавливаем Web-платформу от Microsooft.
Этот чудесный инструмент поможет нам решить многие проблемы.

Установка примитивная, поэтому не буду ее детально описывать.

После запуска веб-платформы вам будут доступны для установки очень много компонентов. Веб-платформа автоматически выбирает язык, основываясь на установленном в системе. Поэтому у меня русские названия продуктов. Если у вас Windows установлен с другой локализацией — названия продуктов могут отличаться!

Направляемся в продукты и выбираем то, что нам необходимо:

PHP 5.4.9 (на момент написания статьи к установке была допустима версия PHP 5.6.0, а так-же версия PHP 5.5.11 но к сожалению, как я не танцевал — заставить их работать на php-cgi так и не удалось. Возможной причиной тому — отсутствие драйверов в списке).
Вместе с этим продуктом автоматически поставляются еще 2:
Диспетчер PhP для IIS — крайне полезный и удобный в обращении. (именно для него и требуется компонент .NET Framework 3.52.0).
Драйверы Microsoft 3.0 для PhP версии 5.4 для SQL Server в IIS (как раз те самые драйвера, которых нет в наличии веб-платформы для версий 5.5.11 и 5.6.0

Windows 2012 R2 + IIS + MS SQL + PHP установка, настройка, подводные камни

На этом первичная установка готова. Как оказалось — все легко и без проблем.

Теперь можно открыть диспетчер PHP в IIS и выбрать там функцию «Проверить phpinfo()». Действительно, очень удобно! Тут же вам будут даны рекомендации по оптимальной конфигурации PHP, кроме того, вы можете установить или удалить расширения PHP.

Windows 2012 R2 + IIS + MS SQL + PHP установка, настройка, подводные камни

После просмотра phpinfo, убедившись, что все работает отлично, можно создать тестовый скрипт, который проверит наше подключение к БД.
Спасибо «неизвестному солдату» из песочницы. Именно из его статьи я позаимствовал этот скрипт.

<?php

$serverName = "SQLBD"; // Пишем имя компьютера с БД и имя экземпляра. если instance и port стандартные, то можно не указывать
$connectionInfo = array("UID" => "sa", "PWD" => "MSsql2014", "Database"=>"test"); //В принципе итак все понятно, UID - имя пользователя. PWD - Пароль и наша созданная тестовая база данных
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn )
{
echo "Connection established.n";
}
else
{
echo "Connection could not be established.n";
die( print_r( sqlsrv_errors(), true));
}


/* Close the connection. */
sqlsrv_close( $conn);
?>

Если все прошло успешно и вы ничего не пропустили, то результатом выполнения у вас будет надпись:

Connection established.

В противном случае, вы увидите:

Connection could not be established. И ошибки, полученные в результате обработки.

Надеюсь, ничего не забыл. И буду рад, если эта статья кому-то пригодится!

Использованные источники
Web Platform от Microsoft
Немного MSDNа
Статья из песочницы

Автор: TheShestov

Источник

* - обязательные к заполнению поля