Как установить Moodle в Ubuntu 20.04 | 18.04 с Nginx и Let’s Encrypt

Как установить Moodle в Ubuntu 20.04 | 18.04 с Nginx и Let’s Encrypt

 

Это краткое руководство показывает студентам и новым пользователям, как установить Moodle, систему управления развитием (LMS) в Ubuntu 18.04 | 20.04 с HTTP-сервером Nginx и SSL-сертификатами Let’s encrypt wildcard.

Moodle — это мобильная система управления обучением (LMS) с открытым исходным кодом, которая упрощает создание и распространение ваших собственных курсов и учебных материалов для любых целей.

Вы можете использовать Moodle для облегчения своего онлайн-курса и изучения веб-сайтов без необходимости учиться читать и писать сложные коды и скрипты.

Когда вы ищете бесплатную и полезную LMS с открытым исходным кодом для выполнения своих курсовых работ в Интернете, Moodle, вероятно, должен стать для вас отправной точкой. И если вы хотите узнать, как легко установить и управлять им, то этот пост — все, что вам нужно.

Чтобы узнать больше о Moodle, посетите их домашнюю страницу.

Чтобы начать установку Moodle, выполните следующие действия:

Шаг 1. Установите HTTP-сервер Nginx

Для работы Moodle требуется веб-сервер, а Nginx — один из самых популярных веб-серверов с открытым исходным кодом, доступных сегодня.

Чтобы установить Nginx в Ubuntu, выполните следующие команды:

sudo apt update
sudo apt install nginx

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

sudo systemctl stop nginx.service
sudo systemctl start nginx.service
sudo systemctl enable nginx.service

Чтобы проверить, установлен ли и работает ли Nginx, откройте свой веб-браузер и перейдите к IP-адресу или имени хоста сервера.

http://localhost

Если вы видите указанную выше страницу в своем браузере, значит, Nginx работает должным образом.

Шаг 2: Установите сервер базы данных MariaDB

Вам также понадобится сервер базы данных для запуска Moodle. Сервер базы данных — это место, где хранится контент Moodle.

Настоящим сервером базы данных с открытым исходным кодом, который вы можете использовать с Moodle, является сервер базы данных MariaDB. Это быстрый, безопасный и используемый по умолчанию сервер почти для всех серверов Linux.

Чтобы установить MariaDB, выполните следующие команды:

sudo apt-get install mariadb-server mariadb-client

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

sudo systemctl stop mariadb.service
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service

Затем запустите приведенные ниже команды, чтобы защитить сервер базы данных паролем root, если вам не было предложено сделать это во время установки.

sudo mysql_secure_installation

При появлении запроса ответьте на приведенные ниже вопросы, следуя инструкциям.

  • Enter current password for root (enter for none): Just press the Enter
  • 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 установлена ​​и работает, войдите в консоль базы данных, используя следующие команды:

sudo mysql -u root -p

при появлении запроса введите пароль root.

Если вы видите экран, похожий на показанный выше, значит сервер успешно установлен.

Затем выполните следующие команды, чтобы открыть файл конфигурации по умолчанию MariaDB.

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Затем добавьте выделенные строки ниже и сохраните.

[mysqld]
#
* Basic Settings
#
user = mysql
pid-file = /run/mysqld/mysqld.pid
socket = /run/mysqld/mysqld.sock
#port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
#skip-external-locking
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix = ON

После этого перезапустите MariaDB.

sudo systemctl restart mariadb.service

Шаг 3. Установите PHP 7.4 и связанные модули

Moodle — это приложение на основе PHP, и для его запуска требуется PHP. Поскольку в некоторых версиях Ubuntu нет последних версий PHP, вы можете добавить сторонний репозиторий PPA для установки PHP оттуда.

Приведенная ниже команда добавит сторонний PPA в Ubuntu.

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php

Затем обновите и обновите до PHP 7.4.

sudo apt update

Затем выполните приведенные ниже команды, чтобы установить PHP 7.4 и связанные модули.

sudo apt install php7.4-fpm php7.4-common php7.4-mysql php7.4-gmp php7.4-curl php7.4-intl php7.4-mbstring php7.4-soap php7.4-xmlrpc php7.4-gd php7.4-xml php7.4-cli php7.4-zip

После установки PHP 7.4 настройте некоторые базовые параметры, которые могут потребоваться для правильной работы Moodle.

Выполните команды ниже, чтобы открыть PHP.

sudo nano /etc/php/7.4/fpm/php.ini

Ниже приведены хорошие настройки для большинства веб-сайтов Moodle.

