Pesquisa de site

Como instalar o Moodle com Nginx e Lets Encrypt SSL no Ubuntu 20.04


Este tutorial existe para estas versões do sistema operacional

  • Ubuntu 16.04 (Xenial Xerus)

Nesta página

  1. Pré-requisitos
  2. Primeiros passos
  3. Instalar o LEMP
  4. Criar um banco de dados
  5. Instalar o Moodle
  6. Configurar Nginx para Moodle
  7. Acessar a Interface Web do Moodle
  8. Moodle seguro com Lets Encrypt SSL
  9. Conclusão

O Moodle é um Sistema de Gerenciamento de Aprendizagem gratuito e de código aberto escrito em PHP. Ele fornece uma maneira para tutores e instrutores criarem cursos para seus alunos ou alunos. O Moodle fornece um sistema integrado robusto e seguro e vem com um painel personalizado que ajuda os usuários a acessar cursos atuais, anteriores ou futuros, bem como revisar trabalhos pendentes. Ele é usado por muitas escolas, universidades e organizações em todo o mundo e oferece uma melhor experiência de aprendizado. 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.

Neste tutorial, mostraremos como instalar o Moodle com servidor web Nginx e Lets Encrypt SSL no Ubuntu 20.04.

Pré-requisitos

  • Um servidor rodando Ubuntu 20.04.
  • Um nome de domínio válido apontado com o IP do seu servidor.
  • Uma senha root é configurada no servidor.

Começando

Antes de começar, você precisará atualizar os pacotes do sistema para a versão mais recente. Você pode atualizá-los usando o seguinte comando:

apt-get update -y

Depois que seu servidor for atualizado, você poderá prosseguir para a próxima etapa.

Instalar o LEMP

Primeiro, você precisará instalar o Apache, MariaDB, PHP e outras bibliotecas PHP em seu sistema. Você pode instalar todos eles usando o seguinte comando:

apt-get install nginx mariadb-server php-fpm php-common php-mysql php-gmp php-curl php-intl php-mbstring php-soap php-xmlrpc php-gd php-xml php-cli php-zip unzip git curl -y

Depois que todos os pacotes estiverem instalados, edite o arquivo php.ini e altere algumas configurações:

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

Altere as seguintes linhas:

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

Salve e feche o arquivo e reinicie o serviço PHP-FPM para aplicar as alterações:

systemctl restart php7.4-fpm

Depois de terminar, você pode prosseguir para a próxima etapa.

Criar um banco de dados

O Moodle usa um MySQL ou MariaDB como back-end de banco de dados, portanto, você precisará criar um banco de dados e um usuário para o Moodle.

Primeiro, conecte-se ao shell do MySQL com o seguinte comando:

mysql

Após o login, crie um banco de dados e um usuário com o seguinte comando:

CREATE DATABASE moodledb;
CREATE USER 'moodle'@'localhost' IDENTIFIED BY 'password';

Em seguida, conceda todos os privilégios ao banco de dados Moodle com o seguinte comando:

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

Em seguida, limpe os privilégios e saia do MySQL com o seguinte comando:

FLUSH PRIVILEGES;
EXIT;

Em seguida, edite o arquivo de configuração padrão do MariaDB e defina o innodb_file_format:

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

Adicione as seguintes linhas dentro da seção [mysqld]:

[mysqld]
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix = ON

Salve o arquivo e reinicie o serviço MariaDB para aplicar as alterações:

systemctl restart mariadb

Instalar Moodle

Primeiro, altere o diretório para o diretório raiz do Apache e baixe a versão mais recente do Moodle com o seguinte comando:

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

Após a conclusão do download, edite o Moodle config.php e defina o tipo de banco de dados:

nano /var/www/html/moodle/config.php

Encontre a seguinte linha:

$CFG->dbtype    = 'mysqli';

E, substituiu-o pela seguinte linha:

$CFG->dbtype    = 'mariadb';

Salve e feche o arquivo, em seguida, crie um diretório de dados do Moodle, defina a propriedade e a permissão adequadas com o seguinte comando:

mkdir -p /var/www/html/moodledata
chown -R www-data:www-data /var/www/html/moodle
chmod -R 755 /var/www/html/*
chown www-data:www-data /var/www/html/moodledata

Depois de terminar, você pode prosseguir para a próxima etapa.

Configurar Nginx para Moodle

Em seguida, você precisará criar um arquivo de configuração de host virtual Nginx para hospedar o Moodle:

nano /etc/nginx/conf.d/moodle.conf

Adicione as seguintes linhas:

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

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

    location /dataroot/ {
      internal;
      alias /var/www/html/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;
    }
}

Salve e feche o arquivo e verifique o Nginx quanto a qualquer erro de sintaxe com o seguinte comando:

nginx -t

Você deve obter a seguinte saída:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Por fim, reinicie o serviço Nginx para aplicar as alterações:

systemctl restart nginx

Neste ponto, o Nginx está configurado para hospedar o Moodle. Agora você pode prosseguir para a próxima etapa.

Acessar Interface Web do Moodle

Agora, abra seu navegador da Web e acesse a interface da Web do Moodle usando a URL http://moodle.example.com. Você deve ver a página de instalação do Moodle:

Selecione seu idioma e clique em Avançar. Você deve ver a seguinte página:

Forneça seu endereço da web do Moodle, caminho do diretório, caminho do diretório de dados e clique em Avançar. Você deve ver a seguinte página:

Selecione o tipo de driver de banco de dados e clique em Avançar. Você deve ver a seguinte página:

Forneça seu host de banco de dados, nome do banco de dados, nome de usuário, senha e clique em Avançar. Você deve ver a seguinte página:

Clique em Continuar para confirmar todas as condições. Você deve ver a seguinte página:

Certifique-se de que todas as extensões PHP necessárias estejam instaladas e clique em Continuar. Você deve ver a seguinte página:

Clique no Continuar. Você deve ver a seguinte página:

Forneça seu nome de usuário de administrador, senha, e-mail, país, fuso horário e clique em Atualizar perfil. Você deve ver a seguinte página:

Forneça suas configurações de página inicial e clique no botão Salvar alterações para salvar as alterações.

Moodle seguro com Lets Encrypt SSL

Em seguida, você precisará instalar a ferramenta Certbot para baixar o Lets Encrypt SSL e configurar o Nginx para usar este SSL.

Primeiro, instale o Certbot com o seguinte comando:

apt-get install python3-certbot-nginx -y

Depois de instalado, execute o seguinte comando para baixar todo o SSL e configurar o Nginx para usá-lo:

certbot --nginx -d moodle.example.com

Você será solicitado a fornecer um endereço de e-mail válido e aceitar o termo de serviço conforme mostrado abaixo:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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 our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for moodle.example.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/moodle.conf

Em seguida, escolha se deseja ou não redirecionar o tráfego HTTP para HTTPS, conforme mostrado abaixo:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Digite 2 e pressione Enter para continuar. Você deve ver a seguinte saída:

Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/moodle.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://moodle.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=moodle.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/moodle.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/moodle.example.com/privkey.pem
   Your cert will expire on 2021-05-23. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

 - We were unable to subscribe you the EFF mailing list because your
   e-mail address appears to be invalid. You can try again later by
   visiting https://act.eff.org.

Agora você pode acessar o site Moodle usando o URL http://moodle.example.com

Conclusão

Parabéns! você instalou com sucesso o Moodle com Nginx e Lets Encrypt SSL no Ubuntu 20.04. Agora você pode criar facilmente seu próprio Sistema de Gerenciamento de Aprendizagem com o Moodle.

Artigos relacionados: