Установка СДО Moodle на Linux (CentOS 7) с нуля

Дано: сервер с установленной системой CentOS 7 без GUI (без визуального интерфейса).

Задача: установить на него систему дистанционного обучения Moodle.

Процесс будет состоять из нескольких этапов:
  • Установка веб-сервера Apache
  • Установка PHP и его компонентов
  • Установка системы управления базами данных MySQL (MariaDB)
  • Установка Moodle

1) Устанавливаем веб-сервер Apache следующей командой

yum install httpd

На вопрос "Is this ok [y/d/N]:" вводим "y" и нажимаем Enter.

После установки Apache настроим его на автозагрузку следующей командой:

systemctl enable httpd.service

Для справки: Чтобы при необходимости выключить данную функцию нужно ввести:
systemctl disable httpd.service

Теперь запускаем только что установленный сервис Apache:

systemctl start httpd.service

Для справки: Если понадобится остановить сервис Apache, то:
sudo systemctl stop httpd.service
Если нужно перезапустить Apache:
sudo systemctl restart httpd.service
Проверить статус сервиса Apache:
systemctl is-active httpd.service
Или
systemctl status httpd.service

Если сервис не стартует, то можно сделать тест командой:
httpd -t
Она покажет в каких файлах ошибки.

2) Установка PHP и необходимых модулей

Запускаем следующую команду:

sudo yum install php php-common php-mysql php-gd php-intl php-curl php-xmlrpc php-ldap php-apc php-mbstring php-dom php-soap

Для справки: чтобы посмотреть версию PHP, набираем:
php -v

После установки PHP необходимо перезагрузить Apache сервис командой:
sudo systemctl restart httpd.service

Для справки: чтобы посмотреть все имеющиеся модули PHP вводим команду:
sudo yum search php-

Чтобы посмотреть более подробную информацию о конкретном модуле, вводим:
sudo yum info php-pgsql
Вместо "php-pgsql" вводим название нужного модуля.

Протестируем работу PHP на нашем сервере:
Для этого создадим файл test.php:
sudo vi /var/www/html/test.php

В него добавим следующие строки:
<?php
   phpinfo(INFO_GENERAL);
?>

Если IP неизвестен, то можем определить IP адрес нашего сервера командой, выводящей подробную информацию:
ip a show eth0

Показать только IP адрес:
ip addr list eth0 | awk '/inet /{sub(/\/[0-9]+/,"",$2); print $2}'

Теперь через браузер пытаемся протестировать созданный файл, для этого переходим по адресу <ваш IP>/test.php

Если адрес не отвечает, необходимо настроить файерволл (firewall).
Т.к. в CentOS 7 iptables заменили на firewalld, то вводим следующие команды, чтобы открыть 80 порт:
firewall-cmd --zone=public --add-port=http/tcp
firewall-cmd --zone=public --add-port=http/tcp --permanent

3) устанавливаем MySQL (MariaDB)

Т.к. CentOS 7 не включает в себя MySQL-server, то устанавливаем предлагаемый MariaDB.
yum install mariadb-server mariadb

Для справки: Даже если Вы введете "yum install mysql" все равно будет установлена MariaDB.

Запускаем сервис:
sudo systemctl start mariadb.service

Устанавливаем автозагрузку MariaDB сервиса:
sudo systemctl enable mariadb.service

Для справки:
Остановка сервисаMariaDB:
sudo systemctl stop mariadb.service
Перезапуск:
sudo systemctl restart mariadb.service
Отключение:
sudo systemctl disable mariadb.service
Проверка статуса
sudo systemctl is-active mariadb.service
Либо:
systemctl status mariadb

Настраиваем mariadb по команде (эта же команда для изменения настроек и пароля):
sudo /usr/bin/mysql_secure_installation

При первом запуске текущий пароль пустой, поэтому просто нажимаем Enter.
Далее соглашаемся на установку пароля и вводим новый пароль (при вводе пароль отображаться не будет).
На вопрос "Remove anonymous users?" отвечаем да (y).
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Чтобы войти в режим работы с MySQL и протестировать его, вводим команду:
mysql -u root -p

Посмотрим имеющиеся базы:
Show databases;

Чтобы выйти из режима MySQL (MariaDB) вводим quit.

Рекомендуется перезагрузить сервер командой reboot.

Теперь необходимо создать базу данных для Moodle и настроить права для пользователя, под которым Moodle будет использовать БД.

Переходим в режим работы с MySQL (mysql -u root -p)
Выполняем следующие команды.

Создание базы:
CREATE DATABASE moodledb DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Создаем пользователя, указываем ему пароль и даем привилегии на созданную базу:
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES, DROP,INDEX,ALTER ON moodledb.* TO moodleuser@localhost IDENTIFIED BY 'yourpassword';
FLUSH PRIVILEGES;
EXIT

Перезагружаем сервис (потребуется ввести пароль админа базы):
mysqladmin -p reload

