Установка Moodle на Windows Server 2012 R2 и IIS

Дано: Windows Server 2012 R2 (x64) с установленным MS SQL Server
Задача: установить на него полноценный Moodle (PHP) с базой на MS SQL Server (или другой).

Речь идет именно об установке полноценного дистрибутива, а не урезанной версии для разработки.
Самое главное - подготовить сервер для работы PHP приложений, которым собственно и является Moodle. Для этого на сервере должна быть установлена роль веб-сервера (IIS), а также установлено PHP. Предполагается, что система управления базами данных уже имеется в системе или на другом сервере (MS SQL Server, MySQL или другая. В этой статье я буду предполагать использование MSSQL).

Итак, по шагам.

1. Установка роли "Веб-сервер" (IIS 8.5):


Открываем интерфейс добавления ролей в системе и в мастере указываем роль Web Server (IIS):


Далее выбираем компоненты (features) - .Net Framework:


Продолжение: (если нужна аутентификация при помощи AD (Active Directory, LDAP) выбираем соответствующие компоненты) - AD DS Tools другие, как показано на рисунке:


Продолжение:


Далее в роли Веб-сервера (IIS) выбираем также нужные компоненты:


Особенно обращаем внимание на то, что выбран CGI (он необходим для работы с PHP).


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

Чтобы проверить корректность установки IIS, в браузере заходим на localhost и видим приветственное окно IIS:


2. Теперь необходимо установить PHP.

Самый простой путь - сделать это через Web Platform Installer. В IIS - переходим по ссылке Get New Web Platform Installer. После его установки ищем PHP и PHP Manager для IIS, устанавливаем их. Рекомендую именно этот способ.

Однако можно сделать такую установку вручную. Для этого делаем следующее:

На странице Downloads сайта windows.php.net скачиваем одну из последних версий PHP.
Для работы IIS с PHP как CGI-приложением нужно брать версию файла инсталлятора вида x86 Non Thread Safe.


Распаковываем в какую-либо папку (это не временная папка, запуск PHP будет из нее), например, C:\Program Files (x86)\PHP\v5.6

Далее необходимо установить PHP Manager для IIS. Скачиваем его с сайта phpmanager.codeplex.com и устанавливаем.

Далее после установки PHP и PHP Manager (или одновременно с ними) также через Web Platform Installer устанавливаем:
- Microsoft Driver For PHP for SQL Server in IIS (если нужна будет данная СУБД)
- Windows Cache Extension for PHP (расширение для ускорения работы PHP скриптов)



После установки вышеуказанных компонентов, переходим в IIS и открываем PHP Manager:


Если есть ссылка View recommendations, то переходим по ней.

Соглашаемся с предлагаемыми рекомендациями (Default document, monitorChangesTo):


После этого переходим по ссылке "enable or disable extensions" ("включение или выключение расширений")


Включаем (Enable) следующие расширения php_intl.dllphp_ldap.dll, если требуется аутентификация через LDAP).

Теперь попробуем протестировать работу PHP на нашем сервере: для этого создайте в IIS сайт (например, testphp, см. скрин из IIS выше). В папке сайта создадим файл index.php со следующим содержимым:

<?php
   phpinfo(INFO_GENERAL);
?>

Теперь можно запускать тестовый сайт. Если всё настроено правильно, будет отображена версия PHP и другая информация.

Возможна ошибка:
HTTP Error 500.0 - Internal Server Error
C:\Program Files (x86)\PHP\v5.6\php-cgi.exe - The FastCGI process exited unexpectedly


Причины ошибки могут быть разные. Как вариант, если запуск осуществляется на 64 битной системе, то необходимо установить Visual C++ Redistributable (можно скачать с сайта Microsoft):


Тестовый файл должен выдать информацию о PHP:


3. Продолжаем настраивать PHP.

В свойствах FastCGI (FastCGI Settings) у нужной версии приложения php-cgi.exe меняем параметр Activity TimeOut на 6000 или больше (это время, необходимое на выполнение скрипта, которое рекомендуется увеличить, т.к. при операциях в Moodle, требующих длительных обработок, может случиться таймаут):


Далее открываем файл php.ini (например, через PHP Manager) и раскомментируем строки:
cgi.force_redirect = 0
cgi.fix_pathinfo=1
fastcgi.impersonate = 1

Если планируется синхронизация пользователей с каталогами Active Directory (AD), то дополнительно изменяем параметр memory_limit: вместо 128, указываем число побольше, например:
memory_limit = 768M
Если этого не сделать, то при количестве пользователей более 7 тысяч может перестать работать синхронизация (с LDAP).

4. Конфигурируем MIME Types в IIS

В IIS добавляем MIME Type со следующими параметрами:

File name extension: .php
MIME type: text/html


5. Локальная настройка домена

Т.к. Moodle рекомендуется запускать и настраивать сразу под нужный домен, то пропишем в специальном файле hosts необходимый домен и привяжем его к IP, чтобы иметь возможность запускать Moodle-проект локально, но под правильным доменом.

Напоминаю, что файл hosts находится по следующему пути:
C:\Windows\System32\drivers\etc\hosts

Открываем его и под всеми комментариями добавляем: IP-адрес + пробел + имя нужного домена
Примерное содержимое файла:


6. Скачивание и установка дистрибутива Moodle.

Заходим на официальный сайт системы и скачиваем архив последней версии Moodle (или той, которая Вам необходима). Ни в коем случае не скачивайте специальный дистрибутив для Windows (он только для локальной установки и разработки), ищем именно архив проекта Moodle:


Распаковываем всё содержимое скаченного архива в конечную папку (которую затем будет привязывать к IIS), например, в каталоге C:\inetpub\php\moodle (можно удалить лишние информационные файлы, вроде readme).
Также, для хранения данных системы Moodle необходимо создать дополнительную папку. Она должна быть не доступна из веб и располагаться вне основной директории (например, C:\inetpub\php\moodledata)

Для папки moodle задаем следующие права:
Пользователь IUSR - права на чтение по-умолчанию
Пользователь IIS_IUSRS - права на чтение по-умолчанию


Для папки moodledata задаем следующие права:
Пользователь IUSR - modify
Пользователь IIS_IUSRS - modify
Пользователь CronUser - modify (можно задать позже, см. статью Настройка запуска Cron Moodle в Windows Server 2012R2)


Если в дальнейшем нужно иметь возможность устанавливать, например, темы из веб-интерфейса, то необходимо дать право записи (modify) на папку тем (также можно сделать это для папок плагинов): moodle\theme, также для папки типов вопросов (чтобы устанавливать дополнительные типы): moodle\question\type

Далее создадим собственный конфигурационный файл (config.php): создайте копию файла config-dist.php (в корне папки Moodle) и переименуйте его в config.php.

Далее настройка Moodle на работу с базами на Microsoft SQL Server 2014
По вышеуказанной статье следуйте пунктам 1-3 (установка базы и подготовка сервера) и пункт 5 (задание правильных настроек подключения к базе в файле конфигурации Moodle). Там же будет указано какие параметры нужно внести в конфигурационный файл.

Также в конфигурационном файле config.php укажите настройки домена и путь к папке с данными:

$CFG->wwwroot   = 'http://mymoodlelms.ru';
Указываем здесь URL адрес для доступа к Moodle (указываем либо домен, либо IP адрес)

$CFG->dataroot  = 'C:\\inetpub\\php\\moodledata';
Указываем здесь расположение папки данных Moodle.

7. Создание сайта в IIS

Создаем в IIS сайт, указываем расположение папки Moodle. Настраиваем его на тот домен, который указали в конфигурационном файле Moodle:


8. Продолжение установки Moodle через браузер

Теперь переходим в систему Moodle в браузере по ранее заданному домену. Автоматически будет предложена установка.
Соглашайтесь со всеми пунктами, придумайте и введите данные для администратора, заполните все необходимые формы (название сайта и т.п.)

На этом установка практически завершена.

Для корректной работы системы Moodle также необходимо настроить периодический запуск специального сервиса, расположенного в файле - cron.php (читайте статью Настройка запуска Cron Moodle в Windows Server 2012R2).

9. Настройка корректных путей

Далее для корректной работы путей системы создадим правило переадресации.

Для этого на уровне сайта в IIS переходим в настройки IIS-модуля URL Rewrite 2.0 (он должен быть предварительно установлен) и создадим следующее правило:

• Matches the Pattern - Regular Expressions - ^([^\?]+?\.php)(\/.+)$
• Action - Rewrite - {R:1}\?file={R:2}
• Append query string - enabled
• Stop processing of subsequent rules - enabled


После создания этого правила, перейдите в настройки Moodle (Администрирование - Сервер - HTTP) и включите параметр «slash arguments»:


Без данной настройки некоторые темы будут работать некорректно, а также будут появляться трудно определяемые ошибки.

Также, если планируется синхронизация с AD, может потребоваться настройка LDAP (читайте в будущих статьях).

Итоги
Коротко о железе, на котором проходила подобная установка: Intel Xeon 2.13GHz, 16GB RAM, под PHP-папки использовался SSD диск. За полтора года боевого использования система Moodle в подобном исполнении показала себя достаточно хорошо.

См. также Установка СДО Moodle на Linux (CentOS 7)
Другие инструкции по Moodle

(с) Ella S.
Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.

Комментариев нет :

Отправить комментарий