Moodle Installation · 20 min read · Sep 24, 2025
Instalar a Plataforma de E-Learning Moodle no Debian 9

Moodle é um sistema de gerenciamento de cursos flexível e poderoso, gratuito e de código aberto, escrito em PHP e frequentemente implantado em Linux sob servidores web Apache/Nginx com sistema de gerenciamento de banco de dados PHP e MySQL/MariaDB, também conhecido como pilha LAMP ou LEMP.
Este tutorial explicará como instalar e configurar a versão mais recente do Moodle na versão Debian 9, a fim de criar uma plataforma de e-learning em suas instalações.
A plataforma Moodle oferece uma interface web intuitiva que pode ser usada por educadores e treinadores para armazenar dados de cursos e acompanhar alunos, notas e cursos online. A maioria das principais universidades em todo o mundo está implantando a plataforma de e-learning Moodle para facilitar as atividades educacionais de seus alunos e professores.
Requisitos
Para instalar e implantar o Moodle com sucesso, seu servidor precisa atender aos requisitos abaixo.
- Um servidor Debian 9 instalado com requisitos mínimos de software em uma máquina bare-metal ou em um servidor privado virtual
- acesso direto à conta root via console ou SSH ou acesso remoto ou direto a uma conta com privilégios de root obtidos através do utilitário sudo
- Um cartão de interface de rede configurado com um endereço IP estático
- Para usar o registro de e-mail do Moodle, notificações ou outro tipo de recursos, você deve configurar corretamente um servidor de e-mail em suas instalações com acesso aos serviços IMAP, POP3 e SMTP.
- Um nome de domínio privado ou público, dependendo da sua implantação, com os registros DNS apropriados configurados para serviços web. Se você não tiver um nome de domínio válido ou registrado, pode realizar a instalação e acessar o site através do endereço IP do seu servidor.
Instalar Apache, PHP e MySQL
No primeiro passo, antes de começar a instalar e configurar a plataforma Moodle, faça login no seu servidor com a conta root ou uma conta com poderes de root e comece a atualizar os repositórios do sistema Debian e os pacotes de software emitindo os comandos abaixo.
apt updateapt upgradeEm seguida, após atualizar o software do sistema, configure o nome do seu servidor Debian executando os seguintes comandos. Certifique-se de substituir a variável hostname para corresponder às suas próprias configurações, conforme ilustrado no exemplo abaixo.
hostnamectl set-hostname www.myblog.comEntão, você pode verificar o nome do seu hostname e o arquivo hosts emitindo os comandos abaixo.
hostnamectlcat /etc/hostnamehostname –shostname –fPara aplicar as atualizações do kernel e aplicar as alterações do hostname, emita o comando abaixo para reiniciar a máquina.
systemctl rebootUm dos componentes LAMP mais importantes para implantar a plataforma de aprendizado Moodle é um banco de dados RDBMS que é usado pela aplicação web para armazenar diferentes configurações, como usuários, sessões, contatos e outros dados. Neste tutorial, configuraremos o CMS Moodle com o backend do banco de dados MariaDB com acesso de loopback ao banco de dados MySQL. Isso significa que o banco de dados só pode ser acessado via localhost ou endereço 127.0.0.1. Nenhuma conexão externa pode ser feita ao banco de dados MySQL. Para instalar o servidor de banco de dados MariaDB e o cliente no servidor Debian 9, emita o comando abaixo.
apt install mariadb-server mariadb-clientApós a instalação do banco de dados MariaDB ter sido concluída no seu servidor Debian, emita o comando netstat conforme mostrado no exemplo abaixo para verificar se o serviço está ativo e escutando por conexões no localhost, porta 3306.
netstat –tlpn | grep mysqlCaso o utilitário de rede netstat não esteja instalado por padrão no seu sistema Debian, execute o comando abaixo para instalá-lo.
apt install net-toolsA conta root do MySQL não está devidamente protegida no Debian 9 no momento da instalação. Você pode fazer login no banco de dados sem uma senha root. Para proteger a conta root, faça login no console do servidor MySQL e execute os seguintes comandos de segurança.
mysql -h localhostBem-vindo ao monitor MariaDB. Os comandos terminam com ; ou \g.
Sua ID de conexão MariaDB é 2
Versão do servidor: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab e outros.
Digite 'help;' ou '\h' para ajuda. Digite '\c' para limpar a declaração de entrada atual.MariaDB [(none)]> use mysql;Lendo informações da tabela para completar nomes de tabela e coluna
Você pode desativar esse recurso para obter um início mais rápido com -A
Banco de dados alteradoMariaDB [mysql]> update user set plugin='' where user='root';Consulta OK, 1 linha afetada (0.00 seg)
Linhas correspondentes: 1 Alteradas: 1 Avisos: 0MariaDB [mysql]> flush privileges;Consulta OK, 0 linhas afetadas (0.00 seg)MariaDB [mysql]> exitTchauApós ter imposto corretamente a segurança da conta root do banco de dados, execute o script mysql_secure_installation, fornecido pelos repositórios do Debian stretch ao instalar o banco de dados, para garantir ainda mais a segurança do banco de dados MySQL. O script fará uma série de perguntas projetadas para proteger o banco de dados MariaDB: se você deseja alterar a senha root do MySQL, remover usuários anônimos, desabilitar logins remotos de root e excluir o banco de dados de teste. Execute o script emitindo o comando abaixo e assegure-se de digitar yes para todas as perguntas, conforme mostrado no trecho de saída do script abaixo:
mysql_secure_installationNOTA: EXECUTAR TODAS AS PARTES DESTE SCRIPT É RECOMENDADO PARA TODOS OS SERVIDORES MariaDB EM USO DE PRODUÇÃO! POR FAVOR, LEIA CADA ETAPA CUIDADOSAMENTE!
Para fazer login no MariaDB para protegê-lo, precisaremos da senha atual para o usuário root. Se você acabou de instalar o MariaDB e ainda não definiu a senha root, a senha estará em branco, então você deve apenas pressionar enter aqui.
Digite a senha atual para root (enter para nenhum):
OK, senha usada com sucesso, prosseguindo...
Definir a senha root garante que ninguém possa fazer login no usuário root do MariaDB sem a devida autorização.
Você já tem uma senha root definida, então pode responder 'n' com segurança.
Alterar a senha root? [Y/n] y
Nova senha:
Reinsira a nova senha:
Senha atualizada com sucesso!
Recarregando tabelas de privilégios..
... Sucesso!
Por padrão, uma instalação do MariaDB tem um usuário anônimo, permitindo que qualquer pessoa faça login no MariaDB sem precisar ter uma conta de usuário criada para eles. Isso é destinado apenas para testes e para facilitar a instalação. Você deve removê-los antes de passar para um ambiente de produção.
Remover usuários anônimos? [Y/n] y
... Sucesso!
Normalmente, o root deve ser permitido apenas conectar-se a partir de 'localhost'. Isso garante que alguém não possa adivinhar a senha root pela rede.
Desabilitar login remoto de root? [Y/n] y
... Sucesso!
Por padrão, o MariaDB vem com um banco de dados chamado 'teste' que qualquer um pode acessar. Isso também é destinado apenas para testes e deve ser removido antes de passar para um ambiente de produção.
Remover banco de dados de teste e acesso a ele? [Y/n] y
- Excluindo banco de dados de teste...
... Sucesso!
- Removendo privilégios no banco de dados de teste...
... Sucesso!
Recarregar as tabelas de privilégios garantirá que todas as alterações feitas até agora tenham efeito imediato.
Recarregar tabelas de privilégios agora? [Y/n] y
... Sucesso!
Limpando...
Tudo pronto! Se você completou todas as etapas acima, sua instalação do MariaDB agora deve estar segura.
Obrigado por usar o MariaDB!Finalmente, após ter protegido o daemon MySQL, faça login no console do banco de dados e não forneça senha para a conta root. O acesso ao banco de dados deve ser negado se nenhuma senha for fornecida para a conta root, conforme ilustrado no trecho de comando abaixo:
mysql -h localhost -u rootERRO 1045 (28000): Acesso negado para o usuário 'root'@'localhost' (usando senha: NÃO)
Fazer login no console do banco de dados MySQL deve ser concedido se você fornecer a senha root, conforme mostrado no exemplo de comando:
mysql -h localhost -u root -pDigite a senha:
Bem-vindo ao monitor MariaDB. Os comandos terminam com ; ou \g.
Sua ID de conexão MariaDB é 15
Versão do servidor: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab e outros.
Digite 'help;' ou '\h' para ajuda. Digite '\c' para limpar a declaração de entrada atual.
MariaDB [(none)]> exit
TchauO CMS Moodle é uma aplicação baseada na web que é principalmente escrita na linguagem de programação PHP do lado do servidor. Até agora, instalamos apenas o componente do banco de dados MySQL do LAMP. Para executar os scripts de arquivo PHP da aplicação, um servidor web, como o servidor HTTP Apache, e um gateway de processamento PHP devem ser instalados e operacionais no sistema. Para instalar o servidor web Apache e o interpretador PHP juntamente com todos os módulos PHP necessários para que a aplicação funcione corretamente, emita o seguinte comando no console do seu servidor.
apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-mysql php7.0-gd php7.0-opcache php7.0-json php7.0-mbstring php7.0-xml php7.0-ldap php7.0-cli php7.0-curl php7.0-ldap php7.0-zip php7.0-bcmath php-imagick php7.0-xmlrpc php7.0-soap php7.0-intlEmita o seguinte comando para verificar se todos os módulos PHP instalados estão habilitados no seu sistema
php7.0 –mApós o Apache e o PHP terem sido instalados, teste se o servidor web está ativo e escutando por conexões de rede na porta 80 emitindo o seguinte comando com privilégios de root.
netstat –tlpnA partir da saída do comando netstat, podemos ver que o servidor web Apache está escutando por conexões de rede na porta 80. Para a mesma tarefa, você também pode usar o comando ss, que é instalado automaticamente, por padrão, no Debian 9.
ss- tulpnCaso o aplicativo de firewall UFW esteja instalado e habilitado no servidor Debian, você deve adicionar uma nova regra para permitir que o tráfego HTTP passe pelo firewall emitindo o seguinte comando.
ufw allow WWWou
ufw allow 80/tcpCaso as regras brutas do iptables sejam usadas pelo administrador do sistema para gerenciar as regras do firewall no servidor Debian, adicione as seguintes regras para permitir o tráfego de entrada na porta 80 no firewall para que os visitantes possam navegar na aplicação online.
apt-get install -y iptables-persistentiptables -I INPUT -p tcp --destination-port 80 -j ACCEPTnetfilter-persistent savesystemctl restart netfilter-persistentsystemctl status netfilter-persistentsystemctl enable netfilter-persistent.serviceCaso você esteja gerenciando remotamente seu servidor Debian via SSH, certifique-se de adicionar a regra abaixo para permitir conexões SSH de entrada na sua máquina.
iptables -I INPUT -p tcp --destination-port 22 -j ACCEPTnetfilter-persistent savesystemctl restart netfilter-persistentVocê também pode precisar habilitar e ativar os seguintes módulos do Apache necessários para que a aplicação Moodle funcione corretamente, emitindo os comandos abaixo.
a2enmod rewritesystemctl restart apache2Finalmente, teste se a página web padrão do servidor Apache pode ser exibida no navegador do seu cliente visitando o endereço IP da sua máquina Debian ou seu nome de domínio ou FQDN do servidor via protocolo HTTP, conforme mostrado na imagem abaixo. Se você não souber o endereço IP da sua máquina, execute o comando ifconfig ou ip a para revelar o endereço IP do seu servidor.

