Сегодня сложно представить учебный процесс без цифровых технологий. Внедрение сервисов вроде Google Класс стало привычным. Среди популярных платформ для дистанционного обучения выделяется Moodle. В качестве базы данных мы выберем PostgreSQL вместо MySQL. Это обеспечит лучшую масштабируемость и надежность. Наш сервер будет работать за Nginx Proxy Server, поэтому нам нужен самоподписанный SSL-сертификат для защищенного соединения.
Moodle (Modular Object-Oriented Dynamic Learning Environment) — это свободная система управления обучением (LMS - Learning Management System), написанная на PHP и распространяемая под лицензией GPL
Содержание:
- Подготовка сервера к установке и настройке Moodle
- Установка и настройка Moodle
Предварительные требования:
- Сервер с Debian 12 уже подготовлен и настроен.
- Установлены и настроены все необходимые компоненты, включая sudo.
1. Подготовка сервера к установке и настройке Moodle
1.1. Обновление системы
Начнем с обновления пакетного менеджера и установки последних обновлений безопасности:
1.2. Установка необходимых пакетов
Установим веб-сервер Apache, PHP с необходимыми расширениями и PostgreSQL:
sudo apt install apache2 php libapache2-mod-php php-pgsql postgresql postgresql-contrib php-curl php-gd php-intl php-mbstring php-xml php-zip php-simplexml php-dom php-json php-soap php-ldap php-exif unzip curl wget git -y
1.3. Настройка PostgreSQL
Создадим базу данных и пользователя для Moodle. Выполните следующие команды в интерактивной консоли PostgreSQL:
sudo -u postgres psql
CREATE ROLE moodleuser LOGIN PASSWORD 'secure_password_here' VALID UNTIL 'infinity';
CREATE DATABASE moodledb OWNER moodleuser ENCODING 'UTF8' LC_COLLATE='en_US.utf8' LC_CTYPE='en_US.utf8' TEMPLATE=template0;
\q
Важно: Замените 'secure_password_here' на надежный пароль. Рекомендуется использовать комбинацию букв, цифр и специальных символов.
1.4. Создание SSL-сертификата
Для безопасного HTTPS-соединения создадим самоподписанный SSL-сертификат:
sudo mkdir -p /etc/ssl/local_certs sudo openssl req -newkey rsa:4096 -nodes -sha256 -keyout /etc/ssl/local_certs/moodle.key -x509 -days 365 -out /etc/ssl/local_certs/moodle.crt
1.5. Настройка виртуального хоста Apache
Создадим конфигурационный файл для нашего сайта Moodle:
sudo mcedit /etc/apache2/sites-available/moodle.conf
Содержимое файла: /etc/apache2/sites-available/moodle.conf
ServerName moodle.example.com
ServerAdmin admin@example.com
DocumentRoot /var/www/html/moodle
# Перенаправление всех HTTP запросов на HTTPS
Redirect permanent / https://moodle.example.com/
ServerName moodle.example.com
ServerAdmin admin@example.com
DocumentRoot /var/www/html/moodle
# SSL настройки
SSLEngine on
SSLCertificateFile /etc/ssl/local_certs/moodle.crt
SSLCertificateKeyFile /etc/ssl/local_certs/moodle.key
# Настройки PHP
SetHandler application/x-httpd-php
# Основная директория Moodle
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
# Безопасность - запрет доступа к критическим файлам
<Files "config.php">
Require all denied
<Files "install.php">
Require all denied
# Оптимизация для Moodle
RewriteEngine on
RewriteBase /
# Правила для чистых URL
# Директория с данными Moodle (moodledata)
Options -Indexes
AllowOverride None
Require all granted
# Запрет выполнения PHP в директории с данными
Require all denied
# Логирование
ErrorLog ${APACHE_LOG_DIR}/moodle_error.log
CustomLog ${APACHE_LOG_DIR}/moodle_access.log combined
# Настройки производительности
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
# Заголовки безопасности
Header always set X-Content-Type-Options nosniff
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
# Настройки PHP через Apache (дополнительно)
php_value upload_max_filesize 128M
php_value post_max_size 128M
php_value max_execution_time 300
php_value memory_limit 256M
1.7. Активируем необходимые модули и наш сайт:
sudo a2ensite moodle.conf
sudo systemctl restart apache2
1.8. Загрузка и настройка Moodle
Скачаем последнюю стабильную версию Moodle и распакуем ее в нужную директорию:
cd /tmp
wget https://download.moodle.org/stable403/moodle-latest-403.tgz (ссылка на дистрибутив moodle)
tar xfz moodle-latest-403.tgz
sudo mv moodle /var/www/html/moodle
sudo mkdir /var/www/moodledata
sudo chown -R www-data:www-data /var/www/html/moodle
sudo chown -R www-data:www-data /var/www/moodledata
sudo chmod -R 755 /var/www/html/moodle
sudo chmod -R 755 /var/www/moodledata
1.9. Настраиваем доступ к серверу
Так как в своей работы мы используем Nginx Proxy Server, то производим необходимую настройку:


2. Установка и настройка Moodle
Дальнейшая установка и настройка Moodle производится через веб-интерфейс
2.1. Откройте браузер и перейдите по адресу https://moodle.example.com:

2.2. Указываем и подтверждаем пути для каталогов Moodle:

2.3. В качестве сервера баз данных указываем PostgreSQL:

2.4. Указываем параметры базы данных, созданные на шаге 1.3:

2.5. Соглашаемся с лицензионным соглашением:

2.6. Убеждаемся что система удовлетворяет всем требованиям, необходимым для установки Moodle:

2.7. Следим за ходом установки:


2.8. Указываем параметры для администратора системы и самой системы дистанционного обучения:



2.9. После всех произведенных действий мы получим чистую систему дистанционного обучения на базе Moodle:

2.10. Осталось выбрать тему оформления, зарегистрировать пользователей, создать пользователей и начать использовать в образовательном процессе:
