Установка Moodle на Windows Server 2016 и IIS, LDAP-аутентификация

Установка роли Веб-сервер (IIS 10)

Запускаем диспетчер серверов, выбираем Добавить роли и компоненты.

Выбираем роль Веб-сервер (IIS)

Выбираем компоненты:

В настройках службы ролей IIS выбираем:

Вставляем в привод установочный диск Windows Server 2016, указываем альтернативный исходный путь:

Нажимаем Установить. Завершения установки можно не ждать. После завершения установки в адресной строке браузера набираем localhost и видим веб-страницу IIS.

Установка PHP

Скачиваем PHP 7 non Thread Safe (ссылка).

Скачиваем и устанавливаем соответствующую версию распространяемого пакета VC++. Для php7 это VC++15.

Распаковываем php в папку c:\PHP\php7\

Скачиваем Microsoft Drivers for PHP for SQL Server 4.1.0 и распаковываем файл php_sqlsrv_7_nts.dll в папку c:\PHP\php7\ext\

Скачиваем wincache for PHP 7 и распаковываем файл php_wincache.dll в папку c:\PHP\php7\ext\

Файл php.ini-production сохраняем под именем php.ini. Редактируем файл php.ini

error_log = "c:\PHP\php7\logs\php_errors.log" ; место хранения логов об ошибках
post_max_size = 500M
extension_dir = "c:\PHP\php7\ext"; расположение расширений
cgi.force_redirect = 0
cgi.fix_pathinfo = 1
fastcgi.impersonate = 1
max_execution_time = 300
upload_max_filesize = 500M
date.timezone = "Asia/Yekaterinburg"
memory_limit = 768M

Настройка opcache:

opcache.memory_consumption=128
opcache.max_accelerated_files=8000
opcache.revalidate_freq=60
opcache.use_cwd=1
opcache.validate_timestamps=1
opcache.save_comments=1
opcache.enable_file_override=0

Раскомментировать строки:

extension=php_fileinfo.dll
extension=php_imap
extension=php_intl.dll
extension=php_ldap

Закомментировать строки:

extension=php_mysqli.dll

Добавить строки:

extension=php_sqlsrv_7_nts.dll
extension=php_wincache.dll

Устанавливаем PHP Manager for IIS 1.4. После установки запускаем Диспетчер служб IIS, открываем Администратор PHP.

Нажимаем Зарегистрировать новую версию PHP.

Указываем путь до файла php-cgi.exe.

Проверяем в Администраторе PHP, нет ли неоптимальных настроек. Если есть — следуем указаниям.

В папке c:\inetpub\wwwroot\ создаем файл index.php с содержимым:

<?php
phpinfo();
?>

В браузере открываем URL: http://localhost/index.php

Проверяем, что подключились нужные библиотеки:

Настроим типы MIME.

Добавим новое расширение для php.

Установка PHP завершена.

Скачиваем и устанавливаем Moodle

Скачиваем с официального сайта zip-архив Moodle (не Moodle installer for Windows!) и языковой пакет.

Распаковываем все содержимое архива в папку c:\inetpub\moodle\

Устанавливаем права на папку moodle на чтение для пользователей IUSR, IIS_IUSRS.

Для хранения данных создаем дополнительную папку c:\inetpub\moodledata\

Она должна располагаться вне папки moodle.

Устанавливаем права на папку moodledata на изменение для пользователей IUSR, IIS_IUSRS и для пользователей домена, если планируется LDAP-аутентификация. Также дадим права на изменение для пользователей IUSR, IIS_IUSRS для следующих папок:

c:\inetpub\moodle\theme\ - установка тем
c:\inetpub\moodle\question\type\ - установка типов вопросов
c:\inetpub\moodle\mod\ - установка плагинов

Создаем файл конфигурации moodle – config.php, скопировав файл config-dist.php и переименовав его.

Устанавливаем ODBC Driver 13 for MS SQL Server.

Задаем в этом файле настройки для подключения к БД, которая уже создана:

$CFG->dbtype    = sqlsrv;
$CFG->dblibrary = 'native';
$CFG->dbhost    = SQLServerName;
$CFG->dbname    = 'moodle';
$CFG->dbuser    = 'moodle';
$CFG->dbpass    =password;

Значения ниже (сортировка БД и т.д.) стираем. Указываем настройки домена и путь к папке moodledata:

$CFG->wwwroot   = 'http://mysite';
$CFG->dataroot  = 'c:\inetpub\moodledata';

Создаем сайт в IIS и устанавливаем Moodle

В Диспетчере служб IIS добавляем веб-сайт…

Указываем имя сайта (которое задали в config.php) и путь до папки moodle. Для сайта отключаем анонимную проверку подлинности, включаем проверку подлинности Windows.