file_uploads = On
allow_url_fopen = On
short_open_tag = On
memory_limit = 256M
cgi.fix_pathinfo = 0
upload_max_filesize = 100M
max_execution_time = 360
date.timezone = America/Chicago

При этом должен быть установлен PHP 7.4 с некоторыми базовыми настройками, чтобы Moodle функционировал.

Шаг 4: Создайте базу данных Moodle

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

Войдите в консоль базы данных MariaDB, используя следующие команды:

sudo mysql -u root -p

Затем создайте базу данных с именем moodle

CREATE DATABASE moodle;

Cоздайте пользователя базы данных с именем moodleuser и установите пароль

CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'new_password_here';

Затем предоставьте пользователю полный доступ к базе данных.

GRANT ALL ON moodle.* TO 'moodleuser'@'localhost' WITH GRANT OPTION;

Наконец, сохраните изменения и выйдите.

FLUSH PRIVILEGES;
EXIT;

Шаг 5: Загрузите Moodle

На этом этапе Moodle готов к загрузке и установке. Используйте приведенные ниже команды, чтобы загрузить последнюю версию Moodle. На момент написания последней версии  38 .

Чтобы просмотреть выпуски Moodle, перейдите на страницу .

sudo apt install git curl

После установки git и curl, указанных выше, перейдите в корневой каталог Nginx и загрузите пакеты Moodle с Github … Всегда заменяйте номер ветки на последнюю ветку.

cd /var/www/
sudo git clone -b MOODLE_38_STABLE git://git.moodle.org/moodle.git moodle

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

sudo mkdir -p /var/www/moodledata
sudo chown -R www-data:www-data /var/www/
sudo chmod -R 755 /var/www/
sudo chown www-data:www-data /var/www/moodledata

Шаг 6. Настройте Nginx

Ниже вы настраиваете файл Nginx VirtualHost для создаваемого сайта Moodle. Этот файл определяет, как обрабатываются и обрабатываются клиентские запросы.

Выполните приведенные ниже команды, чтобы создать новый файл VirtualHost с именем moodleв каталоге /etc/nginx/sites-available/

sudo nano /etc/nginx/sites-available/moodle

Ниже приведены очень хорошие настройки конфигурации для большинства сайтов Moodle на сервере Nginx. Эта конфигурация должна отлично работать.

Скопируйте содержимое ниже и сохраните в файл, созданный выше.

