Home | Escopo | Arquitetura | Configuração | Mockups | BD | Instalação | Gerência | Qualidade | Processo |
---|
Deploy da API
Para fazer o deploy da nossa aplicação fizemos uso da plataforma Amazon pela facilidade de uso e quantidade de recursos oferecidos pela empresa. Com isso precisamos possuir uma conta na Amazon Web Services para poder subir a nossa aplicação. Para criar uma conta basta acessar o endereço deste link e criar gratuitamente a sua conta AWS.
Criando conta AWS
Com a conta criada vamos para a instanciação da nossa máquina EC2, para isso siga os passos a seguir:
- Acesse a sua conta AWS
- Clique no botão "Services" no canto superior esquerdo da tela
- Na aba de "Compute" selecione a opção "EC2"
- Procure na janela que abriu o botão escrito "Launch Instance"
- Agora nós vamos configurar a nossa instancia, utilize a navegação lateral para clicar na opção "AWS Marketplace"
- Com a opção selecionada, procure por "ECS", irão aparecer algumas opções, selecione a "ECS Optimized Amazon Linux 2"
- Na próxima seção iremos escolher o tipo de instância, caso se deseje continuar no nível gratuito, escolha a opção t2.micro e clique em "Review and Launch"
- Clique em "Launch"
- Agora vamos criar (caso já não possua) um par de chave-valor para acessar a nossa instância
- Para clicar no botão "Create a new key pair" para criar uma nova e informar no campo "Key pair name" o nome da sua chave-valor.
- Após configurado faça download do arquivo chave-valor, pois será utilizado para acessar a nossa máquina.
- Para completar selecione "Launch Instance".
Configurando portas de acesso
Pronto, você acaba de criar uma instância EC2, vamos configurar a segurança para possibilitar que um cliente externo possa acessar a nossa aplicação. Vamos fazer essa configuração agora:
- Na página inicial das instâncias EC2 selecione a máquina que acabamos de criar para alterar o grupo de segurança
- Ao selecionar, apareceu uma janela embaixo com algumas informações detalhadas da máquina, procure por "Security Groups" e clique no nome ao lado que deve estar em azul
- Na parte superior da página, clique em "Actions" e, em seguida, clique em "Edit Inbound Rules". Na caixa de diálogo que se abrir, clique em "Add Rule"
- Defina o intervalo de portas da regra para 3000 e, em "Source", clique no menu suspenso e selecione "Anywhere". O restante deve ser preenchido automaticamente.
Pronto, definimos regras de acesso à máquina e precisamos configurar a nossa aplicação na máquina, para isso nós vamos precisar acessar a nossa instância:
Subindo o projeto na instância
Siga os passos a seguir de acordo com a sua plataforma
Linux
- chmod 400 <NAME_OF_KEYPAIR_FILE>
- ssh -i <NAME_OF_KEYPAIR_FILE>ec2-user@<PUBLIC_DNS>
- git clone http://tools.ages.pucrs.br/appoio/backend.git
Note que a porta de acesso do docker mapeia para a porta 3000, ou seja, a porta definida na nossa aplicação deve ser igual a porta informada no docker, neste caso
3000
Windows
- Download da ferramenta putty: Link para download 64-bit Link para download 32-bit
- Download da ferramenta puttygen: Link para download 64-bit Link para download 32-bit
- Utilize a ferramenta puttygen para transformar a nossa chave-valor de .pem para .ppk clicando no botão "Load" e seleciona o arquivo .pem
- Após carregar o arquivo clique em "Save private key" e coloque o nome que quiser
- Agora abra a ferramenta putty e informe no campo "Host Name (or IP address)" o endereço da sua instância, deve ser semelhante a "[email protected]", para dúvidas de acesso navegue até a página da sua máquina e clique no botão "Actions" e em seguida "Connect", nan aba de "SSH" terá o endereço da máquina
- Com o endereço informado, navegue, no putty, para "Connection" > "SSH" > "Auth", não clique em "GSSAPI", clique em "Auth" e no campo "Private key file for authentication" informe o arquivo gerado pelo nosso puttygen
- Com tudo configurado clique em "Open"
- git clone http://tools.ages.pucrs.br/appoio/backend.git
Pronto, o backend da nossa aplicação já está no nosso servidor da AWS, agora precisamos fazer algumas configurações para contemplar todas as funcionalidades da nossa aplicação (envio de e-mail e configuração das variáveis de ambiente)
Configurando o AWS Simple Email Service (SES)
Esta configuração é necessária para que, quando um novo tutorial seja enviado ou dados sejam exportados, seja possível enviar a informação para o e-mail do administrador, para isso nós precisamos seguir um passo a passo simples:
- Acesse a página inicial da sua conta AWS e procure pelo serviço Simple Email Service
- Ao selecionar o serviço irá aparecer uma nova tela com diversas opções no canto esquerdo, selecione a opção "Email addresses"
- Na nova janela clique no botão "Verify a New Email Address"
- No popup insira o seu e-mail que será utilizado como remetente e clique no botão "Verify This Email Address".
- Você receberá um e-mail no e-mail informado para confirmar a sua identidade, siga conforme solicitado no e-mail
- Realize o passo 1 novamente para acessar o serviço Simple Email Service
- Ao selecionar o serviço irá aparecer uma nova tela com diversas opções no canto esquerdo, selecione a opção "Sending Statistcs"
- Caso não tenha sido feita esta configuração ainda, deve haver um botão escrito "Edit your account details", clique nele
- Na janela que abrir, preencha os dados de acordo com a sua necessidade, para esta aplicação foi feita a seguinte configuração:
- Enable production access: Yes
- Mail type: Transactional
- Website URL: <endereço da instância>
- Use case description: Sending emails functionality is used to export data and notify only the owner of the application, no emails are sent to customers.
- Additional contact addresses:
- Preferred contact language: English
- Após o preenchimento do formulário aceite os termos e clique no botão "Submit for review". A equipe da Amazon irá analizar o pedido e conceder ou recusar a permissão
Pode ser necessário enviar mais formulários conforme for requisitado pela equipe da Amazon
Agora temos o serviço de e-mails da Amazon configurado, mas ainda precisamos de mais umas configurações para poder utilizá-lo
Configurando Credenciais de Acesso
Essa credencial é utilizada para que você acesse a sua conta da Amazon e utilize os serviços disponíveis nela, para isso vamos aos seguintes passos:
- Acesse a sua conta AWS
- Clique em cima do seu nome do canto superior direito, irão aparecer algumas opções
- Selecione a opção "My Security Credentials"
- Na nova janela que abriu procure por "Chaves de acesso (ID da chave de acesso e a chave de acesso secreta)", deve estar no meio da tela, clique em cima
- Caso não tenha salvo nenhuma chave de acesso clique no botão "Criar nova chave de acesso"
- Uma nova chave de acesso foi criada automaticamente, faça o download, pois não será possível recuperar o segredo da chave depois
Prontinho, agora temos tudo que precisamos para criar nosso arquivo de variáveis de ambiente
Criando o Arquivo de Variáveis de Ambiente
Este arquivo irá conter todas as variáveis de ambiente que nossa aplicação irá utilizar, nele vamos colocar as seguintes informações:
- SECRET: uma senha aleatória para criptografar as sessões do nosso aplicativo
- ADMIN_EMAIL: e-mail do administrador (o mesmo que verificamos anteriormente e que receberá os e-mails de aviso e de dados)
- ADMIN_PASSWORD: senha do e-mail do administrador
- API_URL: o endereço da nossa instância (é o campo "Public DNS (IPv4)" da nossa instância EC2)
- AWS_SES_ACCESS_KEY_ID: o campo AWSAccessKeyId da chave de acesso que fizemos o download anteriormente
- AWS_SES_SECRET_ACCESS_KEY: o campo AWSSecretKey da chave de acesso que fizemos download anteriormente
- AWS_SES_REGION: a região em que está localizada a nossa instância (ao acessar o serviço EC2 deve aparecer no canto superior direito uma cidade, no caso desta aplicação é Ohio, se clicar em cima irá aparecer uma lista com uma posição geográfica, a cidade e uma região em laranja, no nosso caso é "Leste dos EUA (Ohio) us-east-2") o que precisamos é somente o us-east-2 (no nosso caso, pode ser que a sua instância esteja em outro local, veja o nome que está em laranja no seu para garantir a região correta)
- DATABASE_NAME: o nome do nosso banco de dados que criamos
- DATABASE_USERNAME: o usuário que cadastramos no nosso banco de dados
- DATABASE_PASSWORD: a senha que cadastramos no nosso banco de dados
- DATABASE_HOST: o endereço da instância que possui o banco de dados
- DATABASE_PORT: a porta em que está executando o nosso banco de dados
- CLOUDINARY_URL: a URL do nosso serviço no Cloudnary
Todas essas informações devem ser inseridas no arquivo env.list no formato
<CHAVE>=<VALOR>
Sendo que chave irá ser substituído sem os símbolos de < e > pelos campos mencionados acima, e o valor, sem os símbolos de < e >, pelos seus respectivos valores. Um exemplo de arquivo de configuração com valores falsos pode ser encontrado na pasta de exemplos.
Se todas as etapas até agora foram realizadas, meus parabéns, você conseguiu configurar com sucesso a sua instância da AWS.
Caso já tenha uma instância configurada
Alguns comandos úteis para executar o Docker dentro da sua instância, ressalto que todos os comandos devem ser executados dentro da pasta do projeto:
Para criar a imagem do Docker que será executada utilize o comando:
- docker build . -t backend
Para executar a imagem criada utilize o comando:
- docker run -d -p 3000:3000 --env-file env.list backend
Para matar a instância do Docker criada, use o comando:
- docker kill <tag da instância>
Note: Sem os símbolos de < e >
Para verificar as instâncias executando no Docker utilize o comando:
- docker stats
Para verificar o que foi exibido no terminal da instância do Docker utilize o comando:
- docker logs <tag da instância>
Note: Sem os símbolos de < e >