Pesquisa de site

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


Este tutorial existe para estas versões do sistema operacional

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 16.04 (Xenial Xerus)

Nesta página

  1. Pré-requisitos
  2. Primeiros passos
  3. Instalar Nginx, MariaDB e PHP
  4. Criar um banco de dados para o Moodle
  5. Instale o Moodle no Ubuntu 22.04
  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 e CMS gratuito e de código aberto escrito em PHP. Ele permite que tutores e instrutores criem cursos para seus alunos e oferece educação a distância e outros programas de aprendizado on-line mais acessíveis. O Moodle oferece um painel simples, fácil de usar e personalizado que ajuda os usuários a acessar cursos atuais, anteriores ou futuros e revisar trabalhos pendentes. Ele é projetado para professores e educadores que visam fornecer educação com conhecimento de tecnologia.

Este tutorial mostrará como instalar o Moodle com Nginx e Lets Encrypt SSL no Ubuntu 22.04.

Pré-requisitos

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

Começando

Primeiro, você deve atualizar os pacotes do sistema para a versão mais recente. Você pode atualizar todos eles executando o seguinte comando:

apt-get update -y

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

Instalar Nginx, MariaDB e PHP

Antes de começar, você precisará instalar o Apache, MariaDB, PHP e outras bibliotecas PHP em seu sistema. Primeiro, instale o servidor Apache e MariaDB usando o seguinte comando:

apt-get install nginx mariadb-server -y

Por padrão, o Ubuntu 22.04 vem com a versão PHP 8.1 e o Moodle não suporta esta versão do PHP. Portanto, você precisará instalar o PHP 7.4 em seu servidor.

Primeiro, instale todas as dependências necessárias usando o seguinte comando:

apt install software-properties-common ca-certificates lsb-release apt-transport-https -y

Em seguida, adicione o repositório PHP ao seu servidor com o seguinte comando:

add-apt-repository ppa:ondrej/php

Em seguida, atualize o repositório usando o seguinte comando:

apt update

Depois que o repsoitory for atualizado, instale o PHP com outras extensões necessárias usando o seguinte comando:

apt install php7.4 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 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
max_input_vars = 6000

cgi.fix_pathinfo = 0
upload_max_filesize = 100M
max_execution_time = 360
date.timezone = UTC

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.

Crie um banco de dados para o Moodle

O Moodle usa 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

Instale o Moodle no Ubuntu 22.04

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_400_STABLE git://git.moodle.org/moodle.git moodle

Em seguida, defina a permissão e propriedade adequadas para o Moodle:

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, em seguida, 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

Você também pode verificar o status do serviço Nginx usando o seguinte comando:

systemctl status nginx

Você deve ver a seguinte saída:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-07-18 07:08:50 UTC; 26s ago
       Docs: man:nginx(8)
    Process: 51379 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 51382 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 51383 (nginx)
      Tasks: 3 (limit: 4579)
     Memory: 3.6M
        CPU: 64ms
     CGroup: /system.slice/nginx.service
             ??51383 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ??51384 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             ??51385 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Jul 18 07:08:50 ubuntu2204 systemd[1]: Starting A high performance web server and a reverse proxy server...
Jul 18 07:08:50 ubuntu2204 systemd[1]: Started A high performance web server and a reverse proxy server.

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 2022-10-19. 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 22.04. Agora você pode explorar os recursos do Moodle e criar facilmente seu próprio Sistema de Gerenciamento de Aprendizagem on-line. Sinta-se à vontade para me perguntar se tiver alguma dúvida

Artigos relacionados: