Pull to refresh

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

PHP *Microsoft SQL Server *IIS *
Sandbox
Tutorial
Спешу поделиться опытом установки и настройки указанных в названии монстров!



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

В данном примере я буду использовать свои преимущества студента. Поэтому ПО от 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».



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



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



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



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



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



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

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



Итак, сервер 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.5\2.0).
Драйверы Microsoft 3.0 для PhP версии 5.4 для SQL Server в IIS (как раз те самые драйвера, которых нет в наличии веб-платформы для версий 5.5.11 и 5.6.0



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

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



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

<?php

$serverName = "SQL\BD"; // Пишем имя компьютера с БД и имя экземпляра. если 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а
Статья из песочницы
Tags:
Hubs:
Total votes 12: ↑7 and ↓5 +2
Views 55K
Comments Comments 22