Перенос учебного портала на новый сервер кажется рутиной: развернуть веб-сервер, залить базу, распаковать файлы, поправить конфиг. Но когда дело доходит до реального проекта, всплывают детали, которые могут остановить работу на несколько дней. В этой статье — разбор типичных проблем при миграции Moodle на Ubuntu 24.04 LTS и конкретные шаги для их решения. Мы не обещаем, что всё пройдёт гладко, но покажем, как диагностировать и исправлять ошибки, чтобы вы не наступили на те же грабли.
Подготовка: что проверить до переноса
Перед тем как трогать боевой сервер, убедитесь, что у вас есть полные резервные копии: дамп базы данных (mysqldump или аналогичный инструмент), архив с файлами Moodle (каталог moodle и moodledata) и конфигурационные файлы (config.php, настройки веб-сервера). Проверьте целостность бэкапов — попробуйте развернуть их на тестовой виртуальной машине. Часто оказывается, что дамп базы неполный или файлы повреждены. Также зафиксируйте текущие версии ПО: Moodle, PHP, MySQL, веб-сервера. Это поможет понять совместимость с целевой системой.
На новом сервере с Ubuntu 24.04 LTS по умолчанию доступен PHP 8.3. Moodle 4.1.x официально поддерживает PHP 8.0–8.2, но многие ставят 8.3 и сталкиваются с предупреждениями. Проверьте матрицу совместимости на официальном сайте Moodle для вашей версии. Если ваша версия Moodle не поддерживает PHP 8.3, рассмотрите установку PHP 8.2 из репозитория ondrej/php или обновление Moodle до более свежей версии.
Восстановление базы данных и файлов: типичные ошибки
Одна из частых проблем — неверное имя базы данных в config.php. При переносе на новый сервер вы можете создать базу с другим именем, забыв обновить конфиг. В результате Moodle не подключается к БД. Всегда сверяйте параметры в config.php с реальными настройками MySQL. Второй момент: на сервере может оказаться несколько копий Moodle в разных каталогах (например, старый бэкап и новый). Это приводит к путанице, какой код исполняется. Удалите лишние каталоги или чётко определите корень веб-сервера.
При восстановлении дампа MySQL может отказаться запускаться из-за несовместимости версий или повреждённых таблиц. Используйте команду mysqlcheck для проверки и восстановления таблиц. Если база большая, восстановление может занять время — не прерывайте процесс. После импорта проверьте, что все таблицы на месте и совпадают с ожидаемыми (сравните количество таблиц с исходной базой).
Настройка PHP 8.3 и веб-сервера
Ubuntu 24.04 поставляется с PHP 8.3, и это может вызвать проблемы с устаревшими расширениями или функциями. Убедитесь, что установлены все необходимые расширения: mysqli, gd, xml, mbstring, zip, curl, intl и другие, требуемые Moodle. Проверьте их наличие командой php -m. Настройте параметры php.ini: увеличьте memory_limit (рекомендуется 256M или больше), max_execution_time, upload_max_filesize и post_max_size в соответствии с размерами курсов и файлов.
Веб-сервер (Apache или Nginx) должен быть настроен на правильный корневой каталог и корректную обработку PHP. Если вы используете Nginx, не забудьте про location-блоки для PHP-FPM и правильные права доступа к moodledata. Частая ошибка — неверные права на каталог moodledata, из-за чего Moodle не может писать в него. Установите владельца www-data и права 755 для каталогов, 644 для файлов (но для moodledata обычно требуются более строгие права, например 770).
Диагностика ошибок после восстановления
После запуска Moodle вы можете увидеть ошибки кэширования или invalidparameter. Первым делом очистите кэш Moodle: зайдите в админку или выполните php admin/tool/cache/cli/purge_caches.php из командной строки. Если ошибка сохраняется, проверьте логи PHP и веб-сервера. Ошибки invalidparameter часто связаны с несовместимостью плагинов или повреждёнными настройками в базе. Попробуйте отключить сторонние плагины, чтобы выявить виновника.
Для диагностики используйте встроенные инструменты Moodle: в админке есть раздел «Разработка» → «Отладка», где можно включить подробный вывод ошибок. Также проверьте, что версия Moodle соответствует версии базы данных (иногда после обновления требуется запустить скрипт обновления). Если вы переносите портал с более старой версии, возможно, потребуется поэтапное обновление.
Перенос Moodle — задача, требующая внимания к деталям. Ведите журнал изменений, фиксируйте每一步 и проверяйте результат на каждом этапе. Не бойтесь использовать диагностические команды и логи — они дают больше информации, чем кажется. И помните: даже если что-то пошло не так, всегда можно вернуться к бэкапу и начать заново, но уже с учётом полученного опыта.