Moodle
Платформа для онлайн обучения. Более подробно напишу после установки на реальное железо. На виртуалке уже малость потестил. Будет краткая инструкция. Многое будет пропущено ибо на железе уже стоят многие нужные элементы. Такие, как апач, пхп, эскуэль, пхпмайадмин, настроены виртуальные хосты, сертификат безопасности, смтп - для отправки почты, почти все что нужно. Поскольку на этом серваке уже жил вордпресс, думаю проблем не будет, но если возникнут опишу. Половина работы уже сделана, осталось установить, настроить и самое главное тестить. Планирую поставить сие добро на нульсовую машину с поддержкой почтового сервака.
Доменное имя
Имя куплено, поэтому у регистратора добавил подзону.
Подключится к серверу
Ебсесно по ssh, ну можно и через webmin. Некоторые вещи делаю параллельно то там то тут.
Создать каталог
Тут будет жить сайт, желательно там, где много места, (кстати база данных то же должна жить на широком дисковом пространстве, это так памятка про SQL ):
sudo mkdir /home/sklad/www/moodle.wildserver.ru
Виртуальный хост
Сразу по шаблону сделать виртуальный хост:
sudo nano /etc/apache2/sites-available/moodle.wildserver.ru.conf
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName moodle.wildserver.ru
ServerAlias www.moodle.wildserver.ru
# DocumentRoot /home/USER/www/moodle.wildserver.ru
DocumentRoot /home/sklad/www/moodle.wildserver.ru
CustomLog ${APACHE_LOG_DIR}/moodle.wildserver.ru.access.log combined
ErrorLog ${APACHE_LOG_DIR}/moodle.wildserver.ru.error.log
#<Directory "/home/USER/www/moodle.wildserver.ru">
<Directory "/home/sklad/www/moodle.wildserver.ru">
Options -Includes -Indexes -ExecCGI
AllowOverride All
# Добавил что бы читалось из каталога с сайтом иначе форбиден
# Насколько это правильно х.з.
Require all granted
</Directory>
RewriteEngine on
# склейка зеркал сайта
# Редирект с домена www на домен без www
RewriteCond %{HTTP_HOST} ^www.courses.wildserver\.net$ [NC]
RewriteRule ^(.*)$ https://moodle.wildserver.ru$1 [R=301,L]
RewriteCond %{SERVER_NAME} =moodle.wildserver.ru [OR]
RewriteCond %{SERVER_NAME} =www.moodle.wildserver.ru
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
Сохранить файл Ctrl+O Enter, закрыть Ctrl+X
Протестить конфигурацию Apache
sudo apache2ctl configtest
Включить виртуальный хост
sudo a2ensite moodle.wildserver.ru.conf
Enabling site moodle.wildserver.ru.
To activate the new configuration, you need to run:
systemctl reload apache2
Перезагрузить настройки Apache
Как подсказывают так и сделаем:
sudo systemctl reload apache2
Посмотреть активные виртуальные сервера
sudo apache2ctl -S
Смотрим список и находим то что только что включили.
Проверка работы виртуального хоста
Тестовая страница
Для проверки и получения сертификата создать страничку html:
sudo nano /home/sklad/www/moodle.wildserver.ru/index.html
<!DOCTYPE html>
<html>
<head>
<title>moodle.wildserver.ru</title>
</head>
<body>
<p>Привет ты меня видишь.</p>
</body>
</html>
Сохранить файл Ctrl+O Enter, закрыть Ctrl+X
Зайти на сайт
Пока только по http скоро будет зашифровано.
А фих там было я туда попал, высветилась моя основная страница, а адрес то что надо. Некогда разбираться. Надо сертификат получить. Думаю после этого все будет отображено. Через пень колоду, сертификат был получен.
Все нашел ошибку, добавил комменты в конфиг. Но это в моем случае, в других можно и без этого разрешения.
Получение сертификата
Проверочный прогон
sudo certbot certonly --dry-run -d moodle.wildserver.ru -d www.moodle.wildserver.ru
Нажать 1 , чтоб получить автонастройки виртуального хоста ssl
Получить сертификат
sudo certbot certonly -d moodle.wildserver.ru -d www.moodle.wildserver.ru
Создать виртуальный хост с сертификатом
sudo nano /etc/apache2/sites-available/moodle.wildserver.ru-le-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName moodle.wildserver.ru
ServerAdmin [email protected]
ServerAlias www.moodle.wildserver.ru
DocumentRoot /home/sklad/www/moodle.wildserver.ru
CustomLog ${APACHE_LOG_DIR}/moodle.wildserver.ru.access.log combined
ErrorLog ${APACHE_LOG_DIR}/moodle.wildserver.ru.error.log
<Directory "/home/sklad/www/moodle.wildserver.ru">
Options -Includes -Indexes -ExecCGI
AllowOverride All
# Добавил что бы читалось из каталога с сайтом иначе форбиден
# Насколько это правильно х.з.
Require all granted
</Directory>
RewriteEngine on
# склейка зеркал сайта
# Редирект с домена www на домен без www
RewriteCond %{HTTP_HOST} ^www.courses.wildserver\.net$ [NC]
RewriteRule ^(.*)$ https://moodle.wildserver.ru$1 [R=301,L]
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/moodle.wildserver.ru/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/moodle.wildserver.ru/privkey.pem
</VirtualHost>
</IfModule>
Сохранить файл Ctrl+O Enter, закрыть Ctrl+X
Повторить действия по активации хоста только с конфигом moodle.wildserver.ru-le-ssl.conf
Подготовка к установке
Теперь можно приступить к установке обучающей платформы.
Идем сюда https://download.moodle.org/releases/latest/ берем нужную версию. Разархивировать, разместить содержимое полученного каталога в нужное место. Нужное место это /home/sklad/www/moodle.wildserver.ru
Для терминала делаем следующие телодвижения:
Скачиваем дистрибутив
Ссылку на архив брать выше по адресу.
wget https://download.moodle.org/download.php/direct/stable403/moodle-4.3.2.tgz
Разархивировать
tar -xvf moodle-4.3.2.tgz
Перенести в нужный каталог файлы
Есть скрытые фалы относящиеся к гитхаб, то же перекину мало ли через репу релизы можно будет получать.
sudo cp -prT ~/moodle/ /home/sklad/www/moodle.wildserver.ru/
Удалить не нужное
rm moodle-4.3.2.tgz
rm -r moodle
Дать права на каталоги и файлы Apache
sudo chown -R www-data:www-data /home/sklad/www/moodle.wildserver.ru
Создать пользователя базы данны SQL
Вспомнить что стоит
sudo mysqld --version
Создать пользователя Moodle и базу данных
Зайти в phpmyadmin
надо будет установить Adminer, для почтового сервера ставил уже
Сделать нового юзверя moodle
имя и пароль на свое усмотрение, поставить галку - Создать базу данных с таким же именем и предоставить на неё все привилегии.
Установка Moodle
А , о, удалить или переименовать тестовый индекс файл.
sudo rm /home/sklad/www/moodle.wildserver.ru/index.html
Перейти на сайт и начать отвечать на вопросы.
Ошибка on line 4392
Но нет так все просто давненько не обновлялась система. При обращении по адресу вылетела ошибка.
Parse error: syntax error, unexpected ':', expecting ')' in /home/sklad/www/moodle.wildserver.ru/lib/outputrenderers.php on line 4392
Входе выяснения причин ответ оказался прост - версия php-fpm
не устраивает данный продукт. Будем апгрейдиться.
Установка FPM
sudo apt install php8.3-fpm
Выключить старую версию FPM
Посмотрев содержимое каталога /etc/apache2/conf-enabled
понял, что установлена аж php7.4-fpm
sudo a2disconf php7.4-fpm
Включить FPM 8.3
sudo a2enconf php8.3-fpm
Перезагрузить Apache
sudo systemctl reload apache2
Удалить старую версию FPM
Если есть желание.
sudo apt purge php7.4-fpm
Но лучше не удалять,потому что некоторые приложения работающие только на более старых версиях могут выдать ошибку. Например Piwigo взбрыкнул.
Продолжаем установку
Теперь то все хорошо, зашел, можно начать отвечать на вопросы.
- Выбрать язык
- Осечка проверка не пройдена
Добавить расширение PHP cURL и Zip
sudo apt install php8.3-{curl,zip}
жмем обновить и… проверка пройдена
- Подтверждение пути установки
Судя по рекомендациям надо куда запихать, чтоб враг не нашел. Например сюда:
/home/sklad/moodle/moodledata
Что не получилось? Поэтому создать каталог /home/sklad/moodle/
и назначить хозяином Апач:
sudo mkdir /home/sklad/moodle
sudo chown www-data:www-data /home/sklad/moodle
- Выбрать базу данных.
Но мы та уже знаем, тута смотрели
- Настройки базы данных
Заполнить поля.
Если нет ошибок прыгаем далее
Очередная ошибка
Ошибка: обнаружены проблемы с драйвером базы данных.
Администратору сайта следует проверить конфигурацию сервера
Расширение MySQLi для PHP сконфигурировано неверно, в результате чего невозможно установить связь с сервером MySQL. Проверьте настройки в файле php.ini или перекомпилируйте PHP.
Скорее всего связана с переходом на новы php8.3
Потому что пробуя зайти на phpmyadmin
получаю такую ошибку:
Расширение mysqli не найдено. Пожалуйста, проверьте ваши настройки PHP. Смотрите [a@doc/html/faq.html#faqmysql@documentation]our documentation для дополнительной информации.
Посмотреть используемый php.ini
Скорее всего, что то с настройками php.ini раньше то он был настроен для 7.4 версии, а теперь дефолтный.
Проверить какой конфиг используется:
php --ini
еще вариант php -i | grep 'php.ini'
и дело верняк для того чтобы точно посмотреть что на самом деле читается это создать страничку с кодом и обратиться к нему, в будущем все равно пригодится.
sudo nano /home/sklad/www/moodle.wildserver.ru/test.php
<?php phpinfo(); ?>
Сохранить файл Ctrl+O Enter, закрыть Ctrl+X
Сравнить старый и новый конфиг
Не придумав ничего лучше решил сравнить два конфига /etc/php/7.4/apache2/php.ini
/etc/php/8.3/fpm/php.ini
Попутно найдя различия читать мануал по php
Добавил или изменил в /etc/php/8.3/fpm/php.ini
:
; Было пусто после знака равно добавил из старова конфига
disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
; Было 30 после знака равно добавил из старова конфига
max_execution_time = 1500
; Было 128 после знака равно добавил из старова конфига
memory_limit = 512M
; Было 8M после знака равно добавил из старова конфига. ДЛЯ ТОГО ЧТОБЫ ЗАГУЖАТЬ БОЛЬШИЕ ФАЙЛЫ
post_max_size = 700M
; Было 2M после знака равно добавил из старова конфига. ДЛЯ ТОГО ЧТОБЫ ЗАГУЖАТЬ БОЛЬШИЕ ФАЙЛЫ
; ЭТО ЗНАЧЕНИЕ ДОЛЖНО БЫТЬ МЕНЬШЕ post_max_size
upload_max_filesize = 650M
; Было пустым после знака равно добавил из старова конфига. ДЛЯ ОТПРАВКИ ПОЧТЫ
sendmail_path = /usr/bin/msmtp -t
; Раскомментировал
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
; Из сарого конфига дописано не помню зачем
;Добавлено для ioncube_loader
zend_extension=/usr/lib/php/20190902/ioncube_loader_lin_7.4.so
extension=/usr/lib/php/20190902/mcrypt.so
После изменений перезагрузить Apache:
sudo systemctl reload apache2
Не помогло, роем дальше.
Решение
Ларчик открывался просто. Надо установить модуль mysqli
. Впринципе логично 😆
sudo apt install php8.3-mysqli
На всяк случай перезагрузить Apache
sudo systemctl reload apache2
Хорошо еще, что в дебри не полез, ша бы наворотил.
Ошибки в phpmyadmin
После установки php 8.3 и нужных модулей вывалила целая куча ошибок. Снести бы этот phpmyadmin да поставить Adminer, чтоб избавиться от головной боли. Так ведь нет, пойду до конца и решу данную проблему. Попробую для начала обновить phpmyadmin
Обновление версии phpmyadmin
По сути это установка phpmyadmin
Вспомнить, где он живет.
find / -iname "phpmyadmin*" -type d
/var/lib/mysql/phpmyadmin
/var/lib/phpmyadmin
/usr/share/phpmyadmin
/usr/share/phpmyadmin/vendor/phpmyadmin
Просмотрев каталоги понял, что тут /usr/share/phpmyadmin
Скачать с сайта последнюю версию с поддержкой всех языков:
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.zip
Распаковать:
unzip phpMyAdmin-5.2.1-all-languages.zip
Схранить старую версию:
sudo mv /usr/share/phpmyadmin /usr/share/phpmyadmin.old
Перенести новую версию на то же место, где жила старая версия:
sudo mv phpMyAdmin-5.2.1-all-languages /usr/share/phpmyadmin
Поменять владельца каталога и файлов:
sudo chown -R www-data:www-data /usr/share/phpmyadmin
В отличии от установки добавить файл конфига из старой версии:
sudo cp /usr/share/phpmyadmin.old/config.inc.php /usr/share/phpmyadmin
phpmyadmin обновился но хочет вот что:
При работе с многобайтными кодировками без установленного PHP расширения mbstring phpMyAdmin не в состоянии производить корректное разбиение строк, что может привести к непредсказуемым результатам.
Дадим ему это:
sudo apt install php8.3-mbstring
И по традиции презапустить веб сервер:
sudo systemctl reload apache2
Все замечательно многое обновил, теперь надо вернуться к основной цели установки Moodle
Продолжение установки
Что интересно на виртуальной машине с новой версией Debian 12 никаких побочных эффектов не было, но оно и понятно, давно не обновлял , но что приятно все совместимо и может работать дальше. Это вам не виндавс какой-то 😜
Вылетела очередная ошибка:
Moodle requires the xml PHP extension. Please install or enable the xml extension.
Похоже опять какого то модуля не хватает, вот не мог он раньше про это сказать?
sudo apt install php8.3-xml
sudo systemctl reload apache2
Вроде запустилось, но не уверен, что будут еще сюрпризы.
- Авторские права и пользовательское соглашение
Наблюдаю следующую картинку, соглашаюсь, тут без вариантов.
- Проверка сервера
Наконец то дошел до этого пункта, а вот раньше нельзя было всеэто проверить и написать или мануал всетаки надо читать внимательнее? 😆
С эти листом требований все просто нажать на ссылку над замечанием и прочитать, что нужно сделать. Все довольно просто. Но не все команды современные они устарели, поэтому тута то что ннадо. 😜
Не хватает очередных модулей php
The GD extension is now required by Moodle for image conversion.
sudo apt install php8.3-gd
Intl extension is required to improve internationalization support, such as locale aware sorting and international domain names.
sudo apt install php8.3-intl
sudo apt install php8.3-soap
PHP setting max_input_vars must be at least 5000.
sudo nano /etc/php/8.3/fpm/php.ini
Найти строку Ctrl+W max_input_vars
рскомментировать и исправить значение на 5000
. Сохранить файл Ctrl+O Enter, закрыть Ctrl+X
Перезапустить службы после обновления конфигов:
sudo systemctl reload apache2
sudo service php8.3-fpm restart
Почему то один пункт не выполнился пришлось выполнить команду по мануалу. И опять все перезапустить.
sudo apt install php-soap
И наконец то все пункты требований выполнены:
Нажать продолжить. Довольно продолжительная процедура, но все зависит от мощности железа. На мой взгляд с 8 версией мускула стало все медленнее. На виртуалке все было быстрее.
Пропадала даже картинка типа защищенная связь прервалась, после нажатия кнопки обновить страницу в браузере появилась надпись, что сайт обновляется обратитесь поздже.
- Проверка плагинов
Длиннущий спосок с плагинами в самом низу нажать кнопку Обновить Moodle
И покурить ещё немного
- Обновление
Не знаю почему, но на виртуалке список обновлялся и рос, на серваке опять произошла ошибка соединения и после обновления страницы получился длинный список. В конце нажать кнопку Продолжить
.
- Данные пользователя Админ
Заполнить поля и нажать кнопку Обновить профиль
- Настройки главной страницы
- Заполнить регистрационную форму
Заполнить поля и нажать кнопку зарегистрировать сайт
Впринципе можно было и пропустить данный раздел. Придет письмо с благодарностью и тому подобное.
Далее надо тестить и заполнять контент.
По административному разделу может быть напишу.
sudo certbot certonly –dry-run -d moodle.wildserver.ru -d www.moodle.wildserver.ru
Комментарии