Pesquisa de site

Como instalar o Moodle 3.2 no CentOS 7


Nesta página

  1. Etapa 1 - Instalar o Nginx
  2. Etapa 2 - Instalar e configurar o PHP-FPM
  3. Etapa 3 - Instalar e configurar o servidor MariaDB
  4. Etapa 4 - Baixe e configure o Moodle
  5. Etapa 5 - Configurar SSL e Host Virtual
  6. Etapa 6 - Configurar SELinux e Firewalld
  7. Etapa 7 - Instalar o Moodle
  8. Etapa 8 - Teste
  9. Referência

O Moodle é um software de eLearning de código aberto escrito em PHP. É usado para educação a distância, projetos de e-learning e aprendizado combinado. Moodle é um acrônimo para Modular-object-oriented dynamic learning environment, desenvolvido por Martin Dougiamas e lançado sob a licença GPL para ajudar educadores e professores a criar cursos online com foco na interação e construção colaborativa de conteúdo.

Neste tutorial, mostrarei passo a passo como instalar a última versão estável do Moodle, que atualmente é o Moodle 3.2. O Moodle será executado no servidor web Nginx, usando um servidor de banco de dados MariaDB e PHP-FPM7.0. Para o sistema operacional, usaremos o CentOS 7.

Pré-requisito

  • Servidor CentOS 7
  • Privilégios de root

O que nos faremos:

  1. Instalar o Nginx
  2. Instalar e configurar o PHP-FPM
  3. Instalar e configurar o MariaDB
  4. Baixe e configure o Moodle
  5. Configurar SSL e Host Virtual
  6. Configurar SELinux e Firewalld
  7. Instalando o Moodle
  8. Teste

Passo 1 - Instale o Nginx

Nesta etapa, instalaremos o Nginx a partir do repositório epel. O Nginx não está disponível no repositório Centos por padrão, então precisamos adicionar um novo repositório epel-repository para instalar o Nginx.

Instale o repositório epel com o comando yum.

yum -y install epel-release

Em seguida, instale o Nginx do repositório epel.

yum -y install nginx

Quando a instalação estiver concluída, inicie o Nginx e habilite-o para iniciar automaticamente no momento da inicialização.

systemctl start nginx
systemctl enable nginx

O Nginx foi instalado e está rodando na porta 80. Verifique a porta aberta no sistema com netstat.

netstat -plntu

Se você não tiver o comando netstat instalado, poderá instalar o pacote net-tools para obtê-lo.

yum -y install net-tools

Etapa 2 - Instalar e configurar o PHP-FPM

O Moodle 3.2 suporta a nova versão do PHP 7, então usaremos o PHP 7.0. O PHP-FPM 7.0 não está disponível no repositório padrão do CentOS. Existe um repositório de terceiros da webtatic para PHP7 que usarei aqui.

Adicione o novo repositório webtatic ao sistema com o comando rpm.

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Em seguida, instale o PHP-FPM 7.0 com todas as extensões e pacotes necessários para o Moodle.

yum install -y graphviz aspell php70w-fpm php70w-cli php70w-pspell php70w-curl php70w-gd php70w-intl php70w-mysql php70w-xml php70w-xmlrpc php70w-ldap php70w-zip php70w-json php70w-opcache php70w-readline php70w-mbstring php70w-soap

Quando a instalação estiver concluída, edite o arquivo de configuração do PHP php.ini com o vim.

vim /etc/php.ini

Descomente a linha cgi.fix_pathinfo e altere o valor para 0.

cgi.fix_pathinfo=0

Salve o arquivo php.ini e saia do vim.

Vá para o diretório de configuração do php-fpm e edite o arquivo de configuração do php-fpm www.conf.

cd /etc/php-fpm.d/
vim www.conf

Altere as linhas do usuário e do grupo para nginx para que o servidor da Web seja executado sob o usuário e o grupo nginx.

user = nginx
group = nginx

Em vez de usar a porta do servidor, usaremos um arquivo de soquete para php-fpm. Altere o valor da linha de escuta para /run/php-fpm/php-fpm.sock.

listen = /run/php-fpm/php-fpm.sock

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.

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Configure as extensões de arquivo que o PHP irá analisar.

Permitir apenas arquivos .php.

security.limit_extensions = .php

Descomente as linhas da variável de ambiente PHP-FPM abaixo.

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

Salve o arquivo e saia do editor.

Agora precisamos criar um novo diretório para o caminho da sessão php. Crie o novo diretório e altere o proprietário do diretório para o usuário e grupo nginx.

mkdir -p /var/lib/php/session/
chown -R nginx:nginx /var/lib/php/session/

Altere o proprietário do diretório do arquivo de soquete php-fpm para o usuário nginx também.

chown -R nginx:nginx /run/php-fpm/

A configuração do PHP-FPM foi concluída. Inicie o PHP-FPM e adicione-o para iniciar automaticamente no momento da inicialização com os dois comandos systemctl a seguir.

systemctl start php-fpm
systemctl enable php-fpm

O PHP-FPM será executado em um arquivo de soquete, verifique-o para garantir que o PHP-FPM esteja sendo executado com o netstat novamente.

netstat -lx | grep php-fpm.sock

Etapa 3 - Instalar e configurar o servidor MariaDB

Usarei MariaDB como servidor de banco de dados para este tutorial. Vou instalar o mariadb-server do repositório Centos e, em seguida, configurar a senha root do MariaDB e adicionar um novo banco de dados e usuário para o Moodle.

Instale o mariadb-server com o comando yum abaixo.

yum -y install mariadb-server mariadb

Quando a instalação estiver concluída, edite o arquivo de configuração my.cnf.

vim /etc/my.cnf

No final da seção [mysqld], cole a configuração abaixo.

default_storage_engine = innodb
innodb_file_per_table = 1
innodb_file_format = Barracuda

Salve e saia, inicie o MariaDB e habilite-o para iniciar no momento da inicialização.

systemctl start mariadb
systemctl enable mariadb

O MariaDB foi instalado e está rodando na porta 3306 agora, mas ainda não há senha de root, então precisamos configurá-lo. Use o comando abaixo para definir uma nova senha root do MySQL.

mysql_secure_installation

Você será solicitado a fornecer uma nova senha root do MySQL.

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

A configuração do MariaDB está concluída.

Em seguida, conecte-se ao shell MySQL com o comando mysql, crie um novo banco de dados e usuário para Moodle, conceda privilégios para o banco de dados ao novo usuário.

Conecte-se ao shell mysql.

mysql -u root -p
TYPE YOUR PASSWORD

Execute as consultas mysql abaixo para criar um novo usuário moodleuser com a senha hakaselabs123 e um novo banco de dados moodledb e, em seguida, conceda todos os privilégios do banco de dados ao novo usuário. Por favor, escolha uma senha diferente e segura em seu servidor!

CREATE DATABASE moodledb DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'hakaselabs123';
GRANT ALL PRIVILEGES ON moodledb.* TO 'moodleuser'@'localhost' IDENTIFIED BY 'hakaselabs123';
FLUSH PRIVILEGES;

Usuário e banco de dados para Moodle foram criados.

Passo 4 - Baixe e configure o Moodle

Faremos o download do Moodle diretamente do repositório GitHub, então precisamos do comando git no sistema. Instale o git com o yum conforme mostrado abaixo.

yum -y install git

Em seguida, crie um novo diretório web root /var/www/.

mkdir -p /var/www/

Vá para o diretório /var/www/ e clone o Moodle do repositório GitHub.

cd /var/www/
git clone https://github.com/moodle/moodle.git

Em seguida, vá para o diretório Moodle e verifique os ramos Moodle disponíveis.

cd moodle/
git branch -a