Na próxima etapa, edite o arquivo de configuração padrão do PHP para garantir que as seguintes variáveis PHP estejam habilitadas e a configuração de timezone do PHP esteja corretamente configurada e corresponda à sua localização geográfica do sistema. Abra o arquivo /etc/php/7.0/apache2/php.ini para edição e assegure-se de que as seguintes linhas estejam configuradas da seguinte forma. Além disso, inicialmente, faça um backup do arquivo de configuração do PHP.
cp /etc/php/7.0/apache2/php.ini{,.backup}nano /etc/php/7.0/apache2/php.iniPesquise, edite e altere as seguintes variáveis no arquivo de configuração php.ini:
file_uploads = On
memory_limit = 128M
post_max_size = 80M
upload_max_filesize = 80M
default_charset = UTF-8
date.timezone = Europe/LondonAumente a variável upload_max_file_size conforme adequado para suportar anexos de arquivos grandes, se esse for o caso, e substitua a variável date.timezone de acordo com seu horário geográfico consultando a lista de fusos horários fornecida pela documentação do PHP no seguinte link http://php.net/manual/en/timezones.php
Se você deseja aumentar a velocidade de carregamento das páginas do seu site através do plugin OPCache disponível para PHP7, adicione as seguintes configurações do OPCache na parte inferior do arquivo de configuração do interpretador PHP, abaixo da declaração [opcache], conforme detalhado abaixo:
nano /etc/php/7.0/apache2/conf.d/10-opcache.ini[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1Feche o arquivo de configuração php.ini e verifique se as variáveis do OPCache foram corretamente adicionadas emitindo o comando abaixo.
grep opcache /etc/php/7.0/apache2/conf.d/10-opcache.iniApós ter feito todas as alterações explicadas acima, reinicie o daemon Apache para aplicar as novas alterações emitindo o seguinte comando.
systemctl restart apache2Para acessar a interface web do Moodle via protocolo HTTPS que garantirá o tráfego para seus clientes, emita o seguinte comando para habilitar o módulo SSL do servidor web Apache e o arquivo de configuração do site SSL.
a2enmod ssla2ensite default-ssl.confEm seguida, abra o arquivo de configuração do site SSL padrão do Apache com um editor de texto e habilite as regras de reescrita de URL adicionando as seguintes linhas de código após a diretiva DocumentRoot, conforme mostrado no exemplo abaixo:
nano /etc/apache2/sites-enabled/default-ssl.conf
Trecho do arquivo de configuração do site SSL:
Options +FollowSymlinks
AllowOverride All
Require all granted
Além disso, faça a seguinte alteração na linha VirtualHost para que fique como mostrado no trecho abaixo:
Feche o arquivo SSL do Apache e abra o arquivo /etc/apache2/sites-enabled/000-default.conf para edição e adicione as mesmas regras de reescrita de URL que para o arquivo de configuração SSL. Insira as linhas de código após a declaração DocumentRoot conforme mostrado no exemplo abaixo.
Options +FollowSymlinks
AllowOverride All
Require all granted
Finalmente, reinicie o daemon Apache para aplicar todas as regras configuradas até agora e visite seu domínio via protocolo HTTP. Como você está usando os pares de certificados autoassinados emitidos pelo Apache no momento da instalação, o certificado não é confiável pelo navegador, um aviso de erro deve ser exibido no navegador.
systemctl restart apache2Aceite o aviso para aceitar o certificado não confiável e continue sendo redirecionado para a página web padrão do Apache.
Caso o aplicativo de firewall UFW bloqueie conexões de rede de entrada na porta HTTPS, você deve adicionar uma nova regra para permitir que o tráfego HTTPS passe pelo firewall emitindo o seguinte comando.
ufw allow ‘WWW Full’ou
ufw allow 443/tcpSe iptables for o aplicativo de firewall padrão instalado para proteger seu sistema Debian em nível de rede, adicione a seguinte regra para permitir o tráfego de entrada na porta 443 no firewall para que os visitantes possam navegar em seu nome de domínio.
iptables -I INPUT -p tcp --destination-port 443 -j ACCEPTnetfilter-persistent savesystemctl restart netfilter-persistentsystemctl status netfilter-persistentFinalmente, para exibir todas as variáveis PHP do servidor, crie um arquivo de informações PHP executando o seguinte comando e verifique se a configuração do fuso horário do PHP foi corretamente configurada visitando o arquivo do script de informações PHP a partir de um navegador no seguinte URL, conforme ilustrado na imagem abaixo. Role para baixo até a configuração date para verificar a configuração do fuso horário do PHP.
echo ''| tee /var/www/html/info.phpEm seguida, antes de criar o banco de dados necessário para o Moodle armazenar informações, primeiro precisamos fazer algumas alterações no servidor MariaDB e configurar o conjunto de caracteres apropriado. Abra o arquivo de configuração do cliente MariaDB e adicione a seguinte linha após a diretiva [client], conforme ilustrado no exemplo abaixo:
nano /etc/mysql/mariadb.conf.d/50-client.cnf[client]
# O padrão é Latin1, se você precisar de UTF-8, defina isso (também na seção do servidor)
default-character-set = utf8mb4Em seguida, abra o arquivo mysql.cnf e adicione a mesma linha acima após a declaração [mysql]:
nano /etc/mysql/conf.d/mysql.cnfTrecho do arquivo mysql.cnf:
default-character-set = utf8mb4Abra o arquivo de configuração do servidor MariaDB para edição e adicione as linhas abaixo após a declaração [mysqld] para garantir que o mecanismo MySQL innodb use o formato de arquivo Barracuda e o conjunto de caracteres utf8mb4.
nano /etc/mysql/mariadb.conf.d/50-server.cnfTrecho do arquivo 50-server.cnf:
[mysqld]
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
skip-character-set-client-handshakePara aplicar todas as alterações feitas até agora ao banco de dados, reinicie o daemon MySQL e verifique se o serviço está em execução emitindo os seguintes comandos.
systemctl restart mysqlsystemctl status mysqlFinalmente, faça login no console do banco de dados MariaDB e crie um banco de dados para a aplicação com um usuário e uma senha que serão usados para gerenciar o banco de dados da aplicação, emitindo os seguintes comandos. Certifique-se de substituir o nome do banco de dados, usuário e senha conforme necessário.
mysql –u root -pBem-vindo ao monitor MariaDB. Os comandos terminam com ; ou \g.
Sua ID de conexão MariaDB é 2
Versão do servidor: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab e outros.
Digite 'help;' ou '\h' para ajuda. Digite '\c' para limpar a declaração de entrada atual.MariaDB [(none)]> CREATE DATABASE moodle_db;Consulta OK, 1 linha afetada (0.00 seg)**
MariaDB [(none)]> grant all privileges on moodle_db.* to 'moodle_user'@'localhost' identified by 'password1234';Consulta OK, 0 linhas afetadas (0.00 seg)MariaDB [(none)]> flush privileges;Consulta OK, 0 linhas afetadas (0.00 seg)MariaDB [(none)]> exitTchauInstalar Moodle
Após atender a todos os requisitos do sistema para instalar a aplicação CMS Moodle, visite a página oficial de download do Moodle em https://download.moodle.org/releases/latest/ e baixe o arquivo zip mais recente comprimido no seu sistema emitindo o comando abaixo.
wget https://download.moodle.org/download.php/direct/stable34/moodle-latest-34.zipApós o download do arquivo zip ser concluído, extraia o arquivo zip do Moodle para o seu diretório de trabalho atual e liste os arquivos extraídos emitindo os comandos abaixo. Além disso, remova o arquivo index.html padrão instalado pelo servidor web Apache no caminho do webroot e também exclua o arquivo info.php criado anteriormente.
unzip moodle-latest-34.ziplsrm /var/www/html/index.htmlrm /var/www/html/info.phpEm seguida, copie todo o conteúdo do diretório extraído do Moodle para o caminho do documento raiz do seu servidor web emitindo o seguinte comando. Além disso, certifique-se de copiar os seguintes arquivos ocultos para o caminho do webroot.
cp -rf moodle/* /var/www/html/cp -rf moodle/.eslint* /var/www/html/cp -rf moodle/.gherkin-lintrc /var/www/html/cp -rf moodle/.jshintrc /var/www/html/cp -rf moodle/.s* /var/www/html/cp -rf moodle/.travis.yml /var/www/html/Em seguida, crie o diretório de dados para o Moodle um nível acima do caminho do documento raiz do seu servidor e execute os comandos abaixo para conceder ao usuário em tempo de execução do Apache permissões totais de gravação no caminho do webroot e no diretório de dados do Moodle. Use o comando ls para listar as permissões dos arquivos instalados da aplicação, localizados no diretório /var/www/html/.
mkdir /var/www/moodledatachown -R www-data:www-data /var/www/moodledata/chown -R www-data:www-data /var/www/html/ls -al /var/www/html/Agora vamos começar a instalar o CMS Moodle através do instalador da interface web. Abra um navegador e navegue até o endereço IP do seu servidor ou nome de domínio via protocolo HTTPS. Na primeira tela de instalação, escolha o idioma de instalação e pressione o botão Next para continuar.

Na próxima tela, o instalador pedirá que você confirme o endereço do servidor web, o caminho do diretório do Moodle e o caminho do diretório de dados do Moodle. Deixe as duas primeiras variáveis de caminho como padrão e adicione /var/www/moodledata para o caminho do diretório de dados do Moodle, conforme ilustrado na imagem abaixo. Clique no botão Next para continuar.

Na próxima tela, selecione MariaDB (nativo/mariadb) como driver de banco de dados e clique no botão Next para continuar o processo de instalação.

Em seguida, adicione suas configurações de banco de dados, como host do banco de dados, nome, usuário e senha. Use o nome do banco de dados e as credenciais configuradas anteriormente para o banco de dados Moodle.
O host do banco de dados deve ser definido como localhost. Adicione seu próprio prefixo de tabela de banco de dados, use 3306 como porta do banco de dados e clique no botão Next para concluir esta etapa e continuar o processo de instalação.

Na próxima tela, leia os termos e condições da licença do Moodle e clique no botão Continue para confirmar os termos da licença.

Em seguida, o script de instalação do Moodle realizará uma série de verificações no servidor para determinar se todos os requisitos estão atendidos para continuar o processo de instalação. Verifique se todas as extensões do banco de dados e do PHP estão definidas como OK, role para baixo até o final da página e clique no botão Continue para prosseguir com o processo de instalação.

Em seguida, aguarde enquanto o instalador termina de instalar uma série de módulos e clique novamente no botão Continue para passar para a próxima etapa.

Na próxima etapa, adicione uma conta de administrador do Moodle, escolha uma senha forte para esta conta e preencha todas as informações da conta, como Nome, Sobrenome, e-mail, Cidade, País, Fuso horário e descrição. Quando terminar, clique no botão Update profile para salvar as informações da conta do administrador.

Em seguida, configure o nome completo do site, adicione um nome curto para o site e um resumo da página inicial, role para baixo e clique no botão Save changes para concluir o processo de instalação.

Após concluir o processo de instalação, você será redirecionado para o painel de administração do Moodle. Aqui você pode usar o formulário de registro para registrar a aplicação no portal Moodle.net.

Para acessar a página frontal do Moodle, abra um navegador e navegue até o endereço IP do seu servidor ou nome de domínio via protocolo HTTPS.

Finalmente, retorne ao console do servidor Debian e crie um arquivo .htaccess que estará localizado no caminho do documento raiz do seu site, emitindo o comando abaixo.
nano /var/www/html/.htaccessNo arquivo .htaccess, adicione as linhas abaixo para que você possa manipular as configurações nativas do servidor PHP para corresponder aos seus próprios recursos e configurações do servidor.
Trecho do arquivo .htaccess:
** # Modificar configurações do PHP
php_value register_globals 1
php_value upload_max_filesize 100M
php_value post_max_size 100M
Options -IndexesInstalar cron
Para executar periodicamente o script de manutenção do Moodle que envia e-mails, limpa o banco de dados, atualiza feeds ou outras tarefas, adicione o trabalho cron abaixo para ser executado a cada 10 minutos, emitindo o comando abaixo.
crontab -u www-data -eAdicione a seguinte linha e salve o cronjob.
*/10 * * * * /usr/bin/php7.0 /var/www/html/admin/cli/cron.php >/dev/nullParabéns! Você instalou e configurou com sucesso o CMS Moodle no servidor Debian 9. A página de documentação do Moodle pode ser encontrada no seguinte endereço: https://docs.moodle.org/23/en/Main_page
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.