Интеграция: различия между версиями
Koptsev (обсуждение | вклад) Нет описания правки |
Нет описания правки |
||
Строка 1: | Строка 1: | ||
=Интеграция Moodle и Апекс-ВУЗ= | |||
== Конвертация БД Moodle в кодировку utf8mb4 == | |||
На сервере Moodle выполните конвертацию согласно официальной инструкции: <nowiki>https://docs.moodle.org/403/en/MySQL_full_unicode_support</nowiki> | |||
== Конвертация БД Апекс-ВУЗ в кодировку utf8mb4 == | |||
На сервере Апекс-ВУЗ для конвертации БД создайте файл /etc/my.cnf.d/utf8mb4.cnf со следующим содержимым: | |||
[client] | |||
default-character-set = utf8mb4 | |||
[mysqld] | |||
innodb_file_format = Barracuda | |||
innodb_file_per_table = 1 | |||
innodb_large_prefix = true | |||
character-set-server = utf8mb4 | |||
collation-server = utf8mb4_unicode_ci | |||
skip-character-set-client-handshake | |||
[mysql] | |||
default-character-set = utf8mb4 | |||
После сохранения файла выполните перезагрузку сервера БД командой systemctl restart mysqld. | |||
Создайте файл gen_utf8mb4_queries.sql со следующим содержимым: | |||
USE information_schema; | |||
SELECT CONCAT("ALTER DATABASE `",table_schema,"` CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;") AS _sql | |||
FROM `TABLES` WHERE table_schema LIKE "avtor" AND TABLE_TYPE='BASE TABLE' GROUP BY table_schema UNION | |||
SELECT CONCAT("ALTER TABLE `",table_schema,"`.`",table_name,"` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;") AS _sql | |||
FROM `TABLES` WHERE table_schema LIKE "avtor" AND TABLE_TYPE='BASE TABLE' GROUP BY table_schema, table_name UNION | |||
SELECT CONCAT("ALTER TABLE `",`COLUMNS`.table_schema,"`.`",`COLUMNS`.table_name, "` CHANGE `",column_name,"` `",column_name,"` ",data_type,"(",character_maximum_length,") CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci",IF(is_nullable="YES"," NULL"," NOT NULL"),";") AS _sql | |||
FROM `COLUMNS` INNER JOIN `TABLES` ON `TABLES`.table_name = `COLUMNS`.table_name WHERE `COLUMNS`.table_schema like "avtor" and data_type in ('varchar','char') AND TABLE_TYPE='BASE TABLE' UNION | |||
SELECT CONCAT("ALTER TABLE `",`COLUMNS`.table_schema,"`.`",`COLUMNS`.table_name, "` CHANGE `",column_name,"` `",column_name,"` ",data_type," CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci",IF(is_nullable="YES"," NULL"," NOT NULL"),";") AS _sql | |||
FROM `COLUMNS` INNER JOIN `TABLES` ON `TABLES`.table_name = `COLUMNS`.table_name WHERE `COLUMNS`.table_schema like "avtor" and data_type in ('text','tinytext','mediumtext','longtext') AND TABLE_TYPE='BASE TABLE'; | |||
Выполните команду для генерации запросов на изменение кодировки: | |||
mysql avtor -u root -p -N < gen_utf8mb4_queries.sql > exec_utf8mb4_queries.sql | |||
Выполните команды для изменения кодировки: | |||
mysql avtor -u root -p < exec_utf8mb4_queries.sql | |||
== Периодическая очистка кэша для категорий и курсов == | |||
Для правильной работы синхронизации категорий и курсов необходимо периодически очищать кэш события changesincoursecat после процедуры синхронизации, иначе изменения не будут отражаться сразу (Апекс-ВУЗ отдает данные каждые 10 минут). Это можно сделать следующими способами: | |||
1. Вручную через меню Администрирование — Разработка — Очистить кэши | |||
2. Через запуск скрипта admin/cli/purge_caches.php (вручную или по cron) | |||
3. С помощью плагина для очистки по cron (данный вариант предпочтителен, так как будет стирать только нужный участок кэша, а не выполнять полную очистку). Скопируйте содержимое папки api-samples/moodle на сервере Апекс-ВУЗ в папку /var/www/html на сервере Moodle и убедитесь, что в разделе Администрирование — Сервер — Планировщик задач появилась и периодически запускается задача \local_apeks_vuz\task\cache. | |||
== Аутентификация через БД Апекс-ВУЗ == | |||
В разделе Администрирование – Плагины – Аутентификация включаем плагин «Внешняя база данных». Настройки: | |||
Сервер базы данных, Название базы данных, Пользователь базы данных, Пароль – указать как параметры подключения к БД Апекс-ВУЗ | |||
Таблица: student_moodle_users | |||
Поле логина: login | |||
Поле пароля: password | |||
Формат пароля: Шифровать строки с помощью односторонней хэш-функции | |||
Команда настройки SQL: SET NAMES 'utf8mb4' | |||
При удалении пользователя во внешнем источнике: Заблокировать внешнюю учетную запись | |||
Обновить пользователей: Да | |||
Сопоставление данных (Имя): name | |||
Обновление локальной учетной записи (Имя): При каждом входе | |||
Сопоставление данных (Фамилия): family_name | |||
Обновление локальной учетной записи (Фамилия): При каждом входе | |||
Сопоставление данных (Отчество или второе имя): surname | |||
Обновление локальной учетной записи (Отчество или второе имя): При каждом входе | |||
Сопоставление данных (Индивидуальный номер): id | |||
Обновление локальной учетной записи (Индивидуальный номер): При каждом входе | |||
Сопоставление данных (Адрес электронной почты): email | |||
Обновление локальной учетной записи (Адрес электронной почты): При создании | |||
Проверяем настройки нажатием на кнопку «Проверить настройки» | |||
Внимание: Апекс-ВУЗ предоставляет для аутентификации список пользователей, привязанных к сотрудникам и обучающимся. Если к пользователю не привязан сотрудник из модуля Штаты, то данный пользователь не может быть авторизован в Moodle. Также действуют ограничения по возможным символам в логине — только маленькие латинские буквы, цифры, знак подчеркивания, дефис, точка, @. (Администрирование — Безопасность — Параметры безопасности сайта - Разрешить в логинах дополнительные символы). | |||
== Синхронизация базы данных пользователей == | |||
Администрирование – Сервер – Задачи – Планировщик задач. Включаем раз в 5 минут запуск скрипта синхронизации - Задача синхронизации пользователей (\auth_db\task\sync_users): | |||
Минута - */5 | |||
Остальные поля - * | |||
Снимаем флажок «Отключить задачу» | |||
Добавляем в crontab запуск скрипта планировщика Moodle: | |||
Запускаем команду crontab -e, добавляем строку, если ее нет | |||
<nowiki>*</nowiki> * * * * /usr/bin/php /var/www/html/admin/cli/cron.php | |||
(/var/www/html нужно заменить на адрес папки Moodle). | |||
Через 5 минут проверяем, появились ли новые пользователи в разделе Администрирование – Пользователи – Учетные записи – Список пользователей, пробуем авторизоваться под одним из них. | |||
== Автоматическое создание курсов и записи на курс == | |||
В разделе Администрирование – Плагины – Зачисления на курсы включаем плагин «Внешняя база данных». Настройки: | |||
Драйвер базы данных - mysqli | |||
Сервер базы данных, Название базы данных, Пользователь базы данных, Пароль – указать как параметры подключения к БД Апекс-ВУЗ | |||
Команда настройки SQL: SET NAMES 'utf8mb4' | |||
Внешняя таблица информацией о записи на курсы: student_moodle_enrollments | |||
Поле курса во внешней таблице: course | |||
Поле пользователя во внешней таблице: user_id | |||
Поле для роли во внешней таблице: role | |||
Отдаленная таблица новых курсов: student_moodle_courses | |||
Поле полного имени нового курса: name | |||
Поле, содержащее название нового курса: name_short | |||
Поле номера ID нового курса: code | |||
Поле категории нового курса: category | |||
Проверяем настройки нажатием на кнопку «Проверить настройки» | |||
== Синхронизация курсов == | |||
Администрирование – Сервер – Задачи – Планировщик задач. Включаем раз в сутки запуск скрипта синхронизации - Synchronise external database enrolments task (\enrol_database\task\sync_enrolments): | |||
Минута – 0 | |||
Час – 3 | |||
Остальные поля - * | |||
Снимаем флажок «Отключить задачу» | |||
== Отключение подтверждения e-mail == | |||
Апекс-ВУЗ не требует обязательного заполнения адреса электронной почты пользователей, поэтому при интеграции они будут переданы в Moodle только при наличии. При первой авторизации Moodle будет запрашивать смену адреса электронной почты и требовать ее подтверждения. Если не все пользователи имеют электронную почту, желательно отключить подтверждение, чтобы они могли указывать любую непроверенную почту. | |||
Для этого необходимо перейти в раздел Администрирование – Безопасность – Политики безопасности сайта и снять флажок «Подтверждение изменения электронной почты». |
Текущая версия от 09:20, 11 января 2024
Интеграция Moodle и Апекс-ВУЗ
Конвертация БД Moodle в кодировку utf8mb4
На сервере Moodle выполните конвертацию согласно официальной инструкции: https://docs.moodle.org/403/en/MySQL_full_unicode_support
Конвертация БД Апекс-ВУЗ в кодировку utf8mb4
На сервере Апекс-ВУЗ для конвертации БД создайте файл /etc/my.cnf.d/utf8mb4.cnf со следующим содержимым:
[client]
default-character-set = utf8mb4
[mysqld]
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix = true
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
skip-character-set-client-handshake
[mysql]
default-character-set = utf8mb4
После сохранения файла выполните перезагрузку сервера БД командой systemctl restart mysqld.
Создайте файл gen_utf8mb4_queries.sql со следующим содержимым:
USE information_schema;
SELECT CONCAT("ALTER DATABASE `",table_schema,"` CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;") AS _sql
FROM `TABLES` WHERE table_schema LIKE "avtor" AND TABLE_TYPE='BASE TABLE' GROUP BY table_schema UNION
SELECT CONCAT("ALTER TABLE `",table_schema,"`.`",table_name,"` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;") AS _sql
FROM `TABLES` WHERE table_schema LIKE "avtor" AND TABLE_TYPE='BASE TABLE' GROUP BY table_schema, table_name UNION
SELECT CONCAT("ALTER TABLE `",`COLUMNS`.table_schema,"`.`",`COLUMNS`.table_name, "` CHANGE `",column_name,"` `",column_name,"` ",data_type,"(",character_maximum_length,") CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci",IF(is_nullable="YES"," NULL"," NOT NULL"),";") AS _sql
FROM `COLUMNS` INNER JOIN `TABLES` ON `TABLES`.table_name = `COLUMNS`.table_name WHERE `COLUMNS`.table_schema like "avtor" and data_type in ('varchar','char') AND TABLE_TYPE='BASE TABLE' UNION
SELECT CONCAT("ALTER TABLE `",`COLUMNS`.table_schema,"`.`",`COLUMNS`.table_name, "` CHANGE `",column_name,"` `",column_name,"` ",data_type," CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci",IF(is_nullable="YES"," NULL"," NOT NULL"),";") AS _sql
FROM `COLUMNS` INNER JOIN `TABLES` ON `TABLES`.table_name = `COLUMNS`.table_name WHERE `COLUMNS`.table_schema like "avtor" and data_type in ('text','tinytext','mediumtext','longtext') AND TABLE_TYPE='BASE TABLE';
Выполните команду для генерации запросов на изменение кодировки:
mysql avtor -u root -p -N < gen_utf8mb4_queries.sql > exec_utf8mb4_queries.sql
Выполните команды для изменения кодировки:
mysql avtor -u root -p < exec_utf8mb4_queries.sql
Периодическая очистка кэша для категорий и курсов
Для правильной работы синхронизации категорий и курсов необходимо периодически очищать кэш события changesincoursecat после процедуры синхронизации, иначе изменения не будут отражаться сразу (Апекс-ВУЗ отдает данные каждые 10 минут). Это можно сделать следующими способами:
1. Вручную через меню Администрирование — Разработка — Очистить кэши
2. Через запуск скрипта admin/cli/purge_caches.php (вручную или по cron)
3. С помощью плагина для очистки по cron (данный вариант предпочтителен, так как будет стирать только нужный участок кэша, а не выполнять полную очистку). Скопируйте содержимое папки api-samples/moodle на сервере Апекс-ВУЗ в папку /var/www/html на сервере Moodle и убедитесь, что в разделе Администрирование — Сервер — Планировщик задач появилась и периодически запускается задача \local_apeks_vuz\task\cache.
Аутентификация через БД Апекс-ВУЗ
В разделе Администрирование – Плагины – Аутентификация включаем плагин «Внешняя база данных». Настройки:
Сервер базы данных, Название базы данных, Пользователь базы данных, Пароль – указать как параметры подключения к БД Апекс-ВУЗ
Таблица: student_moodle_users
Поле логина: login
Поле пароля: password
Формат пароля: Шифровать строки с помощью односторонней хэш-функции
Команда настройки SQL: SET NAMES 'utf8mb4'
При удалении пользователя во внешнем источнике: Заблокировать внешнюю учетную запись
Обновить пользователей: Да
Сопоставление данных (Имя): name
Обновление локальной учетной записи (Имя): При каждом входе
Сопоставление данных (Фамилия): family_name
Обновление локальной учетной записи (Фамилия): При каждом входе
Сопоставление данных (Отчество или второе имя): surname
Обновление локальной учетной записи (Отчество или второе имя): При каждом входе
Сопоставление данных (Индивидуальный номер): id
Обновление локальной учетной записи (Индивидуальный номер): При каждом входе
Сопоставление данных (Адрес электронной почты): email
Обновление локальной учетной записи (Адрес электронной почты): При создании
Проверяем настройки нажатием на кнопку «Проверить настройки»
Внимание: Апекс-ВУЗ предоставляет для аутентификации список пользователей, привязанных к сотрудникам и обучающимся. Если к пользователю не привязан сотрудник из модуля Штаты, то данный пользователь не может быть авторизован в Moodle. Также действуют ограничения по возможным символам в логине — только маленькие латинские буквы, цифры, знак подчеркивания, дефис, точка, @. (Администрирование — Безопасность — Параметры безопасности сайта - Разрешить в логинах дополнительные символы).
Синхронизация базы данных пользователей
Администрирование – Сервер – Задачи – Планировщик задач. Включаем раз в 5 минут запуск скрипта синхронизации - Задача синхронизации пользователей (\auth_db\task\sync_users):
Минута - */5
Остальные поля - *
Снимаем флажок «Отключить задачу»
Добавляем в crontab запуск скрипта планировщика Moodle:
Запускаем команду crontab -e, добавляем строку, если ее нет
* * * * * /usr/bin/php /var/www/html/admin/cli/cron.php
(/var/www/html нужно заменить на адрес папки Moodle).
Через 5 минут проверяем, появились ли новые пользователи в разделе Администрирование – Пользователи – Учетные записи – Список пользователей, пробуем авторизоваться под одним из них.
Автоматическое создание курсов и записи на курс
В разделе Администрирование – Плагины – Зачисления на курсы включаем плагин «Внешняя база данных». Настройки:
Драйвер базы данных - mysqli
Сервер базы данных, Название базы данных, Пользователь базы данных, Пароль – указать как параметры подключения к БД Апекс-ВУЗ
Команда настройки SQL: SET NAMES 'utf8mb4'
Внешняя таблица информацией о записи на курсы: student_moodle_enrollments
Поле курса во внешней таблице: course
Поле пользователя во внешней таблице: user_id
Поле для роли во внешней таблице: role
Отдаленная таблица новых курсов: student_moodle_courses
Поле полного имени нового курса: name
Поле, содержащее название нового курса: name_short
Поле номера ID нового курса: code
Поле категории нового курса: category
Проверяем настройки нажатием на кнопку «Проверить настройки»
Синхронизация курсов
Администрирование – Сервер – Задачи – Планировщик задач. Включаем раз в сутки запуск скрипта синхронизации - Synchronise external database enrolments task (\enrol_database\task\sync_enrolments):
Минута – 0
Час – 3
Остальные поля - *
Снимаем флажок «Отключить задачу»
Отключение подтверждения e-mail
Апекс-ВУЗ не требует обязательного заполнения адреса электронной почты пользователей, поэтому при интеграции они будут переданы в Moodle только при наличии. При первой авторизации Moodle будет запрашивать смену адреса электронной почты и требовать ее подтверждения. Если не все пользователи имеют электронную почту, желательно отключить подтверждение, чтобы они могли указывать любую непроверенную почту.
Для этого необходимо перейти в раздел Администрирование – Безопасность – Политики безопасности сайта и снять флажок «Подтверждение изменения электронной почты».