Liste as ramificações estáveis do Moodle, escolha a ramificação estável mais recente e faça o checkout da versão mais recente da ramificação estável.

git branch --track MOODLE_32_STABLE orogin/MOODLE_32_STABLE
git checkout MOODLE_32_STABLE

Agora você deve estar no último ramo estável do Moodle, você pode verificar isso com o comando git abaixo.

git status

Você verá os resultados abaixo.

# On branch MOODLE_32_STABLE
nothing to commit, working directory clean

Agora crie um novo diretório moodledata e certifique-se de que o proprietário do diretório seja o usuário e grupo nginx.

mkdir -p /var/moodledata
chown -R nginx:nginx /var/moodledata
chmod 777 /var/moodledata

Altere o proprietário do diretório moodle para o usuário nginx.

chown -R nginx:nginx /var/www/moodle
chmod 755 /var/www/moodle

Moodle foi baixado.

Passo 5 - Configurar SSL e Host Virtual

Executaremos o Moodle em um servidor web nginx com uma conexão HTTPS segura. Quando você estiver em um servidor ativo, poderá usar seu próprio arquivo de certificado ou usar um certificado gratuito de permite criptografar. Estou aqui no meu computador local, então posso gerar um novo arquivo de certificado autoassinado por conta própria.

Crie um diretório SSL e gere os novos arquivos de certificado com o comando openssl abaixo.

mkdir -p /etc/nginx/ssl/
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/moodle.crt -keyout /etc/nginx/ssl/moodle.key

Altere a permissão da chave privada.

chmod 600 /etc/nginx/ssl/moodle.key

Em seguida, vá para o diretório de configuração do nginx usando o comando cd e crie um novo arquivo de host virtual para moodle no diretório conf.d.

cd /etc/nginx/
vim conf.d/moodle.conf

Cole o host virtual nginx moodle abaixo.

# PHP Upstream Handler
upstream php-handler {
    server unix:/run/php-fpm/php-fpm.sock;
}

# Nginx redirect HTTP to HTTPS - moodle.hakase-labs.com
server {
    listen 80;
    server_name moodle.hakase-labs.com;
    # enforce https
    return 301 https://$server_name$request_uri;
}

# HTTPS Configuration
server {
        server_name          moodle.hakase-labs.com;

        listen               *:443 ssl http2;
        listen               [::]:443 ssl http2;

        # SSL Configuration   
        ssl  on;
        ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES128-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA128:DHE-RSA-AES128-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA128:ECDHE-RSA-AES128-SHA384:ECDHE-RSA-AES128-SHA128:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA384:AES128-GCM-SHA128:AES128-SHA128:AES128-SHA128:AES128-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
        add_header X-Frame-Options DENY;
        add_header X-Content-Type-Options nosniff;
        ssl_session_tickets off;
        #ssl_stapling on;
        #ssl_stapling_verify on;
        resolver_timeout 5s;
        ssl_certificate /etc/nginx/ssl/moodle.crt;
        ssl_certificate_key /etc/nginx/ssl/moodle.key;
       
        # Root Moodle Data DIrectory
        root /var/www/moodle;
        rewrite ^/(.*\.php)(/)(.*)$ /$1?file=/$3 last;

        location ^~ / {
                try_files $uri $uri/ /index.php?q=$request_uri;
                index index.php index.html index.htm;

                location ~ \.php$ {
                        include fastcgi.conf;
                        fastcgi_pass php-handler;
                }
        }
}

Salve o arquivo de configuração e saia do vim.

Teste a configuração do Nginx e certifique-se de que não haja nenhum erro, então reinicie o Nginx.

nginx -t
systemctl restart nginx

Certificados SSL e nova configuração de host virtual para moodle está concluída.

Etapa 6 - Configurar o SELinux e o Firewalld

