Skip to content

Instalacao da Ferramenta

Roberto Silvino edited this page Mar 1, 2019 · 10 revisions

Introdução

Inicialmente será necessário instalar e configurar o docker, que será responsável por criar uma instância do ambiente de produção da ferramenta de TCC de forma simplificada.

As instruções para criar esta instância do ambiente está no repositório da ferramenta de TCC, disponível no Github.

Após baixar o repositório da ferramenta de TCC na máquina onde será executada a ferramenta, será necessário executar shell scripts para a geração das Imagens docker. Estas imagens docker serão, então, instanciadas para a execução da ferramenta de TCC. No entanto, antes de sua execução, configurações da ferramenta de TCC serão necessárias para o correto funcionamento.

Para o procedimento inicial ficar mais simples, serão instaladas bases de dados de demonstação, onde todas as ligações da ferramenta de TCC com o Moodle já estarão corretamente configuradas. Desta forma será possivel ver o ambiente operacional e replicar para o ambiente de produção posteriormente, bastando apenas ajustes na configuração e redirecionamento de localizações de configurações e base de dados.

O detalhamento das configuirações da Ferramenta de TCC será necessário para a compreensão dos dados contidos no ambiente de demonstração e para a correta configuração do ambiente de produção final.

Após restaurada a base de demonstração e verificadas as configurações da ferramenta de tcc poderá ser relizada a geração das imagems docker para sua execução. Com as imagens geradas já é possível executar a ferramenta de TCC

Instalar docker e docker compose

Ubuntu 16.04 e superior:

sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
chmod a+x /usr/local/bin/docker-compose
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt-get install docker-ce

Configurar permissões

Os passos a seguir podem ser usados nas máquinas de desenvolvimento, para facilitar a utilização dos comandos docker, no entanto, para as máquinas de produção o docker não deve ter permissão de super usuário, por questões de segurança

Siga os passos descritos na documentação do Docker

Adicione permissões para que não seja preciso executar o Docker Compose com o super usuário:

sudo groupadd docker
sudo usermod -aG docker $USER

Use este comando para testar:

docker run hello-world

Caso o último comando resulte em erro, mude as permissões de seus arquivos.

$ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
$ sudo chmod g+rwx "$HOME/.docker" -R

Se ainda assim o problema persistir, faça logout e login novamente para atualizar as permissões.

Liberar espaço em disco

Após algum tempo de uso, o Docker mantém arquivos que podem ser apagados para liberação de espaço em disco. Para remover imagens, contâiners e volumes não utilizados:

docker images --no-trunc | grep '<none>' | awk '{ print $3 }' | xargs -r docker rmi
docker ps --filter status=dead --filter status=exited -aq | xargs docker rm -v
docker volume ls -qf dangling=true | xargs -r docker volume rm

Baixar o repositório da ferramenta de TCC

Para baixar o repositório da ferramenta de TCC será necessário executar o comando a seguir:

git clone [email protected]:UFSC/moodle-tcc.git moodle-tcc-tool -b TCC_2_8_1 --recursive

Este comando já inicializa os repositório relacionados com o repositório principal, o da ferramenta de TCC.

Restaurar bases de dados de demonstração

Dados de demonstração foram preparados para facilitar a configuração e execução inicial da ferramenta de TCC.

Os usuários pré-cadastrados são:

Nome Login Senha E-mail
Admin Admin Admin#123 [email protected]
Aluno A aluno.a Alunoa#0 [email protected]
Aluno B aluno.b Alunob#0 [email protected]
Aluno C aluno.c Alunoc#0 [email protected]
Aluno D aluno.d Alunod#0 [email protected]
Coordenador AVEA coord.avea Coordavea#0 [email protected]
Coordenador Tutoria coord.tutoria Coordtutoria#0 [email protected]
Orientador E orientador.e Orientadore#0 [email protected]
Orientador F orientador.f Orientadorf#0 [email protected]
Tutor G tutor.g Tutorg#0 [email protected]
Tutor H tutor.h Tutorh#0 [email protected]

Para as configurações existentes o nome da base de dados para a ferramenta de TCC deve ser tcc_github. O nome desta base de dados pode ser alterada, para isso o arquivo ./config/database.yml deve ser alterado, na variável database para conter o novo nome, se for necessário.

O arquivo de backup da ferramenta de TCC de demonstração deve ser restaurado no database tcc_github antes que a imagem docker seja executada.

Configurar ferramenta de TCC

Passos de configuração

Passo 1

Criar uma configuração de vhost no nginx. Existe um exemplo desta configuração no repositório: https://github.com/UFSC/moodle-tcc/blob/TCC_2_8_1/docker/staging_passenger/config/nginx-app-local.conf

Este passo configura o proxy nginx com chaves de segurança para acesso via https.

Foram criadas chaves de segurança auto-assinadas que servem apenas para teste. Estas chaves estão em docker/staging_passenger/config/cert.crt e docker/staging_passenger/config/cert.key e devem ser colocadas na máquina onde o proxy nginx estará atuando. Estes arquivos devem ser copiados para o diretório /etc/ssl/certs_app na máquina do proxy nginx, para que as chaves possam ser validadas. No entanto a comunicação entre o proxy nginx e o container onde estará rodando a ferramenta de TCC será realizada via http normal, pois a segurança das chaves será feita no proxy nginx antes da chamada do container.

Havendo a necessidade de troca de chaves, para a chave definitiva do site a ser utilizado, deve-se sobrepor os arquivos docker/staging_passenger/config/cert.crt e docker/staging_passenger/config/cert.key antes da geração da imagem, pois estes arquivos serão utilizados dentro do docker.

O arquivo de configuração do vhost para o proxy nginx da ferramenta de TCC pode ser copiado do arquivo docker/staging_passenger/config/nginx-app-local.conf para o diretório de configurações do nginx, conforme comandos a seguir:

sudo cp docker/staging_passenger/config/nginx-app-local.conf /etc/nginx/sites-available/tcc-docker.conf
sudo ln -s /etc/nginx/sites-available/tcc-docker.conf /etc/nginx/sites-enabled/tcc-docker.conf
sudo service nginx restart

Caso não seja necessária a utilização de https, com chaves de segurança, utilizando apenas http, então o arquivo a ser usado como configuração deverá ser o docker/staging_passenger/config/nginx-app-local.conf.80

sudo cp docker/staging_passenger/config/nginx-app-local.conf.80 /etc/nginx/sites-available/tcc-docker.conf
sudo ln -s /etc/nginx/sites-available/tcc-docker.conf /etc/nginx/sites-enabled/tcc-docker.conf
sudo service nginx restart

Passo 2

Variáveis de ambiente deverão ser configuradas para o sistema.

Estas variáveis de ambiente estarão localizadas no arquivo docker/.env. No entanto este arquivo não existe no repositório, pois ele é transitório. Um exemplo pode ser copiado do arquivo docker/.env.example

cp docker/.env.example docker/.env

As sequintres variáveis poderão ser inicializadas:

Nome (variável) Padrão Descrição
DB_USERNAME root Nome do usuário do banco de dados
DB_PASSWORD root Senha do usuário do banco de dados
DB_DATABASENAME tcc_github Nome do banco de dados
DB_HOST_IP homologacao-database Host ou IP da localização do banco de dados. Esta variável será inicializada no arquivo docker/docker-compose.staging_passenger.yml na seção web_stg_passenger / extra_hosts
DB_PORT 3306 Porta da máquina onde o banco de dados será acessado
RAILS_ENV production Nome do ambiente (contexto) em que o sistema será executado

Após a cópia das variáveis de ambiente exemplo, os valores definitivos devem ser alterados, contemplando os valores reais do sistema.

Passo 3

(Passo opcional)

Caso a ferramenta de TCC esteja em DNS de teste, como no caso do ambiente de demonstação, poderá ser adicionado o dns deste serviço (server_name) homologacao-tcc-docker.ifes.br em uma linha no arquivo /etc/hosts da máquina que irá ser testado o sistema (na máquina do usuário).