4) Устанавливаем Moodle

Предварительно установим необходимые для мудл модули, особенно если CentOS устанавливалась в минимальной конфигурации:
yum install setuptool system-config-securitylevel-tui authconfig system-config-network-tui ntsysv

По команде setup можно вызвать графический интерфейс по работе с конфигурацией аутентификации.

Далее скачаем файлы Moodle при помощи утилиты wget.
Если утилита wget не установлена, то выполняем команду:
yum install wget

Переходим в папку, куда будем скачивать архив Moodle:
cd /usr/src/

Для того, чтобы узнать откуда скачивать Moodle, переходим на сайт http://download.moodle.org/ и узнаем ссылку для скачивания нужной (или последней) версии (копируем прямую ссылку на архив)

Теперь скачиваем архив:
wget https://download.moodle.org/download.php/direct/stable29/moodle-2.9.1.tgz

Файл будет сохранен в вышеуказанную папку. Чтобы это увидеть, можно ввести команду ls.

Теперь скаченный архив нужно распаковать:
tar -zxvf moodle-latest-27.tgz

Далее перемещаем разархивированную папку moodle в корневой каталог веб-сервера (/var/www/html/):
mv /usr/src/moodle /var/www/html/

Устанавливаем права на папку для Apache:
chown -R apache:apache /var/www/html/moodle/

Теперь создадим папку для хранения данных Moodle. Она должна быть не доступна из веб и располагаться вне директории /var/www/html/:
mkdir /var/moodle
mkdir /var/moodle/data

Также указываем владельца и права на папку:
chown -R apache:apache /var/moodle
chmod -R 755 /var/moodle

Далее создадим собственный конфигурационный файл (config.php), основываясь на файле config-dist.php.

Для этого переходим в каталог Moodle:
cd /var/www/html/moodle/

И создаем копию файла config-dist.php:
cp config-dist.php config.php

Открываем файл на редактирование и корректируем следующие строки.
Информация о базе данных (указываем свои данные):
$CFG->dbtype    = 'mariadb';     
$CFG->dbname    = 'moodledb';    
$CFG->dbuser    = 'moodleusr';  
$CFG->dbpass    = 'moodlepass'

Также настраиваем параметр URL адреса для доступа к Moodle (указываем либо домен, либо IP адрес):
$CFG->wwwroot   = 'http://192.168.0.10/moodle';

Указываем путь к каталогу с данными:
$CFG->dataroot  = '/var/moodle/data';

Далее продолжим инсталляцию, уже перейдя непосредственно на только что установленный сайт Moodle через браузер.

Вводим в браузере указанный ранее адрес (домен или IP), например, http://192.168.0.10/moodle

Нам предложат принять условия использования Moodle - принимаем их.



Далее увидим список используемых компонентов с указанием соответствия версий и что рекомендуется дополнительно установить.
Нажимаем продолжить и ждем завершения установки.
Далее создаем администратора и указываем другие параметры согласно форме.

Если в дальнейшем нужно иметь возможность устанавливать, например, темы из веб-интерфейса, то необходимо дать право записи на папку тем (также можно сделать это для папок плагинов):
chcon -R unconfined_u:object_r:httpd_sys_rw_content_t:s0 /var/www/html/moodle/theme

То же для папки типов вопросов (чтобы устанавливать дополнительные типы):
chcon -R unconfined_u:object_r:httpd_sys_rw_content_t:s0 /var/www/html/moodle/question/type

Для корректной работы Moodle также необходимо настроить периодический запуск специального файла - cron.php. Способы могут быть различные, например, такой (устанавливает запуск каждые 10 минут):

sudo crontab -eu apache
*/10 * * * * /usr/bin/php /path/to/your/moodle/cli/cron.php > /dev/null
Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.

3 комментария :

  1. А если на сервере используется nginx а не apache команды
    chcon -R unconfined_u:object_r:httpd_sys_rw_content_t:s0 /var/www/html/moodle/theme
    chcon -R unconfined_u:object_r:httpd_sys_rw_content_t:s0 /var/www/html/moodle/question/type
    меняются?

    ОтветитьУдалить
  2. Подскажите, пожалуйста, если в домене стоит site.ru/moodle/* , а хочется, чтобы все действия происходили через site.ru/* минуя /moodle/ необходимо удалить папку moodle или возможно настроить какую-либо переадресацию?
    На сервере директория выглядит следующим образом /var/www/html/moodle/*

    ОтветитьУдалить
    Ответы
    1. По linux* подобным системам к сожалению уже не помогу с настройкой, т.к. потом были проблемы в связи с отсутствием нормальных спецов по линукс, плюнули и всё настроили на Windows - IIS - MS SQL Server (работает уже несколько лет исправно). Если правильно понимаю, по Вашему вопросу нужно искать инструкции по настройке переадресации в Apache.

      Удалить