Запускаем браузер, вводим в адресную строку доменное имя сайта. Соглашаемся с лицензионным соглашением. Проверяем, что все необходимые плагины установлены.

Далее запускается скрипт создания необходимых таблиц. Для этого у указанной в config.php учетной записи должны быть все необходимые права.

Задаем полное и короткое название сайта. Выбираем язык, страну, заканчиваем настройку.

Распаковываем языковой пакет в папку c:\inetpub\moodledata\lang\

 

Настройка Moodle

Устанавливаем русскую локализацию.

Переходим в Site administration – Language – Language packs. Видим, что установлены два языка – русский и английский. Возвращаемся на уровень выше и выбираем Default language – Русский язык.

Под учетной записью администратора заходим в Личный кабинет – Preferences – User account –Preferred language, ставим русский язык.

Переходим в меню Администрирование – Уведомления. Видим предупреждение «База данных не использует режим READ_COMMITTED_SNAPSHOT, что может привести к неправильным результатам, особенно при одновременном выполнении большого количества сценариев.»

Выполняем запрос в БД:

alter database moodle
      set read_committed_snapshot on;

Администрирование – Расширенные возможности:

  • Включить комментарии – нет
  • Включить систему обмена сообщениями — нет
  • Включить статистику — Да
  • Разрешить блоги — нет

Администрирование – Значки – Настройки значков:

  • Разрешить подключение к внешним коллекциям наград — нет

Администрирование – Местонахождение – Настройки местонахождения:

  • Принудительный часовой пояс – устанавливаем свой часовой пояс
  • Страна по умолчанию – Россия
  • Город по умолчанию – устанавливаем свой город

Администрирование – Безопасность – Политика безопасности сайта:

  • Принуждать пользователей входить в систему – вкл
  • Разрешить индексирование поисковыми системами – нигде
  • Видимые роли профиля – только студент
  • Разрешить в логинах дополнительные символы – да
  • Длина пароля — 6
  • Не буквенно-цифровых символов — 0

Администрирование – Безопасность – Уведомления

  • Уведомлять об ошибках входа – да, Admin User

Администрирование – Пользователи – Учетные записи – Поля профиля пользователя:

  • Добавляем два поля профиля типа «Текстовое поле» (понадобится при составлении отчетов): fio (Фамилия Имя Отчество) и position (Должность).

Администрирование – Пользователи – Права – Политики пользователя

  • Скрыть поля пользователя – скрыть все, кроме описания, последний вход.
  • Отображать персональные данные – Адрес электронной почты, Отдел, Учреждение

Администрирование – Пользователи – Права – Определить роли

Для роли Пользователи:

  • Управлять файлами в области личных файлов – убираем права для роли Аутентифицированный пользователь

Администрирование – Курсы – Настройки курса по умолчанию:

  • Принудительный язык – Русский
  • Количество отображаемых объявлений – 0
  • Показывать журнал оценок студентам – нет

Администрирование – Курсы – Резервные копии – Настройка автоматического резервного копирования

  • Активно – Включено
  • Расписание — Воскресенье

Администрирование – Оценки – Общие настройки

  • Поля профиля пользователя в экспортируемой оценке — institution,department
  • Настраиваемые поля профиля в экспортируемой оценке — fio, position
  • Основные форматы экспорта оценок — Таблица Excel

Установим плагин Questionnaire.

Администрирование – Плагины – Установка плагинов.

Перетаскиваем в поле загрузки zip-архив с плагином.

Обновляем Moodle.

Продолжаем настройку Moodle…

Администрирование – Плагины – Аутентификация – Настройка аутентификации

  • Самостоятельная регистрация по электронной почте – отключаем (клик по глазу)

  • Сервер LDAP – включаем. (Настройку аутентификации через LDAP выполним позднее)
  • Кнопка гостевого входа — Скрыть

Администрирование – Плагины – Блоки – Управление блоками

  • Внешние RSS-ленты – выкл
  • Глобальный поиск — выкл
  • Комментарии – выкл
  • Личные файлы – выкл
  • Поиск в общественных каталогах – выкл
  • Поиск по форумам — выкл
  • Последние значки — выкл
  • Сайты сети MNet — выкл
  • Flickr — выкл

Администрирование – Плагины – Зачисления на курсы – Управление способами зачисления

  • Самостоятельная запись – выкл
  • Гостевой доступ — выкл
  • Синхронизация с глобальной группой — выкл

Администрирование – Плагины – Зачисления на курсы – Гостевой доступ

  • Добавлять этот способ для новых курсов — нет

Администрирование – Плагины- Медиаплееры – Управление медиаплеерами

  • YouTube — выкл

Администрирование – Плагины – Модули элементов курса – Управление элементами курсов — Элементы курса

  • Чат — выкл

