Поиск по сайту:

Как установить Moodle 3.2 на CentOS 7


На этой странице

  1. Шаг 1. Установите Nginx
  2. Шаг 2. Установка и настройка PHP-FPM
  3. Шаг 3. Установка и настройка сервера MariaDB
  4. Шаг 4. Загрузите и настройте Moodle
  5. Шаг 5. Настройка SSL и виртуального хоста
  6. Шаг 6. Настройка SELinux и Firewalld
  7. Шаг 7. Установите Moodle
  8. Шаг 8. Тестирование
  9. Справочник

Moodle — это программное обеспечение для электронного обучения с открытым исходным кодом, написанное на PHP. Он используется для дистанционного обучения, проектов электронного обучения и смешанного обучения. Moodle — это аббревиатура от «Модульная объектно-ориентированная динамическая среда обучения», разработанная Мартином Дугиамасом и выпущенная под лицензией GPL, чтобы помочь преподавателям и преподавателям создавать онлайн-курсы с упором на взаимодействие и совместно созданный контент.

В этом уроке я пошагово покажу вам, как установить последнюю стабильную версию Moodle, которая в настоящее время является Moodle 3.2. Moodle будет работать под управлением веб-сервера Nginx, используя сервер базы данных MariaDB и PHP-FPM7.0. В качестве операционной системы мы будем использовать CentOS 7.

Предпосылка

  • Сервер CentOS 7
  • Привилегии root

Что мы будем делать:

  1. Установите Nginx
  2. Установка и настройка PHP-FPM
  3. Установка и настройка MariaDB
  4. Загрузить и настроить Moodle
  5. Настройка SSL и виртуального хоста
  6. Настройка SELinux и Firewalld
  7. Установка Moodle
  8. Тестирование

Шаг 1 — Установите Nginx

На этом этапе мы установим Nginx из репозитория epel. По умолчанию Nginx недоступен в репозитории Centos, поэтому нам нужно добавить новый репозиторий epel-repository для установки Nginx.

Установите epel-репозиторий с помощью команды yum.

yum -y install epel-release

Далее устанавливаем Nginx из epel-репозитория.

yum -y install nginx

Когда установка будет завершена, запустите Nginx и включите его автоматический запуск во время загрузки.

systemctl start nginx
systemctl enable nginx

Nginx установлен и работает на порту 80. Проверьте открытый порт в системе с помощью netstat.

netstat -plntu

Если у вас не установлена команда netstat, вы можете установить пакет net-tools, чтобы получить ее.

yum -y install net-tools

Шаг 2 — Установите и настройте PHP-FPM

Moodle 3.2 поддерживает новую версию PHP 7, поэтому мы будем использовать PHP 7.0. PHP-FPM 7.0 недоступен в репозитории CentOS по умолчанию. Существует сторонний репозиторий webtatic для PHP7, который я буду использовать здесь.

Добавьте новый репозиторий webtatic в систему с помощью команды rpm.

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Затем установите PHP-FPM 7.0 со всеми расширениями и пакетами, необходимыми для Moodle.

yum install -y graphviz aspell php70w-fpm php70w-cli php70w-pspell php70w-curl php70w-gd php70w-intl php70w-mysql php70w-xml php70w-xmlrpc php70w-ldap php70w-zip php70w-json php70w-opcache php70w-readline php70w-mbstring php70w-soap

Когда установка будет завершена, отредактируйте файл конфигурации PHP php.ini с помощью vim.

vim /etc/php.ini

Раскомментируйте строку cgi.fix_pathinfo и измените значение на 0.

cgi.fix_pathinfo=0

Сохраните файл php.ini и выйдите из vim.

Перейдите в каталог конфигурации php-fpm и отредактируйте файл конфигурации php-fpm www.conf.

cd /etc/php-fpm.d/
vim www.conf

Измените строки пользователя и группы на nginx, чтобы веб-сервер работал под пользователем и группой nginx.

user = nginx
group = nginx

Вместо использования порта сервера мы будем использовать файл сокета для php-fpm. Измените значение строки прослушивания на /run/php-fpm/php-fpm.sock.

listen = /run/php-fpm/php-fpm.sock

Затем раскомментируйте владельца файла сокета, группу и строку разрешений по умолчанию и измените их, как показано ниже.

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Настройте расширения файлов, которые PHP будет анализировать.

Разрешить только файлы .php.

security.limit_extensions = .php

Раскомментируйте строки переменной среды PHP-FPM ниже.

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

Сохраните файл и выйдите из редактора.

Теперь нам нужно создать новый каталог для пути сеанса php. Создайте новый каталог и измените владельца каталога на пользователя и группу nginx.

mkdir -p /var/lib/php/session/
chown -R nginx:nginx /var/lib/php/session/

Измените владельца каталога файла сокета php-fpm на пользователя nginx.

chown -R nginx:nginx /run/php-fpm/

Настройка PHP-FPM завершена. Запустите PHP-FPM и добавьте его для автоматического запуска во время загрузки с помощью следующих двух команд systemctl.

systemctl start php-fpm
systemctl enable php-fpm

PHP-FPM будет работать в файле сокета, проверьте его, чтобы убедиться, что PHP-FPM снова работает с netstat.

netstat -lx | grep php-fpm.sock

Шаг 3 — Установите и настройте сервер MariaDB

В этом руководстве я буду использовать MariaDB в качестве сервера базы данных. Я установлю mariadb-server из репозитория Centos, а затем настрою корневой пароль MariaDB и добавлю новую базу данных и пользователя для Moodle.

Установите mariadb-server с помощью команды yum ниже.

yum -y install mariadb-server mariadb

После завершения установки отредактируйте файл конфигурации my.cnf.

vim /etc/my.cnf

В конце раздела [mysqld] вставьте приведенную ниже конфигурацию.

default_storage_engine = innodb
innodb_file_per_table = 1
innodb_file_format = Barracuda

Сохраните и выйдите, затем запустите MariaDB и включите его во время загрузки.

systemctl start mariadb
systemctl enable mariadb

MariaDB установлена и сейчас работает на порту 3306, но пароля root еще нет, поэтому нам нужно его настроить. Используйте приведенную ниже команду, чтобы установить новый корневой пароль MySQL.

mysql_secure_installation

Вам будет предложено ввести новый корневой пароль MySQL.

Set root password? [Y/n] Y
New password:
Re-enter new password:

Remove anonymous users? [Y/n] 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

Настройка MariaDB завершена.

Затем подключитесь к оболочке MySQL с помощью команды mysql, затем создайте новую базу данных и пользователя для Moodle, предоставьте привилегии для базы данных новому пользователю.

Подключитесь к оболочке mysql.

mysql -u root -p
TYPE YOUR PASSWORD

Выполните приведенные ниже запросы mysql, чтобы создать нового пользователя moodleuser с паролем hakaselabs123 и новой базой данных moodledb, а затем предоставьте новому пользователю все права доступа к базе данных. Пожалуйста, выберите другой и безопасный пароль на вашем сервере!

CREATE DATABASE moodledb DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'hakaselabs123';
GRANT ALL PRIVILEGES ON moodledb.* TO 'moodleuser'@'localhost' IDENTIFIED BY 'hakaselabs123';
FLUSH PRIVILEGES;

Пользователь и база данных для Moodle созданы.

Шаг 4 - Загрузите и настройте Moodle

Мы будем загружать Moodle прямо из репозитория GitHub, поэтому нам нужна команда git в системе. Установите git с помощью yum, как показано ниже.

yum -y install git

Затем создайте новый корневой веб-каталог /var/www/.

mkdir -p /var/www/

Перейдите в каталог /var/www/ и клонируйте Moodle из репозитория GitHub.

cd /var/www/
git clone https://github.com/moodle/moodle.git

Затем перейдите в каталог moodle и проверьте доступные ветки Moodle.

cd moodle/
git branch -a

Перечислите стабильные ветки Moodle, выберите последнюю стабильную ветку и проверьте последнюю стабильную версию ветки.

git branch --track MOODLE_32_STABLE orogin/MOODLE_32_STABLE
git checkout MOODLE_32_STABLE

Теперь вы должны быть в последней стабильной ветке Moodle, вы можете проверить это с помощью команды git ниже.

git status

Результаты вы увидите ниже.

# On branch MOODLE_32_STABLE
nothing to commit, working directory clean

Теперь создайте новый каталог moodledata и убедитесь, что владельцем каталога является пользователь и группа nginx.

mkdir -p /var/moodledata
chown -R nginx:nginx /var/moodledata
chmod 777 /var/moodledata

Измените владельца каталога moodle на пользователя nginx.

chown -R nginx:nginx /var/www/moodle
chmod 755 /var/www/moodle

Мудл скачан.

Шаг 5. Настройте SSL и виртуальный хост

Мы будем запускать Moodle на веб-сервере nginx с безопасным HTTPS-соединением. Когда вы находитесь на действующем сервере, вы можете использовать свой собственный файл сертификата или использовать бесплатный сертификат от let encrypt. Я здесь, на своем локальном компьютере, поэтому я просто могу создать новый файл самозаверяющего сертификата самостоятельно.

Создайте каталог SSL и сгенерируйте новые файлы сертификатов с помощью команды openssl ниже.

mkdir -p /etc/nginx/ssl/
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/moodle.crt -keyout /etc/nginx/ssl/moodle.key

Изменить разрешение закрытого ключа.

chmod 600 /etc/nginx/ssl/moodle.key

Затем перейдите в каталог конфигурации nginx с помощью команды cd и создайте новый файл виртуального хоста для moodle в каталоге conf.d.

cd /etc/nginx/
vim conf.d/moodle.conf

Вставьте виртуальный хост nginx moodle ниже.

# PHP Upstream Handler
upstream php-handler {
    server unix:/run/php-fpm/php-fpm.sock;
}

# Nginx redirect HTTP to HTTPS - moodle.hakase-labs.com
server {
    listen 80;
    server_name moodle.hakase-labs.com;
    # enforce https
    return 301 https://$server_name$request_uri;
}

# HTTPS Configuration
server {
        server_name          moodle.hakase-labs.com;

        listen               *:443 ssl http2;
        listen               [::]:443 ssl http2;

        # SSL Configuration   
        ssl  on;
        ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES128-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA128:DHE-RSA-AES128-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA128:ECDHE-RSA-AES128-SHA384:ECDHE-RSA-AES128-SHA128:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA384:AES128-GCM-SHA128:AES128-SHA128:AES128-SHA128:AES128-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
        add_header X-Frame-Options DENY;
        add_header X-Content-Type-Options nosniff;
        ssl_session_tickets off;
        #ssl_stapling on;
        #ssl_stapling_verify on;
        resolver_timeout 5s;
        ssl_certificate /etc/nginx/ssl/moodle.crt;
        ssl_certificate_key /etc/nginx/ssl/moodle.key;
       
        # Root Moodle Data DIrectory
        root /var/www/moodle;
        rewrite ^/(.*\.php)(/)(.*)$ /$1?file=/$3 last;

        location ^~ / {
                try_files $uri $uri/ /index.php?q=$request_uri;
                index index.php index.html index.htm;

                location ~ \.php$ {
                        include fastcgi.conf;
                        fastcgi_pass php-handler;
                }
        }
}

Сохраните файл конфигурации и выйдите из vim.

Проверьте конфигурацию Nginx и убедитесь в отсутствии ошибок, затем перезапустите Nginx.

nginx -t
systemctl restart nginx

SSL-сертификаты и новая конфигурация виртуального хоста для moodle завершены.

Шаг 6 — Настройте SELinux и Firewalld

