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:
- Criando um ambiente Moodle: Parte 1 – Introdução
- Criando um ambiente Moodle: Parte 2 – Sugestão de Topologia
- Criando um ambiente Moodle: Parte 3 – Balanceador de Carga
- Criando um ambiente Moodle: Parte 4 – Compartilhamento de Arquivos
- Criando um ambiente Moodle: Parte 5 – Banco de Dados
- Criando um ambiente Moodle: Parte 6 – Aplicação
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 Disco | Em 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.