вторник, 3 марта 2009 г.

WIMP – Windows, IIS, MySQL, PHP

Установка php-приложения ISS/Windows 2008 Server


Появившияся в седьмой версии Internet Information Services, модуль FastCGI, позволяет эффективно использовать все возможности препроцессора PHP наплатформе Microsoft Windows. В данной статье мы попробуем установить необходимые компоненты и развернуть php приложение на базе ISS 7/ Windows 2008 Server.

PHP всегда работал на Windows.
Проблема в том, что никогда достаточно продуктивно”
Энди Гатманс (Andi Gutmans),
со-основатель и технический директор компании Zend


Несмотря на то, что язык программирования php, пришёл из мира Unix/Linux, на платформе Microsoft Windows он утвердился почти со дня своего появления. Сначала такое сочетание использовалось исключительно как площадка для разработки, затем стало активно использоваться для внутрикорпоративных интранет сайтов. Возможность установки препроцессора php на Internet Information Server/Services, была уже начиная с третьей версии последнего, и она не осталась невостребованной.
Однако полноценный интерет-сайт на связке ISS/PHP был скорее экзотикой. Причина проста - php на IIS устанавливался в качестве ISAPI-модуля или простого бинарного cgi обработчика. Первый вариант урезал некоторые возможности интерпретатора, а второй существенно снижал производительность.
С выходом ISS 7 положение может радикально измениться. Новый Модуль — FastCGI вполне способен довести производительность до приемлемого «промышленного» уровня. Это касается, разумеется, не только php, FastCGI позволяет работать с любым интерпретатором, как то Perl, Python, Ruby, Но именно разработчики ядра PHP из компании Zend Technologies Ltd тесно сотрудничали с программистами Microsoft в процессе создания последними нового модуля. Была даже выпущена специальная сборка php, но об этом чуть позже.




Сейчас мы попытаемся установить препроцессор php на Internet Information Services работающий на платформе Windows 2008.

Установка модуля FastCGI



Рис 1
ISS найден и работает

Прежде всего, запустим IIS и убедимся, что он работает. Для этого раскрываем Start->Administrator Tools->Server Manager. Раскроется окно консоли MMS Server Manager. В левой его части, раскроем ветку (обвязку) Roles и выберем там Web Server(IIS) (рис 1). (Ели там его там не, значит IIS он не добавлен в роли вашего сервера, и следует воспользоваться командой Add Roles) Отсюда, из графического интерфейса можно запускать, останавливать, перезапускать сервер, управлять связанными с ним системными службами и ролями.



Рис 2
Стартовая страница ISS


Работоспособность IIS можно проверить, раскрыв браузер и набрав адрес http://localhost. Если всё в порядке, мы увидим стартовую страничку ISS (рис 2). На той же панели, смотрим раздел Role Services и ищем там сервис CGI (который подразумевает возможность использования как CGI, так и FastCGI модулей). Если таковой не установлен, воспользуемся командой Add Role Services, и выберем CGI (Web Server -> Application Development -> CGI) из предложенного списка ролей (рис 3).



Рис 3
Добавляем роль CGI/FastCGI

Установка PHP

Теперь приступим к установке PHP. Скачиваем последнею версию препроцессора для платформы Windows. В данном случае это php 5.2.8, причём желательно выбрать PHP
5.2.8 Non-thread-safe
, так как контроль безопасности потоков совершенно не нужен при однопоточном выполнении скриптов CGI модулем. Эта версия была специально разработана для функционирования под управлением FastCGI IIS и разработчики компании Zend серьезно поработали над оптимизацией производительности PHP под Windows.



Рис 4
Выбираем веб-сервер для установки php

Если вы выбрали installer, то всё, что нужно после скачивания это запустить инсталлятор, уточнить месторасположение PHP (я выбрал C:\PHP), уточнить сервер (обратите внимание на варианты на рис 4. выбираем, разумеется IIS FastCGI) и выбрать список желаемых расширений.
После завершения установки, проведём небольшую проверку на работоспособность интерпретатора. Для этого создадим в папке C:\PHP
файл start.php со следующим содержимым:

