Instalação em Produção¶
Em um ambiente de produção, onde 2 ou mais pontos-de-venda compartilham pelo menos um equipamento SAT, a instalação requer um servidor HTTP mais robusto do que o servidor de testes que acompanha o Flask. A maneira mais simples de prover o compartilhamento do equipamento SAT parte de um PC comum que irá atuar como um host Ubuntu Linux 14.04 server e um equipamento SAT conectado à ele.
Nota
Você deverá instalar as bibliotecas para Linux fornecidas pelo fabricante do seu equipamento SAT. Normalmente este processo significa apenas copiar os arquivos e dependências em um local específico, onde a aplicação SATHub terá permissão de leitura.
Neste exemplo, consideramos que a biblioteca e suas dependências estão
disponíveis em /opt/tanca/
, e que o host tem uma arquitetura de 64 bit,
embora isso não tenha qualquer relevância prática.
O artigo de referência para este tópico é o excelente Kickstarting Flask disponível no Blog Real Python.
Recomendamos que você faça um teste antes em uma máquina VirtualBox,
instalando uma imagem ISO do Ubuntu Linux 14.04 server, configurando a placa de
rede da máquina virtual para o modo Bridge. Durante a instalação do sistema,
defina o nome da máquina virtual como sathub1
e o usuário como sathub
.
Quando a instalação terminar, a máquina virtual será reiniciada. Faça o login
e verifique o endereço IP que foi atribuído para a interface eth0
, com o
comando ifconfig
(por exemplo 10.0.0.107
).
Os comandos a seguir deverão ser digitados no terminal da máquina virtual:
$ sudo apt-get install -y python-dev python-pip nginx gunicorn git supervisor
$ sudo mkdir /home/www && cd /home/www
$ sudo git clone https://github.com/base4sistemas/sathub.git
$ cd sathub
Agora que o projeto SATHub já está instalado, é preciso configurá-lo, indicando o caminho completo para a biblioteca SAT e, principalmente, o usuário e a senha para acesso às funções SAT através do frontend web. Você não vai querer que qualquer pessoa com acesso ao servidor SATHub seja capaz de trocar o código de ativação do equipamento, ou bloqueá-lo, por exemplo.
$ sudo vim conf.json
{
"debug": false,
"caminho_dll": "/opt/tanca/libsat64.so",
"convencao_chamada": 1,
"codigo_ativacao": "12345678",
"usuario": "sathub",
"senha": "sathub"
}
Note que a convenção de chamada 1
significa Standard C. Use 2
se a
convenção de chamada for Windows “stdcall”. Em produção debug
deverá
ser sempre false
.
Agora é preciso instalar as dependências do SATHub:
$ sudo pip install -r requirements.txt
Para configuração do Nginx (servidor HTTP), iremos iniciá-lo e depois remover suas configurações padrão, para substituirmos pela nossa configuração:
$ sudo /etc/init.d/nginx start
$ sudo rm /etc/nginx/sites-enabled/default
$ sudo touch /etc/nginx/sites-available/sathub
$ sudo ln -s /etc/nginx/sites-available/sathub /etc/nginx/sites-enabled/sathub
$ sudo vim /etc/nginx/sites-enabled/sathub
As configurações do Nginx para o SATHub são:
server {
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /static {
alias /home/www/sathub/sathub/static/;
}
}
Renicie o servidor Nginx e inicie servidor de aplicações gunicorn:
$ sudo /etc/init.d/nginx restart
$ cd /home/www/sathub
$ sudo gunicorn sathub:app -b localhost:8000
Abra um navegador na máquina hospedeira e acesse o IP da máquina virtual. Você deverá ver a página inicial do SATHub.
Faça login na página com o nome de usuário e senha que você configurou, acesse a opção Consultar SAT, e clique no botão Configurações, para que você possa conferir o status das configurações do SATHub, como na imagem abaixo:
Agora, para garantir que o servidor de aplicações seja iniciado quando a máquina
reiniciar, vamos instalar o controlador de processos Supervisor. Se o
servidor de aplicações ainda estiver executando, interrompa-o (se o comando
gunicorn
prendeu o seu terminal, termine ele com Ctrl-C
):
$ sudo pkill gunicorn
Vamos configurar o controlador de processos para iniciar a aplicação SATHub:
$ sudo vim /etc/supervidor/conf.d/sathub.conf
Digite o seguinte:
[program:sathub]
command = gunicorn sathub:app -b localhost:8000
directory = /home/www/sathub
user = root
E então reinicie e atualize o controlador de processos:
$ sudo supervisorctl reread
$ sudo supervisorctl update
$ sudo supervisorctl start sathub
Este é o procedimento mais simples para colocar o projeto SATHub em operação, garantindo o compartilhamento do equipamento SAT para mais de um ponto-de-venda.
Se você tiver algum problema ao seguir estas instruções, a web está repleta de recursos sobre o stack de software citados neste guia. De qualquer maneira temos um canal via Gitter Chat onde você pode procurar por ajuda.