Nesta etapa, configuraremos o SELinux e o Firewalld. Se o seu SELinux estiver desligado e você não quiser usá-lo, pule esta etapa e comece a configurar o Firewalld. Verifique o status do SELinux e certifique-se de que o firewalld esteja instalado.

Verifique o status do SELinux com o comando abaixo.

sestatus

O SELinux está ativado com o modo Enforcing.

Para configurar o SELinux, precisamos das ferramentas de gerenciamento do SELinux instaladas no sistema.

Instale policycoreutils-python com yum.

yum -y install policycoreutils-python

Agora altere os arquivos de contexto do SELinux e as configurações do diretório para o diretório raiz da web do moodle e o diretório de dados do moodle com o comando semanage abaixo.

semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/moodle(/.*)?'
restorecon -Rv '/var/www/moodle/'

semanage fcontext -a -t httpd_sys_rw_content_t '/var/moodledata(/.*)?'
restorecon -Rv '/var/moodledata/'

A configuração do SELinux para moodle foi concluída, agora devemos configurar o Firewalld.

Instale pacotes firewalld se você não tiver isso.

yum -y install firewalld

Inicie o firewalld e adicione o firewalld automaticamente para iniciar no momento da inicialização.

systemctl start firewalld
systemctl enable firewalld

Em seguida, abra as portas para HTTP, HTTPS e SSH com o comando firewall-cmd abaixo.

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-service=ssh

Recarregue o firewalld e verifique se HTTP e HTTPS estão na lista de serviços.

firewall-cmd --reload
firewall-cmd --list-all

Configuração do firewalld concluída.

Passo 7 - Instale o Moodle

A preparação para a instalação do Moodle foi concluída. Agora podemos instalar o Moodle visitando o nome de domínio do host virtual Moodle. Neste tutorial, o nome de domínio que usei é moodle.hakase-labs.com.

Abra seu navegador da Web e digite a URL moodle.hakase-labs.com na barra de endereço.

Você verá a página de instalação do Moodle, escolha seu idioma, no meu caso inglês, e clique em Avançar.

Agora insira os dados de configuração do moodle: endereço web moodle.hakase-labs.com, diretório root web moodle /var/www/moodle, diretório moodledata /var/moodledata e clique em Next para continuar.

Para o driver do banco de dados, escolha MySQL conforme abaixo e clique em Avançar.

Configuração do banco de dados moodle.

  • Host do banco de dados: localhost
  • Nome do banco de dados: moodledb
  • Usuário do banco de dados: moodleuser
  • Senha do banco de dados: hakaselabs123
  • Prefixo da tabela: moodle_
  • Porta do banco de dados: 3306
  • Socket Unix: /var/lib/mysql/mysql.sock

Em seguida, clique em Avançar.

Para o aviso de direitos autorais, clique no botão Continuar.

O Moodle verificará o sistema e todos os requisitos de extensão php, certifique-se de que todos os resultados estejam corretos e clique em Continuar para instalar.

A instalação do Moodle começa. Certifique-se de que todos os resultados são bem-sucedidos e clique em Continuar para configurar o Moodle.

Configuração do administrador do usuário. Digite suas informações como nome, e-mail, senha, etc. e clique em Atualizar perfil.

Configuração da página inicial do Moodle, digite as informações do moodle e clique em Salvar alterações.

E você será redirecionado para o painel de administração do usuário Moodle.

A instalação do Moodle foi concluída sem erros.

Passo 8 - Teste

Visite a página inicial do Moodle - moodle.hakase-labs.com.

Página de login do Moodle - moodle.hakase-labs.com/login/.

Painel do usuário do Moodle.

Administração do site Moodle para configuração do sistema Moodle.

Preferências do usuário Moodle.

A instalação do Moodle com o servidor web Nginx, php-fpm e MariaDB no sistema CentOS 7 foi bem-sucedida.

Referência

  • https://docs.moodle.org/32/en/RedHat_Linux_installation

Artigos relacionados: