Как установить платформу электронного обучения Moodle на Rocky Linux 8
На этой странице
- Предпосылки
- Шаг 1. Настройка брандмауэра
- Шаг 2. Установите Git
- Шаг 3. Установите и настройте PHP
- Шаг 4. Установка и настройка MySQL
- Шаг 5. Установите Nginx
- Шаг 6. Установите Moodle
- Шаг 7. Настройка Moodle
- Шаг 8. Установите SSL
- Шаг 9. Настройка Nginx
- Шаг 10. Настройка SELinux
- Шаг 11. Завершение установки Moodle
- Заключение
Moodle — это бесплатная онлайн-система управления обучением (LMS) с открытым исходным кодом. Это позволяет преподавателям создавать полнофункциональный веб-сайт для образовательных курсов с онлайн-классом. Он написан на PHP. Он предоставляет богатый набор функций, включая вики, оценивание, отправку заданий, онлайн-викторины, доски обсуждений и многое другое.
В этом руководстве объясняется, как установить Moodle на сервер Rocky Linux 8.
Предпосылки
-
A server running Rocky Linux 8.
-
A domain name pointing to the server. For our tutorial, we will use the
moodle.example.com
domain. -
A non-root user with sudo privileges.
-
Make sure everything is updated.
$ sudo dnf update
-
Install basic utility packages. Some of them may already be installed.
$ sudo dnf install wget curl nano unzip yum-utils -y
Шаг 1. Настройте брандмауэр
Первым шагом является настройка брандмауэра. Rocky Linux использует Firewalld Firewall. Проверьте состояние брандмауэров.
$ sudo firewall-cmd --state running
Брандмауэр работает с разными зонами, и мы будем использовать публичную зону по умолчанию. Перечислите все службы и порты, активные на брандмауэре.
$ sudo firewall-cmd --permanent --list-services
Он должен показать следующий вывод.
cockpit dhcpv6-client ssh
Для работы Moodle необходимы порты HTTP и HTTPS. Откройте их.
$ sudo firewall-cmd --add-service=http --permanent $ sudo firewall-cmd --add-service=https --permanent
Перезагрузите брандмауэр, чтобы применить изменения.
$ sudo firewall-cmd --reload
Шаг 2 — Установите Git
Git требуется Moodle для захвата файлов приложения. Установите Гит.
$ sudo dnf install git
Шаг 3 — Установите и настройте PHP
Нам нужно установить PHP 8.0, чтобы Moodle работал в нашем туториале. Первый шаг — захватить репозиторий Epel.
$ sudo dnf install epel-release
Затем установите репозиторий Remi.
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
Проверьте доступные потоки PHP.
$ dnf module list php -y Rocky Linux 8 - AppStream Name Stream Profiles Summary php 7.2 [d] common [d], devel, minimal PHP scripting language php 7.3 common [d], devel, minimal PHP scripting language php 7.4 common [d], devel, minimal PHP scripting language php 8.0 common [d], devel, minimal PHP scripting language Remi's Modular repository for Enterprise Linux 8 - x86_64 Name Stream Profiles Summary php remi-7.2 common [d], devel, minimal PHP scripting language php remi-7.3 common [d], devel, minimal PHP scripting language php remi-7.4 common [d], devel, minimal PHP scripting language php remi-8.0 common [d], devel, minimal PHP scripting language php remi-8.1 common [d], devel, minimal PHP scripting language Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Версия по умолчанию 7.2. Включить репозиторий Remis PHP 8.0.
$ sudo dnf module reset php -y $ sudo dnf module enable php:remi-8.0
Установите PHP и необходимые расширения, требуемые Moodle.
$ sudo dnf install graphviz aspell ghostscript clamav php-fpm php-iconv php-curl php-mysqlnd php-cli php-mbstring php-xmlrpc php-soap php-zip php-gd php-xml php-intl php-json php-sodium php-opcache
Проверьте установку.
$ php --version PHP 8.0.21 (cli) (built: Jul 6 2022 10:13:53) ( NTS gcc x86_64 ) Copyright (c) The PHP Group Zend Engine v4.0.21, Copyright (c) Zend Technologies with Zend OPcache v8.0.21, Copyright (c), by Zend Technologies
Откройте файл php.ini
для редактирования.
$ sudo nano /etc/php.ini
Измените значения следующих переменных, чтобы установить размер почтового вложения равным 25 МБ.
upload_max_filesize = 25M post_max_size = 25M
Затем раскомментируйте переменную max_input_vars
, удалив перед ней точку с запятой и изменив ее значение на 5000.
max_input_vars = 5000
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Откройте файл /etc/php-fpm.d/www.conf
.
$ sudo nano /etc/php-fpm.d/www.conf
Найдите в файле строки user=apache
и group=apache
и измените их следующим образом.
... ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. ; RPM: apache user chosen to provide access to the same directories as httpd user = nginx ; RPM: Keep a group allowed to write in log dir. group = nginx ...
Затем раскомментируйте владельца файла сокета, группу и строку разрешений по умолчанию и измените их, как показано ниже.
; Set permissions for unix socket, if one is used. In Linux, read/write ; permissions must be set in order to allow connections from a web server. ; Default Values: user and group are set as the running user ; mode is set to 0660 listen.owner = nginx listen.group = nginx listen.mode = 0660
Затем закомментируйте следующую строку, как показано, поставив перед ней точку с запятой.
;listen.acl_users = apache,nginx
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Дайте правильные разрешения для каталога сеанса PHP.
$ chown -R nginx:nginx /var/lib/php/session/
Включите и запустите службу PHP-FPM.
$ sudo systemctl enable php-fpm --now
Шаг 4 — Установите и настройте MySQL
Установите сервер MySQL.
$ sudo dnf install mysql-server
Подтвердите установку, проверив версию.
$ mysql --version mysql Ver 8.0.26 for Linux on x86_64 (Source distribution)
Включите и запустите службу MySQL.
$ sudo systemctl enable mysqld --now
Запустите сценарий безопасной установки.
$ sudo mysql_secure_installation
Вы получите несколько подсказок. Первое приглашение спросит, хотите ли вы установить плагин проверки пароля. Нажмите Y, чтобы установить плагин. Выберите 2 в качестве уровня безопасности, который потребует, чтобы ваш пароль содержал не менее 8 символов и включал комбинацию прописных, строчных, цифровых и специальных символов.
VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: (Press Y) There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: (Type 2)
Далее вам будет предложено создать надежный пароль root. Убедитесь, что ваш пароль соответствует требованиям плагина Validate.
Please set the password for root here. New password: Re-enter new password:
Далее вам будет предложено несколько подсказок, касающихся повышения безопасности базы данных. Нажмите Y в каждом запросе.
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : (Press Y) Remove anonymous users? (Press y|Y for Yes, any other key for No) : (Press Y) Disallow root login remotely? (Press y|Y for Yes, any other key for No) : (Press Y) Remove test database and access to it? (Press y|Y for Yes, any other key for No) : (Press Y) Reload privilege tables now? (Press y|Y for Yes, any other key for No) : (Press Y) Success. All done!
Войдите в оболочку MariaDB.
$ sudo mysql
Создайте базу данных для Moodle.
mysql > CREATE DATABASE moodledb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Создайте пользователя SQL для доступа к базе данных. Замените YourPassword23!
паролем по вашему выбору.
mysql > create user 'moodleuser'@'localhost' IDENTIFIED BY 'YourPassword23!';
Предоставьте moodleuser
доступ к базе данных.
mysql > GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodledb.* TO 'moodleuser'@'localhost';
Перезагрузите таблицу привилегий.
mysql > FLUSH PRIVILEGES;
Выйдите из оболочки.
mysql > exit
Шаг 5 — Установите Nginx
Rocky Linux поставляется со старой версией Nginx. Вам необходимо скачать официальный репозиторий Nginx, чтобы установить последнюю версию.
Создайте и откройте файл /etc/yum.repos.d/nginx.repo
для создания официального репозитория Nginx.
$ sudo nano /etc/yum.repos.d/nginx.repo
Вставьте в него следующий код.
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Установите сервер Nginx.
$ sudo dnf install nginx
Проверьте установку.
$ nginx -v nginx version: nginx/1.22.0
Шаг 6 - Установите Moodle
Создайте публичный каталог для Moodle.
$ sudo mkdir /var/www/html/moodle
Разрешить вошедшему в систему пользователю доступ к каталогу.
$ sudo chown -R $USER:$USER /var/www/html/moodle
Перейдите в общедоступный каталог.
$ cd /var/www/html/moodle
Клонируйте репозиторий Moodle Github.
$ git clone https://github.com/moodle/moodle.git .
Проверьте список доступных филиалов.
$ git branch -a
На данный момент MOODLE_400_STABLE
является последней доступной версией. Создайте локальную ветку с именем MOODLE_400_STABLE
и настройте ее для отслеживания удаленной ветки.
$ git branch --track MOODLE_400_STABLE origin/MOODLE_400_STABLE
Переключитесь на только что созданную локальную ветку.
$ git checkout MOODLE_400_STABLE
Создайте каталог данных для Moodle.
$ sudo mkdir /var/moodledata
Дайте соответствующие разрешения каталогу данных Moodle.
$ sudo chown -R nginx /var/moodledata $ sudo chmod -R 775 /var/moodledata
Дайте права на запись в директорию Moodle.
$ sudo chmod -R 755 /var/www/html/moodle
Шаг 7 - Настройте Moodle
Перейдите в каталог Moodle.
$ cd /var/www/html/moodle
Скопируйте образец файла конфигурации, чтобы создать файл конфигурации Moodle.
$ cp config-dist.php config.php
Откройте файл конфигурации для редактирования.
$ nano config.php
Найдите раздел конфигурации базы данных, затем настройте базу данных, в которой будут храниться все данные Moodle, как показано ниже.
$CFG->dbtype = 'mysqli'; // 'pgsql', 'mariadb', 'mysqli', 'auroramysql', 'sqlsrv' or 'oci' $CFG->dblibrary = 'native'; // 'native' only at the moment $CFG->dbhost = 'localhost'; // eg 'localhost' or 'db.isp.com' or IP $CFG->dbname = 'moodledb'; // database name, eg moodle $CFG->dbuser = 'moodleuser'; // your database username $CFG->dbpass = 'YourPassword23!'; // your database password $CFG->prefix = 'mdl_'; // prefix to use for all table names
Также настройте расположение доменного имени Moodle и каталога данных.
$CFG->wwwroot = 'https://moodle.example.com'; $CFG->dataroot = '/var/moodledata';
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Шаг 8 — Установите SSL
Инструмент Certbot генерирует SSL-сертификаты с помощью Lets Encrypt API. Для этого требуется репозиторий EPEL, но поскольку он у нас установлен, мы можем продолжить работу напрямую. Введите следующую команду, чтобы установить его.
$ sudo dnf install certbot
Создайте SSL-сертификат.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m -d moodle.example.com
Приведенная выше команда загрузит сертификат в каталог /etc/letsencrypt/live/moodle.example.com
на вашем сервере.
Создайте групповой сертификат Диффи-Хеллмана.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
Создайте корневую веб-директорию для автоматического обновления Lets Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Создайте задание Cron для обновления SSL. Он будет запускаться каждый день, чтобы проверять сертификат и при необходимости обновлять его. Для этого сначала создайте файл /etc/cron.daily/certbot-renew
и откройте его для редактирования.
$ sudo nano /etc/cron.daily/certbot-renew
Вставьте следующий код.
#!/bin/sh certbot renew --cert-name moodle.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Измените права доступа к файлу задачи, чтобы сделать его исполняемым.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Шаг 9 — Настройте Nginx
Создайте и откройте файл /etc/nginx/conf.d/moodle.conf
для редактирования.
$ sudo nano /etc/nginx/conf.d/moodle.conf
Вставьте в него следующий код.
# Redirect all non-encrypted to encrypted server { listen 80; listen [::]:80; server_name moodle.example.com; return 301 https://$host$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name moodle.example.com; root /var/www/html/moodle; index index.php; ssl_certificate /etc/letsencrypt/live/moodle.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/moodle.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/moodle.example.com/chain.pem; ssl_session_timeout 1d; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; access_log /var/log/nginx/moodle.access.log main; error_log /var/log/nginx/moodle.error.log; client_max_body_size 25M; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ ^(.+\.php)(.*)$ { fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_index index.php; fastcgi_pass unix:/run/php-fpm/www.sock; include /etc/nginx/mime.types; include fastcgi_params; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } # Hide all dot files but allow "Well-Known URIs" as per RFC 5785 location ~ /\.(?!well-known).* { return 404; } # This should be after the php fpm rule and very close to the last nginx ruleset. # Don't allow direct access to various internal files. See MDL-69333 location ~ (/vendor/|/node_modules/|composer\.json|/readme|/README|readme\.txt|/upgrade\.txt|db/install\.xml|/fixtures/|/behat/|phpunit\.xml|\.lock|environment\.xml) { deny all; return 404; } }
После завершения сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Откройте файл /etc/nginx/nginx.conf
для редактирования.
$ sudo nano /etc/nginx/nginx.conf
Добавьте следующую строку перед строкой include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Проверьте синтаксис файла конфигурации Nginx.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Включите и запустите службу Nginx, чтобы активировать новую конфигурацию.
$ sudo systemctl enable nginx --now
Если вы получаете следующую ошибку, то, скорее всего, это связано с ограничениями SELinux.
nginx: [emerg] open() "/var/run/nginx.pid" failed (13: Permission denied)
Чтобы исправить ошибку, выполните следующие команды.
$ sudo ausearch -c 'nginx' --raw | audit2allow -M my-nginx $ sudo semodule -X 300 -i my-nginx.pp
Снова запустите службу Nginx.
$ sudo systemctl start nginx
Шаг 10 — Настройте SELinux
Измените контекст безопасности файла для веб-каталога Moodles и каталога данных.
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/moodle' $ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/moodledata' $ sudo restorecon -Rv '/var/www/html/moodle' $ sudo restorecon -Rv '/var/moodledata'
Настройте SELinux, чтобы разрешить сетевые подключения из Moodle.
$ sudo setsebool -P httpd_can_network_connect on
Шаг 11 - Завершение установки Moodle
Откройте URL-адрес https://moodle.example.com
в своем браузере, и вы увидите следующий экран приветствия.
Нажмите кнопку «Продолжить», чтобы продолжить. Далее установщик проверит системные требования.
Если все в порядке, прокрутите вниз и нажмите кнопку «Продолжить», чтобы продолжить установку файлов и настройку базы данных.
Нажмите кнопку «Продолжить» после завершения установки. Затем создайте учетную запись администратора, заполнив данные учетной записи в соответствии с запросом.
После завершения прокрутите страницу вниз и нажмите «Обновить профиль», чтобы продолжить.
Далее вам будет предложено настроить параметры главной страницы Moodles.
Настройте его в соответствии с требованиями и нажмите «Сохранить изменения», чтобы перейти к панели инструментов Moodle. Затем нажмите ссылку «Пропустить» внизу, если вы не хотите регистрировать свой сайт Moodle в компании.
Теперь вы можете начать пользоваться обучающей платформой.
Заключение
На этом мы завершаем наше руководство по установке обучающей платформы Moodle на сервер Rocky Linux 8. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.