18
Jul

Django no Passenger

O Passenger ou mod_rails, é uma maneira de fazer deploy de aplicações Ruby/Rails de maneira simples e fácil no Apache. Nesse post não vou explicar detalhes sobre ele, mas, há esse post do Akita sobre o Passenger que é bem interessante. O Passenger suporta o padrão WSGI, e com isso é possível fazer o deploy de uma aplicação feita em Django utilizando o Passenger.



Antes de explicar sobre como fazer isso, que é algo extremamente simples e fácil. Tem um fato interessante nisso tudo. Porque uma ferramenta para deploy de aplicações Rails suportaria Django?



A resposta (segundo o Akita) é Leah Culver. Acho que se a moda pegar, veremos vários 'easy deployers' aparecendo.



Antes de voltar ao tema principal deste post, outra feliz coincidência é , no qual ele explica mais detalhadamente sobre o WSGI, que tem tudo haver com o assunto.



E agora vamos lá:



Primeiramente é necessário instalar o Passenger. Isso está bem documentado no site do próprio passenger: http://www.modrails.com/install.html por isso não vou descrever esse passo.



Para fazer o Django funcionar é necessário apenas criar um script que 'execute' o Django com o seu handler wsgi e configurar o diretório onde fica esse script, nos arquivos de configuração do Apache.



Vamos começar criando nosso arquivo que executará o WSGI. Vamos chamar ele de passenger_wsgi.py




#!/usr/bin/env python

import os, sys

sys.path.insert(0, '/home/seunome/projetos/') #diretorio onde fica seus projetos

os.environ['DJANGO_SETTINGS_MODULE'] = 'meuprojeto.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()


Feito isso vamos configurar o apache. Setando a variável DocumentRoot com o diretório onde está o seu script wsgi + 'public'. Devido a uma convenção (Rails) a pasta tem que ter esse diretório 'public'



Para exemplificar, se o seu projeto tiver o diretorio '/var/www/meuprojeto/' o DocumentRoot tem que ser '/var/www/meuprojeto/public'




<VirtualHost *>

DocumentRoot /var/www/meuprojeto/public

</VirtualHost>


Na minha conclusão, se sua hospedagem suportar o mod_wsgi use ele. Senão suportar mod_wsgi e suportar passenger, use o passenger!



Em breve falarei mais sobre o Django no passenger.



4 Comentários

  • Leandro comentou:

    Muito interessante o artigo... mais uma alternativa :)

  • Joe Rabelo comentou:

    Bom saber dessa possibilidade. Pode ser muito útil.

  • AkitaOnRails comentou:

    Hehe, eu conversei com o Ninh, da Phusion esses dias. O suporte de WSGI no Passenger, como eles já disseram, ainda é experimental, mais para mostrar que "eles podem".

    Porém, em algumas análises, depois de um certo número de requisições ele está com alguns problemas e a performance cai muito. Isso não é um anúncio oficial, só uma dica off-the-records.

    Portanto, em produção, usem mod_wsgi que é estável e maduro, mas se puderem testar o suporte a WSGI no Passenger e passar feedback pra Phusion, ajudaria eles a evoluirem esse suporte mais rapidamente. O maior problema é que eles buscaram algumas listas de python, django e tal mas ninguém se dispôs a ajudar.

  • AkitaOnRails comentou:

    Ah, esqueci de dizer! Off-the-records também, aguardem porque eu estar na Locaweb não significa que só teremos Rails :-)

    Podem aguardar aplicações Django rodando em nossas hospedagens Linux compartilhada também. Estamos trabalhando nisso!


Deixe um comentário

Nome:

Comentário: