Abordaremos a implementação de um ambiente AVA baseado em Moodle e documentar os procedimentos e estratégias adotadas para instalação padronizada desse ambiente. É importante ressaltar que este documento abordará uma proposta simples e rápida de implementação, customizados e padronizados, não todas as soluções que a ferramenta propõe.

Lembrando que dividimos esse post nas seguintes partes:

Além da instalação, sugerimos que execute procedimentos de Hardening de seu ambiente.

Lembre-se que será necessário ter cadastrado o nome DNS desse sistema (altere todas as partes em cinza conforme sua necessidade). Para instalar esse servidor, você vai precisar instalar o servidor CentOS padrão: Caso tenha dúvidas consulte aqui ou no link disponibilizado nas referências.

Para a instalação, acesse https://download.moodle.org/ e verifique a versão (e o caminho para download) desejado. Em seguida, execute as sessões abaixo:

yum install httpd -y
systemctl enable httpd

Configurar os discos adicionais

Vamos adicionar os seguintes discos:

Novo DiscoEm qual pasta
/dev/sdb1 /var/www/html
/dev/sdc1 /var/log/httpd

Para executar esse procedimento leia nosso post Adicionar disco no Linux (também disponível nas referências, abaixo), em seguida execute:

mount -a
df

Verifique se as pastas /var/www/html e /var/log/httpd estão mapeadas corretamente.

Definir retenção de log para 10 dias

Agora vamos configurar o tempo de retenção do log do apache para 10 dias, para isso será necessário editar o arquivo /etc/logrotate.d/httpd.

vim /etc/logrotate.d/httpd

Aperte a tecla INSERT do teclado para entrar em modo de edição e deixa-lo da seguinte forma:

/var/log/httpd/*log {
    daily
    rotate 10
    create 660 apache apache
    missingok
    sharedscripts
    copytruncate
    compress
    delaycompress
}

Ao final, pressionar a tecla ESC para sair do modo de edição, digitar :wq! e pressionar ENTER para sair e salvar.

Configurar o Apache

mkdir -p /var/www/html/blank
chown apache.apache /var/www/html/blank

sed -i "s/Listen 80/Listen 80\nKeepAlive On\nMaxKeepAliveRequests 30\nKeepAliveTimeout 2/g" /etc/httpd/conf/httpd.conf
sed -i "s/AllowOverride None/AllowOverride All/g" /etc/httpd/conf/httpd.conf
touch /var/log/httpd/`hostname`-error.log
touch /var/log/httpd/`hostname`-requests.log
sed -i "s/#Listen 12.34.56.78:80/NameVirtualHost *:80/g" /etc/httpd/conf/httpd.conf
sed -i "s/DocumentRoot \"\/var\/www\/html\"/DocumentRoot \"\/var\/www\/html\/blank\"/g" /etc/httpd/conf/httpd.conf

service httpd start

Verifique se não ocorreram erros (se ocorrer, verifique o procedimento que foi feito).

Instalar e configurar o PHP 7.1

Para instalar e configurar o PHP execute os seguintes comandos:

yum install yum-utils -y

rpm -Uvh
https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

rpm -Uvh
http://rpms.remirepo.net/enterprise/remi-release-7.rpm

yum-config-manager --enable remi-php71

yum install -y freetds gcc-c++ php71-php-odbc php
php-common php-curl php-devel php-dom php-gd php-intl php-mbstring php-mssql php-mysql
php-pear php-soap php-xml php-xmlrpc php-zip re2c 

sed -i "s/max_execution_time = 30/max_execution_time = 600/g" /etc/php.ini
sed -i "s/max_input_time = 60/max_input_time = 600/g" /etc/php.ini
sed -i "s/default_socket_timeout = 60/default_socket_timeout = 300/g" /etc/php.ini
sed -i "s/mysql.connect_timeout = 60/mysql.connect_timeout = 300/g" /etc/php.ini
sed -i "s/;date.timezone =/date.timezone = America\/Sao_Paulo/g" /etc/php.ini
sed -i "s/allow_url_include = Off/allow_url_include = On/g" /etc/php.ini

Se quiser instalar o suporte ldap para o PHP, execute também o comando: yum install -y php-ldap

service httpd restart

Caso seja necessário criar um usuário e dar acesso ao conteúdo de um site, para o mesmo editar alterar os arquivos via SSH, utilize os comandos:

Crie o grupo ead com o comando:

groupadd ead
usermod -a -G ead apache

Criando o site

Para fazermos um bind do site ead.suaempresa.com.br, execute:

mkdir -p /var/www/html/ead.suaempresa.com.br
chown apache.apache /var/www/html/ead.suaempresa.com.br
vim /etc/httpd/conf.d/vhosts.conf

Dentro, pressione a tecla INSERT para entrar em modo de edição e insira o seguinte conteúdo no final do arquivo:

<VirtualHost *:80>
        ServerName ead.suaempresa.com.br
        ServerAlias ead
        ServerAdmin suporte@suaempresa.com.br
        DocumentRoot /var/www/html/ead.suaempresa.com.br
        ErrorLog “/var/log/httpd/ead.suaempresa.com.br-error.log”
        CustomLog “/var/log/httpd/ead.suaempresa.com.br-requests.log” combined
        Options -Indexes
</VirtualHost>

Feito isso digite a tecla ESC e em seguida digite :wq! e pressione ENTER para sair e salvar.

Instalando o Zend Opcache

Para melhorar o desempenho do Moodle, instalaremos o Zend Opcache, para isso digite:

yum install --enablerepo=fedora-source php-pecl-zendopcache php-mssql -y

sed -i "s/;opcache.revalidate_freq=2/opcache.revalidate_freq = 60/g" /etc/php.d/opcache.ini
sed -i "s/;opcache.use_cwd=1/opcache.use_cwd=1/g" /etc/php.d/opcache.ini
sed -i "s/;opcache.validate_timestamps=1/opcache.validate_timestamps=1/g" /etc/php.d/opcache.ini
sed -i "s/;opcache.save_comments=1/opcache.save_comments=1/g" /etc/php.d/opcache.ini
sed -i "s/;opcache.enable_file_override=0/opcache.enable_file_override=0/g" /etc/php.d/opcache.ini

Após os procedimentos acima, iremos realizar configurações de hardening ao Sistema Operacional e no Apache. Para isso digite:

echo "ServerSignature off" >> /etc/httpd/conf/httpd.conf
echo "Timeout 60s" >> /etc/httpd/conf/httpd.conf
echo "LimitRequestFields 20" >> /etc/httpd/conf/httpd.conf

Instalando o Moodle

Verifique no site do Moodle a versão mais atual (e altere no comando). Para instalar, execute:

cd /tmp
wget https://download.moodle.org/download.php/stable37/moodle-latest-37.tgz

tar -zxvf moodle-latest-*.tgz

sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 200M/g" /etc/php.ini
sed -i "s/post_max_size = 8M/post_max_size = 200M/g" /etc/php.ini
sed -i "s/memory_limit = 128M/memory_limit = 512M/g" /etc/php.ini

mkdir -p /var/avadata/
chown -R apache.ead /var/avadata

mv -R /tmp/moodle/* /var/www/html/ead.suaempresa.com.br 
rm -rf /tmp/moodle*
chown -R apache:ead /var/www/html/ead.suaempresa.com.br
chmod -R 775 /var/www/html/ead.suaempresa.com.br
touch /var/log/httpd/ead.suaempresa.com.br-error.log
touch /var/log/httpd/ead.suaempresa.com.br-requests.log
cd /var/www/html/ead.suaempresa.com.br
cp config-dist.php config.php
vim config.php

Altere as seguintes linhas:

De:Para:
$CFG->dbtype    = ‘pgsql’;$CFG->dbtype    = ‘mysqli’;
$CFG->dbhost    = ‘localhost’ $CFG->dbhost    = ‘IP_DO_SERVIDOR_BANCO‘;
$CFG->dbname    = ‘moodle’;$CFG->dbname    = ‘nome_da_base‘;
$CFG->dbuser    = ‘username’ $CFG->dbuser    = ‘usuario_banco‘;
$CFG->dbpass    = ‘password’;$CFG->dbpass    = ‘senha_banco‘;
$CFG->wwwroot   = ‘http://example.com/moodle’;$CFG->wwwroot   = ‘http://ead.suaempresa.com.br’;
$CFG->dataroot  = ‘/home/example/moodledata’;$CFG->dataroot  = ‘/var/avadata’;

Implementando o site HTTPS

Se o site for HTTPS, configure o apache para usar HTTPS (use esse link, ou consulte nas referências, abaixo) em seguida execute:

cd /var/www/html/ead.suaempresa.com.br
vim config.php

Altere as seguintes linhas:

De:Para:
$CFG->wwwroot   = ‘http://ead.suaempresa.com.br’;$CFG->wwwroot   = ‘https://ead.suaempresa.com.br’;
//      $CFG->sslproxy = true;$CFG->sslproxy = true;

Feito isso digite a tecla ESC e em seguida digite :wq! e pressione ENTER para sair e salvar.

Configurando a pasta Moodle Data

service httpd stop
yum install nfs-utils -y

echo "IP_SERVIDOR_NFS:/var/avadata               /var/avadata          nfs     defaults        0 0" >> /etc/fstab
mount -a
df

Verifique se a pasta está /var/avadata mapeada no disco IP_SERVIDOR_NFS:/var/avadata, estando correto reinicie o apache:

service httpd start

Opcional – Configurando o envio de E-mail (Postfix)

A aplicação Moodle tem a necessidade realizar o envio de notificações de e-mail. Para configurar este serviço siga as etapas abaixo (IMPORTANTE: Lembrar de cadastrar o endereço IP desse host com acesso ao RELAY.SUAEMPRESA.COM.BR):

yum install cyrus-sasl-plain -y

cp -R /etc/postfix/main.cf /etc/postfix/main.cf.bkp

echo "# CONFIGURACAO PARA O MOODLE" >> /etc/postfix/main.cf
echo "" >> /etc/postfix/main.cf
echo "biff = no" >> /etc/postfix/main.cf
echo "append_dot_mydomain = no" >> /etc/postfix/main.cf
echo "readme_directory = no" >> /etc/postfix/main.cf
echo "myhostname = `echo hostname | tr 'A-Z' 'a-z'`" >> /etc/postfix/main.cf
echo "mydomain = suaempresa.com.br" >> /etc/postfix/main.cf
echo "myorigin = $mydomain" >> /etc/postfix/main.cf
echo "mydestination = `echo hostname | tr 'A-Z' 'a-z'`, localhost.suaempresa.com.br, localhost" >> /etc/postfix/main.cf
echo "#relayhost = relay.suaempresa.com.br" >> /etc/postfix/main.cf
echo "mynetworks = 127.0.0.0/8 REDE_SERVERS/CIDERIZADA" >> /etc/postfix/main.cf
echo "mailbox_command = procmail -a \"$EXTENSION\"" >> /etc/postfix/main.cf
echo "recipient_delimiter = +" >> /etc/postfix/main.cf
echo "smtp_sasl_security_options = noanonymous" >> /etc/postfix/main.cf
echo "relayhost = [relay.suaempresa.com.br]:porta" >> /etc/postfix/main.cf
echo "#smtp_use_tls = no" >> /etc/postfix/main.cf
echo "smtp_sasl_auth_enable = yes" >> /etc/postfix/main.cf
echo "smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd" >> /etc/postfix/main.cf
echo "[relay.suaempresa.com.br]:porta usuario_com_acesso@suaempresa.com.br:senha" > /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd

postmap /etc/postfix/sasl_passwd

Fontes/Referências

NVLAN – Adicionar disco no Linux
NVLAN – Criando um ambiente Moodle: Parte 1 – Introdução
NVLAN – Criando um ambiente Moodle: Parte 2 – Sugestão de Topologia
NVLAN – Criando um ambiente Moodle: Parte 3 – Balanceador de Carga
NVLAN – Criando um ambiente Moodle: Parte 4 – Compartilhamento de Arquivos
NVLAN – Criando um ambiente Moodle: Parte 5 – Banco de Dados
NVLAN – Configurar o apache como HTTPS (com SSL) no CentOS
NVLAN – Instalação padrão do CentOS7
NVLAN – Recuperando os acessos do ambiente Moodle

https://www.howtoforge.com/nfs-server-and-client-on-centos-7
https://www.markbrilman.nl/2011/08/howto-convert-a-pfx-to-a-seperate-key-crt-file/

Mais Informações

Esperamos ter ajudado da melhor forma possível e estaremos sempre a disposição para mais informações.

Entre em contato conosco pelo e-mail equipe@nvlan.com.br.

NVLAN - Consultoria