<?
echo “test php 5.2”;
?>

Затем, открыв консоль, выполним команду:

C:\PHP>php start.php
test php 5.2
C:\PHP>

Как видите, всё работает.

Теперь выполним некоторые настройки интерпретатора php, влияющие на его работу в составе FastCGI модуля (все они расположены в файле php.ini).
Директива cgi.fix_pathinfo обеспечивает поддержку правильных переменных PATH_INFO/PATH_TRANSLATED для CGI. По умолчанию
отключена, мы включаем (устанавливаем значение равным 1).
Директива cgi.force_redirect необходима для обеспечения безопасности во время работы PHP в
качестве CGI под большинством веб-серверов и по умолчанию включена. В нашем случае её не только можно, но и нужно выключить.
Директива cgi.redirect_status_env – выключаем, во избежание путаницы с переменными окружения.
Директива fastcgi.impersonate - поддерживает под ISS возможность имперсонации прав безопасности вызывающего клиента. Включаем.
Остальные директивы, такие как error_reporting, open_base_dir и т д., устанавливаем как обычно, как это соответствует нашим задачам.

Настройка Internet Information Services

Теперь снова откроем Server Manager и перейдём в Internet Information Services (IIS) Manager (Server Manager->Roles->Web Server-.> Internet Information Services (IIS) Manager). Здесь мы выберем сервер, для которого необходимо добавить поддержку php (у меня это mysite, при необходимости можно там же создать свой узел.). Далее выбираем пункт Handler Mappings
(рис 5.), а там команду Add Module Mapping.


Рис 5
Панель IIS Manager

Заполняем получившеюся форму следующим образом(рис 6):

Request path: *.php
Module: FastCgiModule
Executable: C:\PHP\php-cgi.exe
Name: PHP




Рис 6
Добавляем обработчик

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

Теперь, в корне нашего сайта (если мы использовали каталог по умолчанию, то это будет C:\inetpub\wwwroot) создадим файл test.php следующего содержания:
php
phpinfo();
?>
Запустим его, набрав в браузере адрес http://localhost/test.php. Если всё было сделано правильно, результат должен быть аналогичным страничке показанной на рис 7.


Рис 7
Php работает!
Вот и всё, php установлен и можно размещать на IIS необходимые нам веб-приложения. Правда
эти приложения наверняка используют какую-либо СУБД, и весьма вероятно, что
это MySQL. Конечно, в идеале хорошо бы их заставить работать с MSSQL сервером, но здесь мы сталкиваемся с проблемами, причём стоимость СУБД от Microsoft не является главной из них. Дело в том, что диалект SQL, используемый MySQL довольно сильно отличается от TSQL
и скрипты работающие с СУБД придется существенно модифицировать. Это отдельная большая тема, а пока просто установим на Windows 2008 Server СУБД MySQL.


Установка MySQL



Рис 8
Устанавливаем MySQL
Тут вообще не должно возникнуть никаких трудностей. Качаем дистрибутив MySQL со страницы загрузки, http://dev.mysql.com/downloads/, и запускаем инсталлятор (рис8). После нескольких уточняющих вопросов СУБД будет установлена, и поступит предложение о редактировании начальной конфигурации (рис 9). Согласимся.


Рис 9
Установка завершена, приступаем к конфигурации.

На первом шаге выберем пункт Detailed Configuration, затем последует вопрос о типе сервера (рис 10), выбираем Server Machine (для разработки, в общем то больше подходит вариант Developer Machine, с минимальным использованием памяти, но в любом случае эти настройки можно исправить и после установки).


Рис 10 
Выбираем тип сервера MySQL

На следующем этапе выберем тип использования СУБД (Multifunctional Database), затем уточняем диск и место для хранения файлов данных таблиц InnoDB(если конечно не устраивает размещение по умолчанию, меня – вполне).


Рис 11
Устанавливаем параметры соединений

