Tag: python

  • Arquivos estáticos com wsgi

    Um problema que pode surgir ao publicar um site/sistema em Python/Django é a configuração dos arquivos estáticos (imagens, css, scripts, etc).

    Para resolver isso o manual do Django orienta o uso das varíaveis STATIC_URL e STATIC_ROOT no settings.py. Você pode encontrar as orientações aqui: https://docs.djangoproject.com/pt-br/3.0/howto/static-files/

    Além disso, vc vai precisar configurar o servidor web para servir os arquivos a partir dos paths indicados no settings.py: https://docs.djangoproject.com/pt-br/3.0/howto/deployment/wsgi/modwsgi/#serving-files

    Deploy em hospedagens compartilhadas

    Contudo, o cenário pode ficar um pouco mais complexo quando não temos acesso aos arquivos de configuração do servidor web, como no caso de hospedagens compartilhadas, por exemplo. Para resolver tal problema a ideia começa a orbitar o wsgi – o arquivo que configura a interfacce entre o servidor web e a aplicação Python/Django. Apesar do manual do Django informar que o framework não serve arquivos estáticos, muitos acreditam que o wsgi pode fazer isso. Para isso há dois pacotes Python que podem ser usados:

    Usando o pacote dj-static

    No nosso caso vamos usar o dj-static. Instale no seu projeto com:

    pip install dj-static

    Se vc estiver em um servidor compartilhado, talvez seja necessário instalar o pacote apenas no seu diretório /home. Para isso use a opção --user:

    pip install dj-static --user

    Feito isso é hora de configurar o seu arquivo wsgi. Veja o exemplo abaixo:

    from django.core.wsgi import get_wsgi_application
    from dj_static import Cling
    (...)
    application = Cling(get_wsgi_application())

    Para concluir basta acessar o site/sistema para verificar se os arquivos foram estáticos foram servidos. Caso contrário, verifique as variáveis STATIC_URL e STATIC_ROOT no arquivo settings.py do seu projeto.

    Você já passou por esse problema em hospedagens compartilhadas? Que solução encontrou?

    Referências

    WSGI: https://wsgi.readthedocs.io/en/latest/what.html
    PEP333 : https://www.python.org/dev/peps/pep-3333/
    WSGI no Django: https://docs.djangoproject.com/pt-br/3.0/howto/deployment/wsgi/