domingo, 29 de agosto de 2010

Sua versão Django na Locaweb

Os servidores Linux da Locaweb, assim como os do Google App Engine, fornecem uma versão padrão do Django (0.96, 1.0 ..). Assim, basta configurar sua aplicação Django e pronto (http://wiki.locaweb.com.br/pt-br/Como_instalar_uma_aplicação_Django%3F). O detalhe é que o desenvolvimento do Django é muito ativo, vire e mexe tem versão nova e com MUITAS funcionalidades bacanas. Portanto, compensa sempre utilizar as versões mais novas do framework.

O problema é que nenhuma empresa (tem alguma?) consegue manter uma equipe para gerenciar milhares de versões de milhares de aplicativos de um servidor. É o que ocorre com a Locaweb e também com o Google (no caso do Google App Engine).

A melhor maneira para resolver isso é a solução proposta pelo Google App Engine, que também é aplicável nos servidores da Locaweb. Basta copiar o diretório da versão do Django que desejar na raiz do seu projeto, como se fosse um pluggable (Django = simplicidade + flexibilidade), e configurar o classpath apropriadamente. Resumindo a parte da configuração, basta utilizar o index.wsgi a seguir: 

Importante: Faça backup do index.wsgi original antes de qualquer mudança. import os, sys, site # Using Django of your project directory: # Remove the standard version of Django. for k in [k for k in sys.modules if k.startswith('django')]: del sys.modules[k] # Force sys.path to have our own directory first, in case we want to import from it. sys.path.insert(0, '/home/SEUUSUARIO/wsgi_apps/SEUPROJETO') sys.path.append('/home/ginlab/wsgi_apps/SEUPROJETO') os.environ['DJANGO_SETTINGS_MODULE']='settings' # se usa outras bibliotecas site.addsitedir('/home/SEUUSUARIO/.python/lib') import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler() Fontes: http://code.google.com/appengine/articles/django.html

2 comentários:

  1. Boa tarde..

    Cara rodar esse codigo na locaweb mas ele não identifica as apps padrão de django. Acredito que seja pelo classpath que você citou.

    Poderia dar um exemplo do codigo de classpath?

    Abraço

    ResponderExcluir
  2. Não vou conseguir verificar isso e não sei se a LocaWeb mudou alguma coisa na forma de lidar com aplicações Python, então não vou saber responder sua pergunta, mal!

    abs

    ResponderExcluir