На этом этапе мы настроим SELinux и Firewalld. Если ваш SELinux выключен и вы не хотите его использовать, вы можете пропустить этот шаг и приступить к настройке Firewalld. Проверьте свой статус SELinux и убедитесь, что firewalld установлен.

Проверьте статус SELinux с помощью приведенной ниже команды.

sestatus

SELinux включен в принудительном режиме.

Для настройки SELinux нам нужны инструменты управления SELinux, установленные в системе.

Установите policycoreutils-python с yum.

yum -y install policycoreutils-python

Теперь измените файлы контекста SELinux и настройки каталога для корневого веб-каталога moodle и каталога данных moodle с помощью команды semanage ниже.

semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/moodle(/.*)?'
restorecon -Rv '/var/www/moodle/'

semanage fcontext -a -t httpd_sys_rw_content_t '/var/moodledata(/.*)?'
restorecon -Rv '/var/moodledata/'

Настройка SELinux для moodle завершена, теперь нужно настроить Firewalld.

Установите пакеты firewalld, если у вас их нет.

yum -y install firewalld

Запустите firewalld и автоматически добавьте firewalld для запуска во время загрузки.

systemctl start firewalld
systemctl enable firewalld

Затем откройте порты для HTTP, HTTPS и SSH с помощью приведенной ниже команды firewall-cmd.

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-service=ssh

Перезагрузите firewalld и убедитесь, что HTTP и HTTPS есть в списке служб.

firewall-cmd --reload
firewall-cmd --list-all

Настройка брандмауэра завершена.

Шаг 7 - Установите Moodle

Подготовка к установке Moodle завершена. Теперь мы можем установить Moodle, посетив доменное имя виртуального хоста Moodle. В этом руководстве я использовал доменное имя moodle.hakase-labs.com.

Откройте веб-браузер и введите URL-адрес moodle.hakase-labs.com в адресной строке.

Вы увидите страницу установки Moodle, выберите язык, в моем случае английский, и нажмите «Далее».

Теперь введите данные конфигурации для moodle: веб-адрес moodle.hakase-labs.com, корневой веб-каталог moodle /var/www/moodle, каталог moodledata /var/moodledata и нажмите «Далее», чтобы продолжить.

В качестве драйвера базы данных выберите MySQL, как показано ниже, и нажмите «Далее».

Конфигурация базы данных Moodle.

  • Хост базы данных: localhost
  • Имя базы данных: moodledb
  • Пользователь базы данных: moodleuser
  • Пароль к базе данных: hakaselabs123
  • Префикс таблицы: moodle_
  • Порт базы данных: 3306.
  • Сокет Unix: /var/lib/mysql/mysql.sock

Затем нажмите Далее.

Для уведомления об авторских правах нажмите кнопку «Продолжить».

Moodle проверит систему и все требования к расширению php, убедится, что все результаты в порядке, затем нажмите «Продолжить» для установки.

Начнется установка Moodle. Убедитесь, что все результаты имеют значение «Успех», затем нажмите «Продолжить», чтобы настроить Moodle.

Конфигурация администратора пользователя. Введите свою информацию, например, имя, адрес электронной почты, пароль и т. д., и нажмите «Обновить профиль».

Конфигурация главной страницы Moodle, введите информацию о настроении и нажмите «Сохранить изменения».

И вы будете перенаправлены на панель администратора пользователя Moodle.

Установка Moodle прошла без ошибок.

Шаг 8 — Тестирование

Посетите главную страницу Moodle: moodle.hakase-labs.com.

Страница входа в Moodle — moodle.hakase-labs.com/login/.

Личный кабинет пользователя Moodle.

Администрирование сайта Moodle для настройки системы Moodle.

Пользовательские настройки Moodle.

Установка Moodle с веб-сервером Nginx, php-fpm и MariaDB в системе CentOS 7 прошла успешно.

Ссылка

  • https://docs.moodle.org/32/en/RedHat_Linux_installation