Далее (рис 11), задаём примерное число одновременно обслуживаемых соединений и уточняем способы их обработки, потом сетевые опции и порт соединения, и наконец кодировку по умолчанию (везде, кроме кодировки оставляем предлагаемые значения, кодировку, если нет других соображений, ставим utf-8).
Следующим этапом уточняем способ запуска MySQL (еcли нет других, весомых соображений, выбираем Install As Windows Service), задаём пароль пользователя root.(рис12). После этого применяем настройки (рис 13).


Рис 12 
Завершаем конфигурацию MySQL


Рис 13
Параметры установлены

Для проверки раскрываем запущенные службы (Start->Administrative Tools->Services) и находим MySQL в списке служб (должна запускаться автоматически).
Теперь займёмся установкой одного из самых популярных php приложений, Системы управления Контентом (CMS – Content-Management-System) Joomla!. Сначала скачаем последний стабильный релиз системы со страницы загрузки (http://www.joomla.org/download.html). На сегодняшний момент это версия 1.5.9.
В панели IIS Manager, командой Add Site (доступной в контекстном меню) создадим новый сайт myjoomla (рис 14), задав его физическое расположение как C:\inetpub\wwwroot\myjoomla, распакуем туда скачанный архив.


Рис 14
Добавляем новый сайт

Теперь, в панели IIS Manager, раскроем сайт myjoomla выберем пункт Default Document и добавим в раскрывшийся список index.php. Теперь в браузере набираем адрес http://localhost/myjoomla/installation/index.php и попадаем в программу-инсталляторJoomla (рис 15). После выбора языка, будет произведена детальная проверка системы, результаты которой видна на рис 16. Как мы видим, препятствий к установке CMS нет.

 
Рис 15
Joomla – начало установки



Рис 16
Всё, в порядке. Можно начинать.

Далее ознакомимся с лицензионным соглашением (GPL) и установим параметры базы данных (рис 17). Один нюанс – до этого, в MySQL должен быть создан пользователь, от которого joomla
будет общаться с БД (в моём случае это Geol), обладающий соответствующими правами. Можно конечно поставить параметры пользователя root, но сами понимаете, это не лучшее с точки
зрения безопасности решение.


Рис 17
Устанавливаем параметры соединения с базой данных

Следующим этапом установки станет конфигурация ftp акаунта (опускаем), затем будет предложено ввести некоторые параметры будущего сайта (рис 18). Если вы никогда раньше не имели дела с движком Joomla, настоятельно рекомендую установить флажок в пункте «Установить демо-данные» и установить их, так будет значительно легче разобраться. Остальные настройки не должны вызвать вопросов.


Рис 18
Установки сайта

Теперь всё готово к установке. Нажимаем «Далее» и… Вот тут сервер порадовал меня 500-й ошибкой. Вообще это был единственный сбой, и довольно легко устранимый. После несложного расследования было установлено, что файлы и папки дистрибутива joomla записаны у меня на сервере с атрибутом «read only». Что делать – надо привыкать к законам Windows. После исправления и повторной процедуры инсталляции всё сработало (рис 19).


Рис 19
Установка Joomla завершена.

Теперь удаляем или переименовываем папку C:\inetpub\wwwroot\myjoomla\myjoomla\instalation и заходим на только что созданный портал и по адресу адрес http://localhost/myjoomla/ и наслаждаемся полученным результатом (рис 20).


Рис 20
Наш портал работает!

не собираюсь тут излагать основы работы с CMS joomla, в конце концов, на эту тему написана не одна книга (на всякий случай, администрировать
портал вы можете, зайдя по адресу http://localhost/myjoomla/administrator/и постаравшись вспомнить логин и пароль администратора, созданный вами при установке), да и цель этой небольшой статьи была не эта. Мне просто хотелось показать допустимость и жизнеспособность php решений средней тяжести на платформе Windows 2008 Server/ISS, и по моему это удалось. За кадром осталась работа php с MSSQL Server, такой интересный инструмент, как Web Platform Installer, но я надеюсь исправить эту несправедливость в ближайшее время.
Подписи к картинкам:











1 комментарий:

  1. Здравствуйте!
    а как в Mysql срздать пользователя с необходимыми правами?
    подскажите пожалуйста.
    спасибо

    ОтветитьУдалить