Como habilitar aplicações Django na Locaweb

por em PaaS,Produtos (24) comentários

Os clientes Locaweb, dos planos compartilhados Linux, já podem instalar suas aplicações desenvolvidas nos mais modernos frameworks Python que suportam WSGI, incluindo o novíssimo Django 1.0!

O Web Server Gateway Interface (WSGI) é o novo padrão de comunicação entre o Web Server, no caso o Apache, com suas aplicações Python. Dentre suas principais características está a simplicidade e facilidade de utilização.

Por que a Locaweb não utiliza mod_python: simples, é lento. mod_python funciona no estilo CGI, ou seja, para qualquer nova requisição ele precisa recarregar a aplicação inteira e depois descarregar. Aplicações pequenas, pouco acessadas de fato faz pouca diferença. Mas tente rodar algo mais pesado e logo o tempo por requisição ficará insuportável. Já o WSGI funciona em esquema persistente: ele carrega sua aplicação apenas uma vez e as requisições seguintes rodam todas mais rápidas. 

Por que outras hospedagens utilizam mod_python: para economizar recursos. WSGI consome mais RAM da máquina, uma vez que ela deixa o processo de pé em vez de descarregar o tempo todo de memória. Isso é bom para a hospedagem e ruim para o cliente. WSGI não é tão bom para a hospedagem mas é melhor para o cliente.

Contrate já!

Para saber se sua conta suporta Python, entre nela via SSH e digite o comando:

cat /etc/redhat-release

Se for RedHat 5 você já tem Python e já pode seguir este tutorial. Caso contrário será necessário abrir um chamado para pedir migração para uma máquina mais atualizada.

Para começar não se esqueça de configurar seus domínios pelo Painel de Controle. Para este exemplo, suponha que você criou um Site Adicional ou Site Principal, chamado “exemplo.tempsite.ws” apontando para a pasta “~/public_html/djangodemo”. Lembre-se que existe um tempo de recarga da configuração no Apache e o tempo de propagação do DNS caso você tenha acabado de se registrar.

Claro, “djangodemo” é apenas um nome de exemplo, substitua pelo nome correto da sua aplicação.

Recomenda-se criar e desenvolver suas aplicações na sua máquina local e só depois de pronta transferir os arquivos à sua conta.

Via SSH, na linha de comando da sua conta, faça assim:

> user-wsgi-autostart djangodemo

Isso criará um projeto Django vazio (que você pode substituir por uma aplicação em Pylons, por exemplo) no diretório “~/wsgi_apps/djangodemo”. Coloque sua aplicação nesse diretório, seja via FTP ou SFTP. A pasta “~/public_html/djangodemo” também será criada e configurada automaticamente, sem sua intervenção.

Finalmente, ainda é preciso “dizer” ao Apache que você quer ativar a funcionalidade de WSGI. Você deve habilitar o WSGI para cada um dos domínios onde deseja instalar sua aplicação Web. Por exemplo:

> user-wsgi-activate exemplo.tempsite.ws

Lembre-se que isso exige que o Apache recarregue a configuração, isso costuma acontecer a cada 2 horas, por isso pode não ser imediato. Se quiser desativar esse suporte, faça:

> user-wsgi-deactivate exemplo.tempsite.ws

E para listar os domínios configurados com WSGI use o seguinte comando:

> user-wsgi-list

wsgi: [ exemplo.dominio.ws www.exemplo.dominio.ws wap.exemplo.dominio.ws ]

Desta maneira, você pode instalar quantas aplicações web Python quiser. Nesse caso:

  • Crie um novo projeto com user-wsgi-autostart
  • Transfira os arquivos do seu projeto no diretório correto
  • Ative seu domínio usando o comando user-wsgi-activate

Pronto! Sua aplicação está pronta para funcionar!

Observação: no exemplo acima, sua aplicação estará disponível pela URL http://exemplo.tempsite.ws. Mas digamos que você queira algo assim: http://exemplo.tempsite.ws/djangodemo. Ou seja, você quer múltiplas aplicações no mesmo domínio?

Nesse caso, pelo Gerenciador de Domínio, você apontará o domínio “exemplo.tempsite.ws” diretamente para “~/public_html”

O resto dos passos é o mesmo, mas será necessário um pequeno ajuste. Edite o arquivo “~/public_html/djangodemo/.htaccess” e modifique a linha:

RewriteRule ^(.*)$ /index.wsgi/$1 [QSA,PT,L]

Para:

RewriteRule ^(.*)$ /djangodemo/index.wsgi/$1 [QSA,PT,L]

Isso deve fazer com a aplicação passe a funcionar.