Мой блог
Установка Moodle LMS на Debian 12 Server

Платформа Moodle представляет собой популярное решение с открытым исходным кодом для организации систем управления обучением (LMS). Эта универсальная цифровая среда используется в различных образовательных целях: от разработки интерактивных учебных курсов и администрирования онлайн-школ до управления контентом и организации совместного обучения пользователей. Программное обеспечение разработано преимущественно на языке программирования PHP с использованием реляционных баз данных MySQL или MariaDB и может функционировать практически под управлением любой современной операционной системы. Администраторы вольны выбирать между двумя ведущими веб-серверами — Apache или Nginx. В этом подробном руководстве описан процесс развертывания системы Moodle LMS на базе серверной операционной системы Debian 12 с использованием классического стека LAMP (Linux, Apache, MariaDB и PHP), а также настройки комплексной безопасности с помощью межсетевого экрана UFW и защищенного протокола HTTPS посредством утилиты Certbot и центра сертификации Let’s Encrypt.

Предварительные требования
Перед тем как приступить к установке и настройке всех компонентов системы, необходимо убедиться в наличии и готовности следующих обязательных элементов инфраструктуры:
- Выделенный сервер под управлением операционной системы Debian 12.
- Учетная запись обычного пользователя, не обладающего правами суперпользователя root, но имеющего настроенные привилегии администратора через утилиту sudo.
- Зарегистрированное доменное имя, у которого корректно прописаны DNS-записи и которое указывает на актуальный внешний IP-адрес вашего сервера.
Установка зависимостей и стека LAMP
Поскольку программный комплекс Moodle написан на PHP и взаимодействует с базами данных MySQL или MariaDB, обязательным условием является инсталляция соответствующих программных пакетов в систему. В рамках данного руководства в качестве рабочего окружения применяется полноценный стек LAMP. Прежде чем запускать установку любых компонентов, настоятельно рекомендуется обновить локальный индекс пакетов операционной системы Debian с помощью следующей команды:
sudo apt update
После успешного обновления индексов выполните команду для установки необходимых зависимостей стека LAMP, включающего в себя веб-сервер Apache, сервер баз данных MariaDB и интерпретатор PHP вместе с ключевыми расширениями. Когда система выдаст соответствующий запрос, введите латинскую букву Y для подтверждения и продолжения инсталляции:

sudo apt install apache2 mariadb-server php-cli php-intl php-xmlrpc php-soap php-mysql php-zip php-gd php-tidy php-mbstring php-curl php-xml php-pear php-bcmath libapache2-mod-php
Как только процесс установки завершится, необходимо проверить состояние службы веб-сервера apache2, чтобы убедиться в ее корректной работе и активации автозапуска:
sudo systemctl is-enabled apache2sudo systemctl status apache2
В выводе терминала можно будет увидеть, что веб-сервер Apache запущен и настроен на автоматический запуск при старте системы. Аналогичным образом следует проверить состояние службы базы данных MariaDB:

sudo systemctl is-enabled mariadbsudo systemctl status mariadb
Результат выполнения команды подтвердит, что сервер MariaDB находится в активном рабочем состоянии. На завершающем этапе проверки базовых зависимостей проверьте версию установленного интерпретатора PHP и запросите список активных модулей:
php -vphp -m

Вы увидите, что в системе развернут PHP версии 8.2, причем такие стандартные и критически важные модули, как curl, exif и date, уже включены по умолчанию.
Настройка межсетевого экрана UFW
После успешного развертывания стека LAMP необходимо позаботиться о базовой сетевой безопасности сервера, установив и настроив межсетевой экран UFW (Uncomplicated Firewall). В процессе настройки потребуется открыть стандартные порты для удаленного администрирования по протоколу SSH, а также для входящего веб-трафика по протоколам HTTP и HTTPS, после чего активировать брандмауэр.
Установка утилиты UFW выполняется стандартным пакетным менеджером с помощью следующей команды:
sudo apt install ufw

Когда установка будет завершена, выполните команды для открытия сетевых портов, необходимых для работы службы OpenSSH, а также веб-трафика на 80-й порт (HTTP) и 443-й порт (HTTPS). Система должна вернуть подтверждение в виде сообщения об успешном обновлении правил:
sudo ufw allow OpenSSHsudo ufw allow 80/tcpsudo ufw allow 443/tcp
Теперь выполните команду для запуска и добавления брандмауэра UFW в автозагрузку операционной системы Debian. Когда система попросит подтвердить действие, введите y для продолжения. В результате появится сообщение о том, что брандмауэр активен и включен при старте системы:
sudo ufw enable

