Arquitetura =========== A arquitetura do SPB consiste em 5 servidores, representados na figura a seguir. .. image:: arquitetura.png Servidores e serviços --------------------- Um proxy reverso trata requisições http e as direciona para uma segunda máquna, onde são distribuidas para os serviços solicitados. Todos os bancos de dados relevantes estão concentrados em uma única máquina e todos os emails disparados pelo sistema partem de um mesmo relay. O ambiente é composto por 5 máquinas com funções distintas: * integration * Segundo proxy reverso * Repositórios Git * Listas de email * Backend final de email * email * relay de email * social * Máquina dedicada para rede social Noosfero * database * Servidor de banco de dados PostgreSQL * reverseproxy * proxy reverso Apenas as máquinas reverseproxy e email possuem IP's externos. A primeira para receber requisições HTTP/HTTPS (portas 80 e 443) e possibilitar que usuários utilizem os repositórios git (porta 22) e a segunda para receber emails (porta 25) e enviar emails para fora de plataforma. Além disso, todas as máquinas aceitam conexões ssh originadas apenas da máquina integration, ou seja, não é possível, de acordo com as regras de firewall, realizar conexões ssh nas demais máquinas se a conexão não for originada da integration. Conexões na porta 22 da máquina reverseproxy são redirecionadas para integration. As máquinas email, social e database aceitam conexão SSH vindas da integration na porta 22 e a reverseproxy em uma porta alternativa, especificada no arquivo de configuração do ambiente, config/$SPB_ENV/config.yaml pelo valor passado a 'alt_ssh_port'. Por exemplo, para se conectar na máquina email é necessário estabelecer conexão SSH na porta 22 da reverseproxy, esta conexão será redirecionada para a máquina integration e finalmente, partindo desta, pode-se realizar a conexão com a máquina email na porta 22. Ainda como exemplo, caso seja necessária uma conexão na máquina reverseproxy, deve-se estabelecer conexão na porta 22 da mesma, esta conexão será redirecionada para a máquina integration e finalmente, partindo desta, pode-se realizar a conexão com a máquina reverse proxy na porta definida por 'alt_ssh_port' definida em config/$SPB_ENV/config.yaml. Note que, como será demonstrado neste manual, existem atalhos definidos no repositório de gestão de configuração para simplificar o acesso por SSH às máquinas. Internamente, as máquinas integration e social também rodam web servers para servirem suas aplicações. Por fim, as máquinas integration e social conectam-se em database usando a porta 5432 para acesso aos bancos de dados. Gestão de configuração ---------------------- O repositório de gestão de configuração se encontra em git@portal.softwarepublico.gov.br:softwarepublico/softwarepublico.git e pode ser obtido a partir do comando:: $ git clone git@portal.softwarepublico.gov.br:softwarepublico/softwarepublico.git Note que para tal, é necessário possuir uma conta no Portal do SPB com chaves SSH configuradas. Para mais informações sobre essas configurações, veja a :doc:`/apoio`. Este repositório contém scripts que realizam todos os passos necessários para a instalação, configuração e manutenção do ambiente. Isto é feito através de scripts em linguagem Ruby que utilizam um programa chamado Chef, para a automatização de configurações de ambientes. Mais informações em https://docs.chef.io. Os scripts mencionados são gerenciados por uma segunda ferramenta, Chake, que elimina a necessidade de um servidor Chef dedicado para gerenciar as máquinas do ambiente. O Chake conecta-se em cada uma das máquinas descritas via SSH, copiando scripts e outros arquivos, contendo as diretrizes necessárias para instalar e configurar todo o ambiente. Mais informações em https://github.com/terceiro/chake.