Дано:
сервер с установленной системой 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
Далее увидим список используемых компонентов с указанием
соответствия версий и что рекомендуется дополнительно установить.
Нажимаем
продолжить и ждем завершения
установки.
Далее создаем
администратора и указываем другие параметры согласно форме.
Если в дальнейшем
нужно иметь возможность устанавливать, например, темы из веб-интерфейса, то
необходимо дать право записи на папку тем (также можно сделать это для папок
плагинов):
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
Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.
А если на сервере используется 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
меняются?
Подскажите, пожалуйста, если в домене стоит site.ru/moodle/* , а хочется, чтобы все действия происходили через site.ru/* минуя /moodle/ необходимо удалить папку moodle или возможно настроить какую-либо переадресацию?
ОтветитьУдалитьНа сервере директория выглядит следующим образом /var/www/html/moodle/*
По linux* подобным системам к сожалению уже не помогу с настройкой, т.к. потом были проблемы в связи с отсутствием нормальных спецов по линукс, плюнули и всё настроили на Windows - IIS - MS SQL Server (работает уже несколько лет исправно). Если правильно понимаю, по Вашему вопросу нужно искать инструкции по настройке переадресации в Apache.
Удалить