Deve-se editar o arquivo /etc/hosts e adicionar a linha a seguir:

192.168.1.8   homologacao-tcc-docker.ifes.br

Onde 192.168.1.8 deverá ser o IP da máquina onde está rodando o docker da ferramenta de TCC

Passo 4

(Passo opcional)

Caso o Moodle também esteja em DNS de teste, como no caso do ambiente de demonstação, deverá ser informado em qual IP o server_name do serviço está rodando. Neste caso o arquivo docker/docker-compose.staging_passenger.yml deverá ser editado, conforme informações a seguir:

 ...
 web_stg_passenger:
    ...
    ...
    extra_hosts:
      - "homologacao-database:192.168.1.6"
# Caso seja um DNS local, para testes, então adicionar host abaixo
      - "homologacao-moodle35.ifes.br:192.168.1.7"
    volumes:
      - assets_stg:/home/app/repo/shared/assets
    ...

Onde 192.168.1.6 deverá ser o IP da máquina onde está rodando o Moodle com os dados restaurados de demonstração.

O arquivo docker/docker-compose.staging_passenger.yml será utilizado para executar a imagem da ferramenta de TCC, por isso esta configuração deve ser realizada antecipadamente à sua execução.

Outra configuração que deve ser conferida é o IP do serviço de banco de dados, neste caso a configuração contida no extra_hosts na linha homologacao-database:192.168.1.7, onde homologacao-database é o DNS de acesso do serviço de banco de dados, localizado no IP 192.168.1.7, onde foi restaurada a base de dados de demonstaração da ferramenta de TCC.

O DNS homologacao-database será utilizado no arquivo de configuração da ferramenta de TCC (database.yml) para direcionar o acesso ao banco de dados MySQL.

Detalhes das tabelas

Duas tabelas necessitam ser configuradas diretamente pelo banco de dados, pois não possuem interface de edição durante a execução da ferramenta. As tabelas são tcc_definition e chapter_definition, detalhada nos capítulos a seguir.

As outras tabelas e configurações poderão ser realizadas via interface, durante a execução da ferramenta.

Importante: O arquivo /db/seed.rb é utilizado para a inicialização do banco de dados, isto é, sempre será executado durante a incialização da aplicação para manter a integridade dos dados. Desta forma um dado inserido neste arquivo, para a inicialização do banco de dados, deverá ser alterado também por este arquivo, caso contrário toda a alteração realizada diretamente no banco de dados será perdida e sobreposta com as informações deste arquivo. Inicialmente os dados de demonstração foram inseridos neste arquivo para exemplificar seu funcionamento. Deve-se verificar se a URL do moodle (atividade LTI do TCC) per manece a mesma, caso mude, o arquivo também deve ser alterado e não somente a base de dados.

tcc_definition

Esta tabela conterá a ligação com o Moodle e a qual atividade do curso cada turma de TCC estará vinculada.

Campo Default Descrição
id auto Auto incremental, este valor será utilizado na chamada da ferramenta de TCC dentro da atividade do Moodle, asim como como chave de ligação (primária) para a tabela chapter_definition
internal_name 'Tcc teste - Turma A' Nome curto da turma/curso
activity_url 'http://homologacao-moodle35.ifes.br/mod/lti/view.php?id=2' URL da atividade do Moodle onde será chamada a ferramenta de TCC.
course_id 2 É o identificador da URL no curso/modulo moodle, URL quando acessa o curso/modulo Ex.: http://homologacao-moodle35.ifes.br/course/view.php?id=2, neste exemplo o id do curso é 2
moodle_instance_id 2 É o identificador da instância LTI dentro da base de dados do Moodle

Para encontrar o valor do moodle_instance_id basta executar o SQL a seguir dentro da base de dados do Moodle:

SELECT id AS moodle_instance_id
  FROM moodle_35_tcc.lti
 WHERE course = 2
# WHERE course = [course_id, no exemplo é 2]