В завершение настройки межсетевого экрана проверьте его актуальный статус:
sudo ufw status
В выводе утилиты будет указано, что статус UFW имеет значение active, а правила для OpenSSH, а также портов 80 и 443 находятся в состоянии ALLOWED (разрешено).
Настройка сервера MariaDB
Перед тем как переходить непосредственно к инсталляции самой платформы Moodle, администратору требуется изменить стандартный движок хранения данных на innodb, установить формат Barracuda в качестве значения по умолчанию, а также выполнить процедуру первичной защиты сервера базы данных с помощью встроенной утилиты mariadb-secure-installation.
Откройте основной конфигурационный файл сервера MariaDB, расположенный по пути /etc/mysql/mariadb.conf.d/50-server.cnf, используя текстовый редактор nano:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Внесите в конфигурационный файл следующие параметры, которые активируют формат Barracuda и зададут современный движок InnoDB:

innodb_file_format = Barracudadefault_storage_engine = innodbinnodb_large_prefix = 1innodb_file_per_table = 1
Сохраните изменения в файле и выйдите из редактора. После этого перезапустите службу базы данных MariaDB с помощью системного менеджера, чтобы применить внесенные изменения:
sudo systemctl restart mariadb
Затем запустите интерактивную утилиту безопасности базы данных:
sudo mariadb-secure-installation
В процессе работы скрипта система последовательно задаст несколько вопросов для усиления безопасности:
- Нажмите клавишу ENTER при запросе текущего пароля администратора root (так как пароль будет задан на следующем этапе).
- Введите букву
nпри предложении переключиться на аутентификацию черезunix_socket. - Введите
Yдля установки нового пароля администратора root, после чего введите и подтвердите ваш новый надежный пароль. - Введите
Yдля удаления анонимных пользователей из базы данных. - Введите
Yдля отключения возможности удаленного входа под учетной записью root. - Введите
Yдля удаления стандартной тестовой базы данных и отзыва прав доступа к ней. - Введите
Yдля перезагрузки таблиц привилегий и применения всех сделанных изменений.
После завершения работы утилиты можно переходить к следующему шагу — созданию отдельной базы данных и специализированного пользователя для Moodle.
Создание базы данных и пользователя для Moodle
Имея корректно настроенный и защищенный сервер MariaDB, создадим изолированную базу данных и пользователя, которые будут задействованы платформой Moodle. Для этого используется официальный клиент командной строки.

Войдите на сервер базы данных от имени администратора root, используя следующую команду, и введите созданный ранее пароль при появлении запроса:
sudo mariadb -u root -p
Выполните следующие SQL-запросы в консоли СУБД, чтобы создать новую базу данных с поддержкой кодировки utf8mb4, а также пользователя moodle с надежным паролем MoodlePassw0rd (обязательно замените демонстрационные учетные данные на собственные в целях безопасности):
CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;GRANT ALL ON moodle.* TO 'moodle'@'localhost' IDENTIFIED BY "MoodlePassw0rd";FLUSH PRIVILEGES;

Чтобы убедиться, что учетная запись создана корректно и пользователь имеет полный доступ к целевой базе данных, выполните проверочный запрос:
SHOW GRANTS FOR moodle@localhost;
В завершение работы с консолью СУБД введите команду QUIT для выхода из интерфейса MariaDB.

Конфигурация параметров PHP
После завершения настройки базы данных и создания пользователя необходимо скорректировать глобальный конфигурационный файл PHP php.ini, изменив некоторые параметры по умолчанию в соответствии с системными требованиями Moodle.
Откройте файл конфигурации PHP для веб-сервера Apache с помощью редактора nano:
sudo nano /etc/php/8.2/apache2/php.ini
Найдите и измените параметры конфигурации на указанные ниже значения (параметр memory_limit можно гибко регулировать в зависимости от общего объема оперативной памяти, доступной на вашем сервере):

memory_limit = 256Mupload_max_filesize = 60Mmax_execution_time = 300date.timezone = Europe/Amsterdammax_input_vars = 5000
Сохраните отредактированный файл и закройте текстовый редактор. После этого перезапустите службу веб-сервера Apache для применения новых параметров PHP:
sudo systemctl restart apache2
Загрузка и подготовка исходного кода Moodle
Теперь инфраструктура полностью готова к загрузке исходного кода Moodle, созданию рабочего каталога веб-приложения и специальной директории для хранения пользовательских данных. В данном примере каталог установки будет располагаться по пути /var/www/moodle, а директория данных — по адресу /var/www/moodledata.

Перейдите в корневую веб-директорию /var/www и загрузите актуальный архив с исходным кодом Moodle с помощью утилиты wget:
cd /var/wwwsudo wget https://download.moodle.org/download.php/direct/stable405/moodle-latest-405.tgz
После завершения загрузки распакуйте архив с помощью утилиты tar. Распакованная папка автоматически получит имя moodle, а итоговый путь установки будет выглядеть как /var/www/moodle:
tar -xf moodle-latest-405.tgz

Затем создайте отдельную директорию /var/www/moodledata, которая будет использоваться системой для хранения загруженных файлов курсов, документов и пользовательского контента:
mkdir -p /var/www/moodledata
На завершающем этапе подготовки каталогов измените владельца для папок /var/www/moodle и /var/www/moodledata на пользователя веб-сервера www-data, а также предоставьте необходимые права на чтение, запись и выполнение:

