Сегодня сложно представить учебный процесс без использования цифровых технологий. Внедрение сервисов вроде Google Класс стало привычным. Его аналогом среди популярных платформ для дистанционного обучения выделяется Moodle. Система является свободно распространяемой и очень функциональной. Её мы и будем использовать для разворачивания собственной системы дистанционного обучения. В качестве базы данных мы выберем PostgreSQL вместо MySQL. Это обеспечит лучшую масштабируемость и надежность. Так как наш сервер будет работать за Nginx Proxy Server, поэтому нам нужен самоподписанный SSL-сертификат для защищенного соединения.

💡 Присоединяйтесь к нашим сообществам!

Будьте в курсе новых статей, обновлений и полезных материалов:

Moodle (Modular Object-Oriented Dynamic Learning Environment) — это свободная система управления обучением (LMS — Learning Management System), написанная на PHP и распространяемая под лицензией GPL.

Предварительные требования

  1. Сервер с Debian 12 уже подготовлен и настроен.
  2. Установлены и настроены все необходимые компоненты, включая sudo.

1. Подготовка сервера к установке и настройке Moodle

1.1. Обновление системы

Начнем с обновления пакетного менеджера и установки последних обновлений безопасности:

sudo apt update
sudo apt full-upgrade -y
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:

<VirtualHost *:80>
    ServerName moodle.example.com
    ServerAdmin admin@example.com
    DocumentRoot /var/www/html/moodle

    # Перенаправление всех HTTP запросов на HTTPS
    Redirect permanent / https://moodle.example.com/
</VirtualHost>

<VirtualHost *:443>
    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
    <FilesMatch \.php$>
        SetHandler application/x-httpd-php
    </FilesMatch>

    # Основная директория Moodle
    <Directory /var/www/html/moodle>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted

        # Безопасность - запрет доступа к критическим файлам
        <Files "config.php">
            Require all denied
        </Files>
        <Files "install.php">
            Require all denied
        </Files>

        # Оптимизация для Moodle
        <IfModule mod_rewrite.c>
            RewriteEngine on
            RewriteBase /
            # Правила для чистых URL
        </IfModule>
    </Directory>

    # Директория с данными Moodle (moodledata)
    <Directory /var/www/moodledata>
        Options -Indexes
        AllowOverride None
        Require all granted
        # Запрет выполнения PHP в директории с данными
        <FilesMatch \.php$>
            Require all denied
        </FilesMatch>
    </Directory>

    # Логирование
    ErrorLog ${APACHE_LOG_DIR}/moodle_error.log
    CustomLog ${APACHE_LOG_DIR}/moodle_access.log combined

    # Настройки производительности
    <IfModule mod_deflate.c>
        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
    </IfModule>

    # Заголовки безопасности
    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
</VirtualHost>
1.7. Активируем необходимые модули и наш сайт
sudo a2enmod ssl rewrite
sudo a2ensite moodle.conf
sudo systemctl restart apache2
1.8. Загрузка и настройка Moodle

Скачаем последнюю стабильную версию Moodle и распакуем ее в нужную директорию:

cd /tmp
wget https://download.moodle.org/stable403/moodle-latest-403.tgz
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, то производим необходимую настройку:

Настройка Nginx Proxy Server для Moodle

Настройка Nginx Proxy Server для Moodle (продолжение)

2. Установка и настройка Moodle

Дальнейшая установка и настройка Moodle производится через веб-интерфейс.

2.1. Откройте браузер и перейдите по адресу https://moodle.example.com:

Стартовая страница установки Moodle

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

Указание путей для каталогов Moodle

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

Выбор PostgreSQL в качестве сервера баз данных

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

Параметры базы данных для Moodle

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

Лицензионное соглашение Moodle

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

Проверка требований системы перед установкой Moodle

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

Ход установки Moodle

Продолжение установки Moodle

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

Параметры администратора Moodle

Параметры системы дистанционного обучения

Завершение настройки Moodle

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

Чистая система дистанционного обучения Moodle

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

Система Moodle с темой оформления Academi

Видеоинструкции

🚀 Понравилась статья?

Подписывайтесь на наши соцсети, чтобы не пропустить новые полезные материалы!

Следующая запись Предыдущая запись