Os outros campos poderão ser criados/alterados na interface edição da ferramenta durante sua execução. Somente o Corrdenador de AVEA e o Administrador do Sistema terão acesso a estas configurações. Estudantes e Orientadores não terão acesso às configurações da ferramenta.

chapter_definition

Esta tabela fará a definição da estrutura de capítulos do TCC.

Para cada novo curso/turma um conjunto de chapter_definition deve ser criado para definir sua estrutura de capítulos.

A vinculação entre chapter_definition e tcc_definition será feita pelo campo tcc_definition_id que deverá conter o id do novo curso/turma em um novo registro na tabela tcc_definition.

Campo Default Descrição
id auto Auto incremental
tcc_definition_id 1 Valor do id identificador do tcc_definition, 1 na base de demonstração. Para novos cursos o numero deve ser outro
title 'Introdução' Nome do capítulo, este valor será apresentado como nome do capítulo tanto nas telas quanto na impressão final do texto
coursemodule_id [null ou 3] Caseja informado um valor, ele deverá ser o de uma atividade de Texto-on-line do Moodle, para que o texto possa ser importado.
position 1 Ordem em que os capítulos serão apresentados, tanto na tela quanto na impressão
is_numbered_title [0 ou 1] Define se o capítulo receberá numeração, geralmente a introdução não recebe numeração de caítulo
verify_references [0 ou 1] Define se o capítulo avisará quando não houver referências. Geralmente alguns capítulos são fortemente indicados a possuir referências biliográficas, como exemplo um capítulo de Revisão da Literatura
created_at 2019-02-08 18:39:58 Data da criação do registro
updated_at 2019-02-08 18:39:58 Data de alteração do registro

Geração das imagens docker

Os seguintes passos devem ser seguidos para a geração das imagens do docker para a criação do ambiente da ferramenta de TCC:

Passo 1

Inicialmente deve-se entrar no diretório do repositório.

cd moodle-tcc-tool

Passo 2

Copiar dados de configuração, usando como base os arquivos de exemplo, caso eles ainda não existam:

cp config/database.yml.example config/database.yml
cp config/email.yml.example config/email.yml
cp config/sidekiq.yml.example config/sidekiq.yml
cp config/secrets.yml.example config/secrets.yml
cp config/tcc_config.yml.example config/tcc_config.yml

Passo 3

Alguns ajustes devem ser realizados nos arquivos de configuração para que os dados de demonstração possam funcionar corretamente.

  • No arquivo database.yml o valor de host deve conter o IP ou DNS (homologacao-database) onde a base de dados em MySQL com os dados de demonstração foram restaurados e estão disponíveis, assim como adequar o usuário e senha para o acesso ao servidor MySQL.

  • No arquivo tcc_config.yml o valor de moodle_url deve conter a url onde o Moodle está instalado e respondendo às requisições. Neste local/url os dados de demonstração do Moodle devem ter sido restaurados previamente para o Moodle, para que a demonstração da ferramenta de TCC possa funcionar corretamente. Posteriormente esta url deverá apontar para a versão definitiva do Moodle.

Passo 4

Entrar no diretório do docker

cd moodle-tcc-tool
cd docker

Para que a instância do ambiente de produção possa ser executada, será necessário gerar a imagem deste ambiente:

cd moodle-tcc-tool
cd docker
./stg_build_all.sh

O script docker/stg_build_all.sh fará a geração automática de todas as imagens intermediárias e final necessárias para o ambiente de produção para a ferramenta de TCC.

Executar a ferramenta de TCC

Dentro do diretório moodle-tcc-tool/docker executar o comando a seguir para executar a ferramenta de TCC.

./stg_up.sh

Execução definitiva

No camando apresentado anteriormente, assim que o computador for reiniciado, o serviço da ferramenta de TCC não será reiniciado, até que o comando seja executado novamente.

Para que o serviço seja sempre inicializado, mesmo que o computador seja reiniciado, o comando a seguir deve ser executado:

./stg_up_always.sh