Представь, что тебе нужно развернуть полноценную систему дистанционного обучения для университета или корпоративных курсов. Moodle — это мощное, гибкое и бесплатное решение, но его установка требует понимания веб-стэка. Давай разберем процесс установки Moodle на Ubuntu (включая актуальную версию 22.04) и Debian шаг за шагом, как это делает Senior DevOps.
Подготовка сервера и установка LAMP-стека
Перед установкой Moodle на Ubuntu нам нужен работающий веб-сервер, PHP и база данных. Мы будем использовать классический LAMP (Linux, Apache, MySQL, PHP).
1. Обновление системы и установка Apache
sudo apt update && sudo apt upgrade -y
sudo apt install apache2 -y
sudo systemctl enable apache2
sudo systemctl start apache2
2. Установка MySQL/MariaDB для Moodle
Moodle поддерживает несколько СУБД, но мы выберем MariaDB как более современную и производительную альтернативу MySQL.
sudo apt install mariadb-server mariadb-client -y
sudo mysql_secure_installation
# Создаем базу данных для Moodle
sudo mysql -u root -p
# В консоли MySQL выполняем:
CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON moodle.* TO 'moodleuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
3. Установка PHP и необходимых модулей
Moodle 5 требует PHP 8.0 или выше. Для Ubuntu 22.04 мы установим PHP 8.1 со всеми необходимыми расширениями.
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
# Установка PHP 8.1 и всех необходимых модулей
sudo apt install php8.1 php8.1-cli php8.1-common php8.1-curl \
php8.1-mbstring php8.1-xml php8.1-zip php8.1-gd php8.1-mysql \
php8.1-intl php8.1-soap php8.1-bcmath php8.1-ldap php8.1-opcache \
php8.1-xmlrpc php8.1-pspell php8.1-json php8.1-fpm -y
# Проверяем версию PHP
php --version
Скачивание и настройка Moodle 5 на Ubuntu
4. Загрузка и распаковка Moodle
cd /var/www/html
sudo wget https://download.moodle.org/download.php/direct/stable405/moodle-latest-405.tgz
sudo tar -xzf moodle-latest-405.tgz
sudo rm moodle-latest-405.tgz
# Создаем директорию для данных
sudo mkdir /var/moodledata
sudo chown -R www-data:www-data /var/moodledata
sudo chmod -R 755 /var/moodledata
5. Настройка прав доступа
sudo chown -R www-data:www-data /var/www/html/moodle
sudo chmod -R 755 /var/www/html/moodle
sudo find /var/www/html/moodle -type f -exec chmod 644 {} \;
6. Конфигурация виртуального хоста Apache
Создаем конфигурационный файл для нашего Moodle-сайта:
sudo nano /etc/apache2/sites-available/moodle.conf
Добавляем следующую конфигурацию:
<VirtualHost *:80>
ServerAdmin admin@yourdomain.com
ServerName moodle.yourdomain.com
DocumentRoot /var/www/html/moodle
<Directory /var/www/html/moodle>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/moodle_error.log
CustomLog ${APACHE_LOG_DIR}/moodle_access.log combined
</VirtualHost>
sudo a2ensite moodle.conf
sudo a2enmod rewrite
sudo systemctl restart apache2
Завершение установки через веб-интерфейс
7. Веб-установщик Moodle
Открой браузер и перейди по адресу твоего сервера (http://server-ip или http://moodle.yourdomain.com). Запустится мастер установки:
Шаги веб-установки:
- Выбор языка — русский или английский
- Проверка окружения — убедись, что все требования отмечены зеленым
- Путь к данным — укажи
/var/moodledata - Настройка базы данных:
- Тип: MariaDB
- Хост: localhost
- База: moodle
- Пользователь: moodleuser
- Пароль: твой_пароль
- Настройка администратора — создай учетную запись админа
- Настройка сайта — название, описание, часовой пояс
Оптимизация и настройка после установки
8. Настройка PHP для Moodle
Редактируем php.ini для оптимальной работы Moodle:
sudo nano /etc/php/8.1/apache2/php.ini
Найди и измени следующие параметры:
max_execution_time = 300
max_input_time = 300
memory_limit = 256M
post_max_size = 100M
upload_max_filesize = 100M
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
sudo systemctl restart apache2
9. Настройка cron-заданий
Moodle требует регулярного выполнения cron-заданий для отправки уведомлений, обработки очередей и т.д.
sudo crontab -u www-data -e
Добавь строку (выполнять каждые 5 минут):
*/5 * * * * /usr/bin/php /var/www/html/moodle/admin/cli/cron.php > /dev/null
Особенности установки Moodle на Debian
Процесс установки Moodle на Debian практически идентичен Ubuntu, но есть небольшие отличия:
| Аспект | Ubuntu 22.04 | Debian 11/12 |
|---|---|---|
| Репозиторий PHP | ppa:ondrej/php | deb.sury.org (требуется добавление) |
| PHP по умолчанию | 8.1 (через PPA) | 7.4 (Debian 11) / 8.2 (Debian 12) |
| Имя службы Apache | apache2 | apache2 (аналогично) |
sudo apt -y install apt-transport-https lsb-release ca-certificates curl и sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
Часто задаваемые вопросы (FAQ)
Какие системные требования для Moodle 5?
Минимальные требования: PHP 8.0+, MySQL 5.7+ или MariaDB 10.4+, 256MB RAM (рекомендуется 1GB+), 5GB дискового пространства. Для production-среды рекомендуется минимум 2 CPU ядра и 4GB RAM.
Как обновить Moodle на Ubuntu до новой версии?
1. Сделай полный бэкап базы данных и файлов. 2. Перейди в режим обслуживания. 3. Обнови файлы через Git или архив. 4. Запусти sudo -u www-data php admin/cli/upgrade.php. 5. Проверь логи и отключи режим обслуживания.
Почему не работает отправка почты из Moodle?
Проверь: 1) Настройки SMTP в "Сервер → Почта → Настройки SMTP". 2) Блокировку портов фаерволом. 3) Логи PHP и Apache. 4) Рекомендуется использовать внешний SMTP (Gmail, SendGrid, Mailgun) вместо sendmail.
Как оптимизировать производительность Moodle?
Включи кэширование (Redis/Memcached), настрой OPcache, используй CDN для статики, включи сжатие Gzip в Apache, оптимизируй базу данных, установи правильные значения session.gc_probability в PHP.
Заключение
Установка Moodle на Ubuntu или Debian — это процесс, требующий внимания к деталям, но вполне выполнимый даже для начинающих администраторов. Ключевые моменты: правильная настройка LAMP-стека, адекватные права доступа, оптимизация PHP и регулярное обслуживание через cron.
Теперь у тебя есть полностью рабочая система дистанционного обучения. Дальнейшие шаги: настройка тем, установка дополнительных плагинов, интеграция с внешними системами и тонкая настройка под конкретные образовательные задачи.