Администрирование – Плагины – Хранилища файлов – Управление хранилищами файлов

  • Мои личные файлы — отключено

Администрирование – Внешний вид – Календарь

  • Формат времени – 24

Администрирование – Внешний вид – Навигация

  • Стартовая страница по умолчанию для пользователей. — Сайт
  • Разрешить гостевой доступ к странице «Личный кабинет» — нет
  • Отображать полные названия курсов – да
  • Показывать «Мои курсы» с категориями — да

Администрирование – Сервер – Контакты службы поддержки

  • Имя техподдержки – указываем имя поддержки

Администрирование – Сервер – Производительность

  • Предел дополнительный памяти PHP – 1024М

Администрирование – Сервер – Уведомления об обновлениях

  • Автоматически проверять наличие обновлений — выкл

Администрирование – Сервер – Электронная почта – Настройка исходящей почты

  • SMTP-серверы – указываем имя сервера
  • Логин SMTP – указываем логин
  • Пароль SMTP – указываем пароль
  • Разрешить вложения — выкл

Убираем ссылку на восстановление пароля со страницы входа в систему. Она не нужна, т.к. будет использоваться SSO-аутентификация.

Администрирование – Внешний вид – Дополнительный HTML

Добавляем в тег HEAD строку:

<style>.forgetpass {display: none;}</style>

Настройка LDAP-аутентификации

Администрирование – Плагины – Аутентификация – Сервер LDAP

  • URL сервера — ldap://domaincontroller:3268 (я использую кроссдоменную аутентификацию, поэтому указываю порт 3268. Если этого не нужно, укажите порт 389)
  • Отличительное имя — CN=username, OU=Users, DC=domain, DC=local
  • Тип учетной записи пользователя – MS ActiveDirectory
  • Контейнеры – список контейнеров, в которых хранятся учетные записи пользователей
  • Поиск в дочерних контейнерах — Да
  • Атрибут пользователя – samaccountname
  • NTLM SSO Включить – Да
  • Подсеть – 10. Обязательное значение! У меня IP-адресация в сети начинается с 10.
  • Быстрая проверка в MS IE? – Да, а в остальных браузерах использовать долгую проверку NTLM
  • Формат передаваемого логина — %domain%\%username%
  • Сопоставление данных (Имя) – givenName
  • Обновить внутренних (Имя) – При каждом входе
  • Обновить внешних (Имя) – При обновлении
  • Сопоставление данных (Фамилия) – sn
  • Обновить внутренних (Фамилия) — При каждом входе
  • Обновить внешних (Фамилия) — При обновлении
  • Сопоставление данных (Адрес электронной почты) – mail
  • Сопоставление данных (Учреждение (организация)) – company
  • Обновить внутренних (Учреждение (организация)) — При каждом входе
  • Обновить внешних (Учреждение (организация)) — При обновлении
  • Сопоставление данных (Отдел) – department
  • Обновить внутренних (Отдел) — При каждом входе
  • Обновить внешних (Отдел) — При обновлении
  • Сопоставление данных (Должность) – title
  • Обновить внутренних (Должность) — При каждом входе
  • Обновить внешних (Должность) — При обновлении
  • Сопоставление данных (Фамилия Имя Отчество) – displayName
  • Обновить внутренних (Фамилия Имя Отчество) — При каждом входе
  • Обновить внешних (Фамилия Имя Отчество) — При обновлении

Теперь нужно синхронизироваться с LDAP.

Администрирование – Сервер – Планировщик задач

  • Задача синхронизации пользователей LDAP – настроить, Включить задачу.

Создаем задачу для cron

Создаем файл cron.bat с содержимым:

@echo off
set PathPHP="c:\PHP\php7\php.exe"
set PathCron="c:\inetpub\moodle\admin\cli\cron.php"
set PathLOG="c:\Setup\cron\cronlogs"
%PathPHP% -f %PathCron% >> %PathLOG%\%date"~10,4%%date:~4,2%%date:~7,2%.log
Forfiles /P %PathLOG% /S /M *.log /D -5 /C "cmd /c del /q @path"

В планировщике задач (Меню Пуск – Средства администрирования – Планировщик задач) создаем задачу, указываем время выполнения – запускать каждые 5 минут, выполнять bat-файл c:\Setup\cron\cron.bat, запускать скрипт от имени учетной записи, у которой есть права записи в папку c:\inetpub\moodle (например, от администратора).

Проверяем работу скрипта, ошибки будут писаться в папку c:\Setup\cron\cronlogs

При необходимости правим файл php.ini

Установка и настройка завершены.

 

1 thoughts on “Установка Moodle на Windows Server 2016 и IIS, LDAP-аутентификация

  1. Ребята мне не удается установит Win server 2016 с рабочим столом. какой версии вы посоветовали бы. …

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

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