Subir aplicação customizada em Python
18 de setembro de 2023
Observação: É necessário ter conhecimentos em SSH, permissão de SUDO e uma aplicação do tipo Python criada no painel para realizar as etapas abaixo.
Antes de realizar os passos para subir a aplicação, recomendamos testar o funcionamento da mesma, executando na pasta raiz da aplicação o comando source activate e na pasta www rodar a aplicação: python app.py (ou arquivo principal da aplicação).
Se a aplicação funcionar corretamente no teste, é possível seguir com os próximos passo, caso contrário, é necessário revisar a aplicação até que a mesma esteja pronta para ser configurada para o funcionamento automático.
Passo 1: Criar um script para iniciar o ambiente virtual da aplicação:
No diretório raiz da aplicação (por exemplo: /srv/teste.dominio.com/
), crie um arquivo start.sh
com o seguinte conteúdo:
cd /srv/teste.dominio.com/
vim (ou nano) start.sh
Inclua o seguinte conteúdo no arquivo start.sh
:
#!/bin/bash
# Ativa o ambiente virtual
source /srv/teste.dominio.com/.virtualenv/3.7/bin/activate
# Inicia a aplicação Python
exec /srv/teste.dominio.com/.virtualenv/3.7/bin/python /srv/teste.dominio.com/www/app.py
Dê permissão de execução ao script:
sudo chmod +x start.sh
Lembre-se de substituir teste.dominio.com
pelo domínio e app.py
pelo arquivo principal da sua aplicação customizada. Se você estiver usando uma versão diferente do Python, ajuste a versão no arquivo start.sh
, substituindo 3.7 pela versão selecionada no painel.
Passo 2: Após criar a aplicação, é necessário criar um serviço para a aplicação funcionar persistentemente. Use o seguinte comando para criar um arquivo de serviço:
sudo vim (ou nano) /etc/systemd/system/teste.service
(Nome do serviço pode ser escolhido a seu critério.)
No arquivo, insira o seguinte conteúdo:
[Unit]
Description=App Customizado
After=network.target
[Service]
ExecStart=/bin/bash -c '/srv/teste.dominio.com/start.sh $PORT'
WorkingDirectory=/srv/teste.dominio.com/www
Restart=always
Environment="PORT=8050"
[Install]
WantedBy=multi-user.target
Lembre-se de substituir teste.dominio.com
pelo domínio da aplicação em questão, escolher a porta desejada para a aplicação iniciar (utilize uma porta, que não esteja em uso, para cada aplicação customizada) alterando 8050 para a porta desejada, e escolha um Nome de visualização do serviço em “Description”.
Após salvar o arquivo, execute o seguinte comando para recarregar os serviços:
sudo systemctl daemon-reload
Em seguida, inicie o serviço criado:
sudo systemctl start teste (ou o nome escolhido para o serviço)
Passo 3: Após criar e iniciar o serviço, é hora de configurar o proxy no Nginx.
Use o seguinte comando para editar o arquivo de configuração do proxy:
sudo vim (ou nano) /srv/teste.dominio.com/etc/nginx/conf.d/proxy.conf
No arquivo, insira o seguinte conteúdo:
location ~* ^/.*$ {
proxy_pass http://localhost:8050;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
Lembre-se de utilizar a mesma porta definida no serviço (teste.service
).
Após isso, reinicie o Nginx:
sudo systemctl restart nginx
Após realizar esses passos, a aplicação será servida no domínio da aplicação.
Para atualizar o conteúdo da aplicação ou reiniciá-la, basta reiniciar o serviço criado:
sudo systemctl restart teste (ou nome escolhido)
E para verificar o status do serviço:
sudo systemctl status teste (ou nome escolhido)
Lembre-se de remover o serviço (/etc/systemd/system/teste.service
ou o nome escolhido) caso a aplicação seja removida da Cloud:
sudo systemctl stop teste (ou nome escolhido)
sudo rm /etc/systemd/system/teste.service (ou nome escolhido)