Como instalar a plataforma Moodle eLearning no Rocky Linux 8
Nesta página
- Pré-requisitos
- Etapa 1 - Configurar o Firewall
- Etapa 2 - Instalar o Git
- Etapa 3 - Instalar e configurar o PHP
- Etapa 4 - Instalar e configurar o MySQL
- Etapa 5 - Instalar o Nginx
- Etapa 6 - Instalar o Moodle
- Etapa 7 - Configurar o Moodle
- Etapa 8 - Instalar o SSL
- Etapa 9 - Configurar o Nginx
- Etapa 10 - Configurar o SELinux
- Etapa 11 - Concluindo a instalação do Moodle
- Conclusão
O Moodle é um Sistema de Gerenciamento de Aprendizagem (LMS) online gratuito e de código aberto. Ele permite que os educadores criem um site totalmente funcional para cursos educacionais completos com uma experiência de sala de aula online. Está escrito em PHP. Ele fornece um rico conjunto de recursos, incluindo wiki, avaliação, envio de tarefas, questionários on-line, painéis de discussão e muito mais.
Este guia explica como instalar o Moodle em um servidor Rocky Linux 8.
Pré-requisitos
-
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
Passo 1 - Configurar o Firewall
O primeiro passo é configurar o firewall. Rocky Linux usa Firewalld Firewall. Verifique o status dos firewalls.
$ sudo firewall-cmd --state
running
O firewall funciona com diferentes zonas, e a zona pública é a padrão que usaremos. Liste todos os serviços e portas ativas no firewall.
$ sudo firewall-cmd --permanent --list-services
Ele deve mostrar a seguinte saída.
cockpit dhcpv6-client ssh
Moodle precisa de portas HTTP e HTTPS para funcionar. Abri-los.
$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --add-service=https --permanent
Recarregue o firewall para aplicar as alterações.
$ sudo firewall-cmd --reload
Etapa 2 - Instalar o Git
O Git é exigido pelo Moodle para obter os arquivos do aplicativo. Instale o Git.
$ sudo dnf install git
Etapa 3 - Instalar e configurar o PHP
Precisamos instalar o PHP 8.0 para que o Moodle funcione para o nosso tutorial. O primeiro passo é pegar o repositório Epel.
$ sudo dnf install epel-release
Em seguida, instale o repositório Remi.
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
Verifique os fluxos de PHP disponíveis.
$ 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
A versão padrão é 7.2. Ative o repositório Remis PHP 8.0.
$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.0
Instale o PHP e as extensões exigidas pelo 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
Verifique a instalação.
$ 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
Abra o arquivo php.ini
para edição.
$ sudo nano /etc/php.ini
Altere os valores das variáveis a seguir para definir o tamanho do anexo de email para 25 MB.
upload_max_filesize = 25M
post_max_size = 25M
Em seguida, remova o comentário da variável max_input_vars
removendo o ponto e vírgula na frente dela e alterando seu valor para 5000.
max_input_vars = 5000
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Abra o arquivo /etc/php-fpm.d/www.conf
.
$ sudo nano /etc/php-fpm.d/www.conf
Localize as linhas user=apache
e group=apache
no arquivo e altere-as conforme a seguir.
...
; 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
...
Em seguida, remova o comentário do proprietário do arquivo de soquete, do grupo e da linha de permissão padrão e altere-os conforme mostrado abaixo.
; 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
Em seguida, comente a linha a seguir, conforme mostrado, colocando um ponto e vírgula na frente dela.
;listen.acl_users = apache,nginx
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Dê as permissões adequadas ao diretório de sessão do PHP.
$ chown -R nginx:nginx /var/lib/php/session/
Habilite e inicie o serviço PHP-FPM.
$ sudo systemctl enable php-fpm --now
Etapa 4 - Instalar e configurar o MySQL
Instale o servidor MySQL.
$ sudo dnf install mysql-server
Confirme a instalação verificando a versão.
$ mysql --version
mysql Ver 8.0.26 for Linux on x86_64 (Source distribution)
Habilite e inicie o serviço MySQL.
$ sudo systemctl enable mysqld --now
Execute o script de instalação segura.
$ sudo mysql_secure_installation
Você receberá vários prompts. O primeiro prompt perguntará se você deseja instalar o plug-in de validação de senha. Pressione Y para instalar o plug-in. Escolha 2 como nível de segurança, o que exigirá que sua senha tenha pelo menos 8 caracteres e inclua uma combinação de letras maiúsculas, minúsculas, numéricas e especiais.
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)
Em seguida, você será solicitado a criar uma senha de root forte. Certifique-se de que sua senha corresponda aos requisitos do plugin Validate.
Please set the password for root here.
New password:
Re-enter new password:
Em seguida, serão feitas várias solicitações relacionadas ao aumento da segurança do banco de dados. Pressione Y em cada prompt.
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!
Efetue login no shell do MariaDB.
$ sudo mysql
Crie um banco de dados para o Moodle.
mysql > CREATE DATABASE moodledb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Crie um usuário SQL para acessar o banco de dados. Substitua YourPassword23!
por uma senha de sua escolha.
mysql > create user 'moodleuser'@'localhost' IDENTIFIED BY 'YourPassword23!';
Conceda acesso moodleuser
ao banco de dados.
mysql > GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodledb.* TO 'moodleuser'@'localhost';
Recarregue a tabela de privilégios.
mysql > FLUSH PRIVILEGES;
Saia da casca.
mysql > exit
Passo 5 - Instale o Nginx
O Rocky Linux vem com uma versão mais antiga do Nginx. Você precisa baixar o repositório Nginx oficial para instalar a versão mais recente.
Crie e abra o arquivo /etc/yum.repos.d/nginx.repo
para criar o repositório Nginx oficial.
$ sudo nano /etc/yum.repos.d/nginx.repo
Cole o seguinte código nele.
[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
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Instale o servidor Nginx.
$ sudo dnf install nginx
Verifique a instalação.
$ nginx -v
nginx version: nginx/1.22.0
Passo 6 - Instale o Moodle
Crie o diretório público para o Moodle.
$ sudo mkdir /var/www/html/moodle
Dê permissão ao usuário conectado para acessar o diretório.
$ sudo chown -R $USER:$USER /var/www/html/moodle
Alterne para o diretório público.
$ cd /var/www/html/moodle
Clone o repositório Moodle Github.
$ git clone https://github.com/moodle/moodle.git .
Confira a lista de agências disponíveis.
$ git branch -a
Por enquanto, MOODLE_400_STABLE
é a última versão disponível. Crie uma ramificação local chamada MOODLE_400_STABLE
e configure-a para rastrear a ramificação remota.
$ git branch --track MOODLE_400_STABLE origin/MOODLE_400_STABLE
Alterne para a ramificação local recém-criada.
$ git checkout MOODLE_400_STABLE
Crie um diretório de dados para o Moodle.
$ sudo mkdir /var/moodledata
Dê as permissões adequadas ao diretório de dados do Moodle.
$ sudo chown -R nginx /var/moodledata
$ sudo chmod -R 775 /var/moodledata
Dê permissões de gravação no diretório Moodle.
$ sudo chmod -R 755 /var/www/html/moodle
Passo 7 - Configurar o Moodle
Alterne para o diretório Moodle.
$ cd /var/www/html/moodle
Copie o arquivo de configuração de amostra para criar o arquivo de configuração do Moodle.
$ cp config-dist.php config.php
Abra o arquivo de configuração para edição.
$ nano config.php
Procure a seção de configuração do banco de dados e, em seguida, configure o banco de dados onde todos os dados do Moodle serão armazenados, conforme mostrado abaixo.
$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
Além disso, configure a localização do nome de domínio Moodle e o diretório de dados.
$CFG->wwwroot = 'https://moodle.example.com';
$CFG->dataroot = '/var/moodledata';
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Etapa 8 - Instale o SSL
A ferramenta Certbot gera certificados SSL usando a API Lets Encrypt. Requer o repositório EPEL, mas como o temos instalado, podemos prosseguir diretamente. Emita o seguinte comando para instalá-lo.
$ sudo dnf install certbot
Gere o certificado SSL.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m -d moodle.example.com
O comando acima irá baixar um certificado para o diretório /etc/letsencrypt/live/moodle.example.com
em seu servidor.
Gere um certificado de grupo Diffie-Hellman.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
Crie um diretório raiz da Web de desafio para a renovação automática do Lets Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Crie um Cron Job para renovar o SSL. Ele será executado todos os dias para verificar o certificado e renová-lo, se necessário. Para isso, primeiro crie o arquivo /etc/cron.daily/certbot-renew
e abra-o para edição.
$ sudo nano /etc/cron.daily/certbot-renew
Cole o seguinte código.
#!/bin/sh
certbot renew --cert-name moodle.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Altere as permissões no arquivo de tarefa para torná-lo executável.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Etapa 9 - Configurar o Nginx
Crie e abra o arquivo /etc/nginx/conf.d/moodle.conf
para edição.
$ sudo nano /etc/nginx/conf.d/moodle.conf
Cole o seguinte código nele.
# 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;
}
}
Quando terminar, salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Abra o arquivo /etc/nginx/nginx.conf
para edição.
$ sudo nano /etc/nginx/nginx.conf
Adicione a seguinte linha antes da linha include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Verifique a sintaxe do arquivo de configuração do 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
Habilite e inicie o serviço Nginx para habilitar a nova configuração.
$ sudo systemctl enable nginx --now
Se você receber o seguinte erro, provavelmente é devido às restrições do SELinux.
nginx: [emerg] open() "/var/run/nginx.pid" failed (13: Permission denied)
Para corrigir o erro, execute os seguintes comandos.
$ sudo ausearch -c 'nginx' --raw | audit2allow -M my-nginx
$ sudo semodule -X 300 -i my-nginx.pp
Inicie o serviço Nginx novamente.
$ sudo systemctl start nginx
Etapa 10 - Configurar o SELinux
Altere o contexto de segurança do arquivo para web Moodles e diretório de dados.
$ 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'
Configure o SELinux para permitir conexões de rede do Moodle.
$ sudo setsebool -P httpd_can_network_connect on
Passo 11 - Concluindo a instalação do Moodle
Abra a URL https://moodle.example.com
em seu navegador e você verá a seguinte tela de boas-vindas.
Pressione o botão Continuar para continuar. Em seguida, o instalador verificará os requisitos do sistema.
Se tudo estiver ok, role para baixo e clique no botão Continuar para prosseguir com a instalação dos arquivos e configuração do banco de dados.
Clique no botão Continuar quando a instalação estiver concluída. Em seguida, crie uma conta de administrador preenchendo os detalhes da conta conforme solicitado.
Quando terminar, role para baixo até a página e clique em Atualizar perfil para continuar.
Em seguida, você será solicitado a definir as configurações da página inicial do Moodles.
Configure-o de acordo com os requisitos e clique em Salvar alterações para prosseguir para o painel do Moodle. Em seguida, clique no link Ignorar na parte inferior se não quiser registrar seu site Moodle na empresa.
Agora, você pode começar a usar a plataforma de aprendizagem.
Conclusão
Isso conclui nosso tutorial sobre a instalação da plataforma de aprendizado Moodle em um servidor Rocky Linux 8. Se você tiver alguma dúvida, poste-a nos comentários abaixo.