sudo chown -R www-data:www-data /var/www/moodle /var/www/moodledatasudo chmod u+rwx /var/www/moodle /var/www/moodledata
Настройка виртуального хоста Apache
Следующим шагом является создание конфигурационного файла виртуального хоста Apache для вашей образовательной платформы. Перед началом убедитесь, что ваше доменное имя корректно разрешается и указывает на IP-адрес сервера.
Создайте новый файл виртуального хоста /etc/apache2/sites-available/moodle.conf в текстовом редакторе:
sudo nano /etc/apache2/sites-available/moodle.conf

Вставьте следующую конфигурацию виртуального хоста. Обязательно замените параметр ServerName на ваше реальное доменное имя, а также укажите актуальный адрес электронной администратора в строке ServerAdmin:
<VirtualHost *:80>DocumentRoot /var/www/moodle/ServerName moodle.howtoforge.localServerAdmin admin@example.com<Directory /var/www/moodle/>Options +FollowSymlinksAllowOverride AllRequire all granted</Directory>ErrorLog /var/log/apache2/moodle_error.logCustomLog /var/log/apache2/moodle_access.log combined</VirtualHost>
Сохраните файл конфигурации и закройте редактор. Теперь активируйте модуль перезаписи URL-адресов rewrite, а также созданный конфигурационный файл виртуального хоста Moodle с помощью специальных утилит:
sudo a2enmod rewritesudo a2ensite moodle.conf

Перед перезапуском службы обязательно проверьте правильность синтаксиса конфигурации Apache с помощью утилиты apachectl. Если все настройки выполнены верно, на экране появится сообщение Syntax is OK:
sudo apachectl configtest
После успешной проверки перезапустите веб-сервер Apache, чтобы применить активированный виртуальный хост:
sudo systemctl restart apache2

Защита Moodle с помощью HTTPS
На данном этапе программный комплекс Moodle полностью готов к работе. Однако перед началом финальной установки настоятельно рекомендуется защитить веб-трафик с помощью SSL-сертификатов, используя утилиту Certbot и центр сертификации Let’s Encrypt. Данный шаг является обязательным при развертывании платформы на публичном сервере. Если вы проводите установку в локальной среде разработки, этот шаг можно пропустить или настроить самоподписанные сертификаты.
Установите пакет certbot вместе со специальным плагином для веб-сервера Apache с помощью следующей команды, подтвердив установку вводом буквы Y:
sudo apt install certbot python3-certbot-apache

После завершения установки запустите утилиту Certbot для автоматической генерации и установки SSL-сертификатов. Обязательно укажите ваше доменное имя и контактный адрес электронной почты:
sudo certbot --apache --agree-tos --no-eff-email -m admin@example.com -d moodle.howtoforge.local
По завершении процесса SSL-сертификаты будут автоматически сохранены в директории /etc/letsencrypt/live/domain.com, а ваша инсталляция Moodle будет переведена на безопасный протокол HTTPS.
Инсталляция через веб-интерфейс
Откройте ваш веб-браузер и перейдите по доменному имени вашей платформы Moodle (например, https://moodle.howtoforge.local/). После этого запустится официальный мастер установки приложения.

Выберите желаемый язык интерфейса и нажмите кнопку продолжения. На следующем шаге укажите доменный адрес вашей платформы и проверьте путь к каталогу пользовательских данных /var/www/moodledata. В качестве драйвера базы данных выберите MariaDB и введите ранее созданные учетные данные: имя базы данных, имя пользователя и пароль. Подтвердите условия лицензионного соглашения и ознакомьтесь с уведомлением об авторских правах.
В разделе проверки состояния системы (Server checks) мастер автоматически проверит соответствие вашего сервера Debian всем техническим требованиям Moodle. Статус каждого отдельного пункта должен отображаться как OK. После прохождения проверок начнется процесс автоматической установки компонентов системы.
Как только инсталляция будет завершена, укажите учетные данные администратора образовательной платформы: имя пользователя, действующий адрес электронной почты и надежный пароль. Затем заполните общую информацию о вашем сайте. На завершающем этапе перед вами откроется главная панель управления администратора Moodle.
Заключение
Установка системы управления обучением Moodle LMS на сервер под управлением операционной системы Debian 12 успешно завершена. Вы развернули полноценную рабочую среду на базе стека LAMP (Linux, Apache, MariaDB и PHP), защитили сервер с помощью межсетевого экрана UFW, а также настроили безопасное шифрование трафика по протоколу HTTPS с помощью Certbot и Let’s Encrypt. В дальнейшем вы сможете настраивать индивидуальные темы оформления, устанавливать дополнительные плагины и модули для расширения функционала или использовать официальное руководство пользователя Moodle для эффективного администрирования учебного процесса.

Источник: howtoforge.com