server {
    listen 80;
    listen [::]:80;
    root /var/www/moodle;
    index  index.php index.html index.htm;
    server_name  example.com www.example.com;

    client_max_body_size 100M;
    autoindex off;
    location / {
        try_files $uri $uri/ =404;
    }

    location /dataroot/ {
      internal;
      alias /var/www/moodledata/;
    }

    location ~ [^/].php(/|$) {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

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

После сохранения файла, указанного выше, выполните следующие команды, чтобы включить новый сайт, а затем перезапустите сервер Nginx.

sudo ln -s /etc/nginx/sites-available/moodle /etc/nginx/sites-enabled/
sudo systemctl restart nginx.service

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

http://localhost

Однако, если вы хотите включить SSL или принимать веб-трафик через HTTPS, вы можете продолжить ниже, чтобы установить и настроить бесплатные SSL-сертификаты Let’s Encrypt.

Шаг 7. Установите сертификаты Let’s Encrypt Wildcard

На шаге 6 Moodle готов к использованию без SSL. Однако, если вы хотите обслуживать веб-трафик через HTTPS, необходимо установить и настроить SSL-сертификат Let’s Encrypt или другие общедоступные сертификаты.

Чтобы установить Let’s Encrypt, выполните следующие команды.

sudo apt update
sudo apt-get install letsencrypt

Приведенные выше команды установят инструмент certbot и все зависимости, которые позволят заставить инструмент работать.

Let’s Encrypt предлагает множество способов проверить, что вы владеете доменом, для которого хотите предоставить сертификаты SSL. Вы не сможете создавать сертификаты, если не сможете доказать, что владеете доменом, который хотите защитить.

Для сертификатов с подстановочными знаками единственный метод запроса, который принимает Let’s Encrypt, — это запрос DNS, который мы можем вызвать с помощью  флага предпочтительных вызовов = dns .

Итак, чтобы сгенерировать сертификат с подстановочными знаками для домена * .example.com , вы выполните следующие команды:

sudo certbot certonly --manual --preferred-challenges=dns --email admin@example.com --server https://acme-v02.api.letsencrypt.org/directory --agree-tos -d example.com -d *.example.com

Параметры команды выше описаны ниже:

  • certonly:                                     Obtain or renew a certificate, but do not install
  • –manual:                                    Obtain certificates interactively
  • –preferred-challenges=dns:      Use dns to authenticate domain ownership
  • –server:                                      Specify the endpoint to use to generate
  • –agree-tos:                                 Agree to the ACME server’s subscriber terms
  • -d:                                               Domain name to provide certificates for

После выполнения приведенной выше команды Let’s Encrypt предоставит текстовую строку для добавления текстовой записи в вашу запись DNS …

Пример:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None

-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o: y
Obtaining a new certificate
Performing the following challenges:
dns-01 challenge for example.com

-------------------------------------------------------------------------------
NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.

Are you OK with your IP being logged?
-------------------------------------------------------------------------------
(Y)es/(N)o: y

-------------------------------------------------------------------------------
Please deploy a DNS TXT record under the name
_acme-challenge.example.com with the following value:

x4MrZ6y-JqFJQRmq_lGi9ReRQHPa1aTC9J2O7wDKzq8

Before continuing, verify the record is deployed.

Перейдите на портал своего поставщика DNS, добавьте текстовую запись для строки выше и сохраните.

Подождите несколько минут, прежде чем продолжить из командной строки.

Некоторые поставщики DNS используют хитрость для распространения изменений, поэтому это может зависеть от платформы вашего провайдера.

После внесенных выше изменений, и Let’s encrypt сможет подтвердить, что вы являетесь владельцем домена, вы должны увидеть успешное сообщение, как показано ниже:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2020-01-09. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"

Подстановочный сертификат создан и готов к использованию.

Чтобы убедиться, что сертификат готов, выполните следующие команды:

sudo certbot certificates

Это должно отобразить аналогичный экран, как показано ниже:

Found the following certs:
  Certificate Name: example.com
    Domains: *.example.com
    Expiry Date: 2020-01-05 07:48:04+00:00 (VALID: 85 days)
    Certificate Path: /etc/letsencrypt/live/example.com/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/example.com/privkey.pem

Теперь сертификаты Let’s Encrypt действительны в течение 90 дней … Вы захотите настроить задание crob для автоматизации процесса обновления … Для этого откройте crontab и добавьте запись ниже:

sudo crontab -e

Затем добавьте строку ниже и сохраните.

0 1 * * * /usr/bin/certbot renew >> /var/log/letsencrypt/renew.log

Сохраните, и все готово!

После установки Let’s Encrypt повторно откройте созданный выше файл VirtualHost Nginx и добавьте конфигурации Let’s Encrypt для защиты вашего сайта.

Выполните команды ниже, чтобы открыть файл.

sudo nano /etc/nginx/sites-available/moodle

Затем добавьте выделенные строки в файл VirtualHost, как показано ниже:

server {
    listen 80;
    listen [::]:80;
    server_name *.example.com;
    return 301 https://$host$request_uri;
}
server {
    listen 443 ssl http2;
    listen [::] 443 ssl http2;
    root /var/www/moodle;
    index  index.php index.html index.htm;
    server_name  example.com www.example.com;

    if ($host != "example.com") {
      return 301 https://example.com$request_uri;
    }

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers 'TLS13+AESGCM+AES128:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:50m;
    ssl_session_timeout 1d;
    ssl_session_tickets off;
    ssl_ecdh_curve X25519:sect571r1:secp521r1:secp384r1;

    client_max_body_size 100M;
    autoindex off;
    location / {
        try_files $uri $uri/ =404;
    }

    location /dataroot/ {
       internal;
       alias /var/www/moodledata/;
    }

    location ~ [^/].php(/|$) {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

После вышеуказанного перезапустите Nginx и PHP 7.4-FPM.

sudo systemctl reload nginx
sudo systemctl reload php7.4-fpm

Затем откройте браузер и перейдите к доменному имени сервера. Вы должны увидеть, как мастер установки Moodle завершит работу. Пожалуйста, внимательно следуйте указаниям мастера.

https://example.com/

Затем следуйте инструкциям на экране.

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

На следующем экране выберите диск базы данных [ MariaDB] и нажмите «Далее», чтобы продолжить.

На этом экране введите информацию о базе данных, которую вы создали выше, включая имя базы данных, имя пользователя и пароль.

Затем нажмите Далее, чтобы продолжить.

Здесь вы вводите имя пользователя администратора, создаете пароль и другие данные.

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

Поздравляю! Вы успешно установили Moodle CMS в Ubuntu 18.04 | 20.04. Если вы обнаружите какую-либо ошибку выше, пожалуйста, используйте форму комментария ниже, чтобы сообщить об этом.

Спасибо!

Прокрутить вверх